11.06.2015 08:33
Доброго времени суток.
некоторые из вас возможно сталкивались с необходимостью запустить 1ску под конкретным пользователем в конкретное время.
Например программист 1с, сделал какую то функцию или обработку, которая запускается например в 5 утра - (обработка например просматривает все накладные, и если есть не закрытые или не оплаченные, оповещает менеджера когда тот приходит на работу - всплывающим окном)
Но на самом деле задачи там могут быть разные
Основное условие что они должны выполняться под конкретным пользователем (ну у меня так)

Просто создать задачу в планировщике задач - запустить клиент 1с, в определенное время, ничего не даст по большому счету, так как нужно не просто запустить клиент 1с, но еще и залогиниться под конкретным пользователем.

Возможно существуют другие варианты решения.
Мой вариант решения таков.
Создается Batник.
(что бы создать батник, достаточно открыть любой текстовый документ, вписать туда строки кода, нажать меню сохранить как -> в поле тип файла выбрать Все файлы, а в поле имя файла написать в конце .bat например = primer.bat)
Далее батник можно редактировать в простом блокноте - нажав правой кнопкой мыши - открыть с помощью блокнота

Вернемся к запуску 1с, под конкретным пользователем.
И так в наш primer.bat мы вписываем следующий
код:

"C:\Program Files (x86)\1cv82\8.2.19.83\bin\1cv8.exe" ENTERPRISE /F "Путь к базе" /N Логин /P Пароль

rem "C:\Program Files (x86)\1cv82\8.2.19.76\bin\1cv8.exe" ENTERPRISE /D"Путь к базе" /N Логин /P Пароль


Дополнения:

Открытие 1С:Предприятия для файлового варианта:
"C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F"Адрес" /N"Логин" /P"Пароль"

Если на одном сервере стоит 8.1 и 8.2, то при подключении к базам 8.2 нужно указывать порт сервера (например 1234):
"C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /S"server-1C:1234\База" /N"Админ" /P"12345"

Открытие 1С:Предприятия для клиент-серверного варианта:
"C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /S"server-1C\База" /N"Админ" /P"12345"

Запустить 1С под собой на машине пользователя, если стоит аутентификация Windows
C:\Program Files\1cv81\bin\1cv8.exe" /WA-
В данном случае 1С при входе обязательно потребует ввести пароль.

Создание файла шаблонов конфигураций
DESIGNER /F"D:\V8\Cfgs81\ИБ81" /CreateTemplateListFile "templates.lst" -TemplatesSourcePath "D:\V8\Cfgs81\tmpIts"

Примеры работы с хранилищем:
для конфигурации, не присоединенной к текущему хранилищу
DESIGNER /F"D:\V8\Cfgs82\ИБ82" /ConfigurationRepositoryF "D:\V8\Cfgs82" /ConfigurationRepositoryN "Администратор" /ConfigurationRepositoryReport "D:\ByObject.mxl" -NBegin 1 -NEnd 2 –GroupByObject
для присоединенной к хранилищу конфигурации, информация для отчетов берется из текущего хранилища
DESIGNER /F"D:\V8\Cfgs82\ИБ82" /ConfigurationRepositoryReport "D:\ByComment.mxl" -NBegin 1 -NEnd 2 -GroupByComment

Создать базу и прописать её в списке баз у пользователя:
Создаст базу с конфигураций из файла 1Cv8.cf в созданной папке «test3» на диске E и добавит путь к базе в список баз под именем «TEST33».
"C:\Program Files\1cv82\common\1cestart.exe" CREATEINFOBASE File=e:\test3; /AddInListTEST33 /UseTemplate "C:\Documents and Settings\User\My Documents\tmplts\TestVendor\TestConfig\1Cv8.cf"

С 8.2.12 программа установки выполняет регистрацию COM-соединения "для компьютера". Имеется возможность выполнить регистрацию "для пользователя" с помощью командной строки
regsvr32 /n /i:user comcntr.dll

Автоматическая загрузка валют
Создаем пользователя под конкретное действие, устанавливаем в правах настройки пользователя соответствующие значения, например, галочку «Автозагрузка курсов валют при начале работы программы» для Бухгалтерии или «Загружать актуальные курсы валют при запуске системы» для УПП.

"C:\Program Files\1cv81\bin\1cv8.exe" enterprise /SServer-1C\1C-Work /NAdmin /P12345 /Out"C:\Logi1C\log.txt" -NoTruncate /DisableStartupMessages
11.06.2015 08:34
Забыл дописать, что батник нужно добавить в планировщик задач, и указать запуск в нужное вам время (но лучше за 5-10 минут, до того времени на которое назначена обработка в 1с)
11.06.2015 08:48
Я от 1С достаточно далек, может, ерунду спрошу, но 1С после выполнения действий выйдет? В противном случае, если комп просто включен, а пользователь не залогинен в ОС, то он не увидит окошка 1С, зато она будет поедать ресурсы? Если так, то надо предусмотреть выход или taskkill какой-нибудь...
11.06.2015 09:00
В запускаемой в самой 1С обработке можно предусмотреть выход из 1С.
Ну и можно сервер 1С настроить на прибивание периодическое всех, или не всех...
11.06.2015 09:01
Нет тут немного не так.
Я может не правильно обьяснил.
Так. есть пользователь например Админ, для которого программист 1с написал обработку. Под этим пользователем никто не работает, это системный профиль, предназначенный только для запуска внутренней обработки 1с.
Смысл обработки- есть заказы, много заказов. есть менеджер , который сидит за своим компьютером (не на сервере 1с)
Обработка собирает например все заказы поступившие менеджеру. К примеру прошло 3 дня, менеджер с заявкой ничего не сделал, ни закрыл ее ни продолжил (ну мол клиент еще думает).
При каждом запуске 1ски менеджеру открывается окно с напоминанием о не закрытых ним документах.

Но если нужно сделать что бы все же 1ска на сервере - которая залогинилась под админом, все же прекратила работу
можно создать еще один батник, поместить его в тот же планировщик задач, скажем спустя 1 час после запуска (ну что бы на верняка хватило времени)
с таким вот содержимым
bat:
taskkill /IM 1cv8.exe /FI "USERNAME eq ИмяПользователя"


как то так вроде бы
11.06.2015 09:02
Хотя что бы не заморачиваться 1ска то в 5 утра все делает.
Все менеджеры спят
поэтому для профилактики можно запускать этот батник 6 утра
Код:
tskill *1cv8* /a /v


как раз выкинет всех кто забыл разлогиниться и так далее
11.06.2015 09:28
я еще на 7-ке делал примерно так. Был создан служебный пользователь для переиндексации большой бызы (переиндексация занимала минут 40). запускался батник, который прибивал индексы, архивировал базу и запускал 1С под служебным пользователем. переиндексация проходила, 1С запускалась, а в глобальном модуле в процедуре ПриНачалеРаботыСистемы() стояла проверка Если Пользователь=Служебный тогда ЗавершитьРаботуСистемы()
11.06.2015 09:43
Если честно, я не очень понял, зачем использовать taskkill (в данном случае).
Если нужно, что бы обработка что-то сделала и завершила свою работу (сеанс) в 1с - используем 1с

Код:
Глобальный контекст (Global context)
ЗавершитьРаботуСистемы (Exit)

Синтаксис:
ЗавершитьРаботуСистемы(<ЗапрашиватьВозможность>, <ПерезапуститьПриЗавершении>, <ДополнительныеПараметрыКоманднойСтроки>) 

Параметры:

<ЗапрашиватьВозможность> (необязательный)
Тип: Булево. 
Если Ложь, то завершение работы программы будет выполнено безусловно (независимо от наличия редактируемых данных).
Если значение параметра Истина, то будут вызываться обработчики закрытия для каждой открытой формы и для всего приложения. Для редакторов текстов, табличных документов и HTML-документов будет произведен анализ модифицированности. Если нет факторов, препятствующих закрытию (например, данные модифицированы и не сохранены), то выполняется завершение работы. В противном случае (такие данные есть) будет выдан вопрос о необходимости сохранения документов.
Значение по умолчанию: Истина. 

<ПерезапуститьПриЗавершении> (необязательный)
Тип: Булево. 
Указывает необходимость выполнения запуска нового сеанса с текущими установками после завершения работы.
Значение по умолчанию: Ложь. 

<ДополнительныеПараметрыКоманднойСтроки> (необязательный)
Тип: Строка. 
Содержит дополнительные параметры, которые будут переданы новому сеансу. Если такие параметры уже есть среди текущих установок, переданные заменят текущие.
Параметр указывается, если значение параметра <ПерезапуститьПриЗавершении>=Истина.
Если режим приложения (УправляемоеПриложение/ ОбычноеПриложение) не задан явно дополнительным параметром командной строки, при запуске текущего приложения учитывается использование параметров принудительного включения режима управляемого или обычного приложения /RunModeManagedApplication и /RunModeOrdinaryApplication. 

Описание:
Позволяет принудительно вызвать завершение работы 1С:Предприятия. В зависимости от переданного параметра будут вызываться обработчики закрытия и завершения работы системы или завершает работу безусловно.

Доступность: 
Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент). 

Примечание:
Если вызов осуществляется из модуля формы, открытой в модальном режиме, завершение работы системы не выполняется.
Если параметр <ПерезапуститьПриЗавершении>=Истина, то после завершения работы системы будет открыт новый сеанс 1С:Предприятия. 
Если в процессе завершения системы пользователь отменит завершение работы, запуск нового сеанса выполнен не будет. 

Пример:
// безусловное завершение работы программы
ЗавершитьРаботуСистемы(Ложь);
Если не нужно, что бы обработка завершала работу с 1с - то опять же - taskkill не нужен.
11.06.2015 10:08
В моем случае не нужно завершения работы клиента 1с
я просто описал вариант если вдруг нужно
а в1с не все умеют писать то что нужно
для таких как я - проще батник чем лес дремучий
11.06.2015 10:14
Цитата:
aldemko В моем случае не нужно завершения работы клиента 1с
я просто описал вариант если вдруг нужно
а в1с не все умеют писать то что нужно
для таких как я - проще батник чем лес дремучий
А то, что при taskkill при большом желании можно и базу данных порушить вас не сильно волнует? Если останется незавершенная транзакция в момент, когда вы запускаете свой батничек на убийство сессии.
Часовой пояс GMT +3, время: 06:24.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.