Modber Сообщество
профессионалов по 1С

Запуск 1С под заданным пользователем как службы (service) Windows



Скачиваний: 2
Платформы: 1С:Предприятие 8.3, 1С:Предприятие 8.2, 1С:Предприятие 8.1, 1С:Предприятие 7.7, Windows
Конфигурации: Все конфигурации
2014-12-17
2490 
UPSoft
0  

Позволяет запустить любую конфигурацию 1С 8 как службу Windows.

Не так давно, передо мной встала задача, сделать так чтобы регламентные задания 1С, в файловой базе, выполнялись постоянно, но при этом никому бы не приходилось держать открытой 1Ску под пользователем регламентных заданий. 

Так как конфигурация была переписана, и некоторые (дописанные) задания требовали наличия полных прав (а переписывать всё в привилегированный модуль было долго и лень ;) ), то было решено запускать 1Ску под пользователем с полными правами, и прятать окно 1С с рабочего стола чтобы кому-либо не было доступа к интерфейсу программы.

Лучшим вариантом стал запуск 1С как службы. 
 

Исходный код написан на Delphi

Для тех, кто не сможет скомпилировать исходники сервиса, поменяв в коде логин и пароль пользователя для запуска 1С, для них есть скомпилированный файл сервиса со встроенным логином: "ServiceAdmin" и паролем: "MegaPassword" без кавычек, и с соблюдением регистра. Нужно будет только добавить этого пользователя в базу и задать ему этот пароль.

И самое главное! Если в конфигурации у пользователей есть настройка типа "Запрашивать подтверждение при закрытии программы" или любые её разновидности, которые не закрывают 1С, а выводят какие-нибудь сообщения и ждут действия пользователя перед закрытием, то для этого пользователя необходимо их ОТКЛЮЧИТЬ, иначе процесс 1С зависнет и сервис не сможет остановится ожидая закрытия 1С. Останется только срубать 1С через ctrl+alt+del.

 

Настройка сервиса производится в файле service.ini. Для удобства редактирования файла настроек, а также установки/запуска/остановки сервиса, используется ServiceSetupGUI.exe. С настройками, думаю, не возникнет проблем. Все на русском.

Есть еще один нюанс по остановке сервиса и как следствие закрытию 1С. В настройках сервиса есть галка "Останавливать 1С посылкой wm_close". Она означает, что для закрытия 1С главному окну программы будет послана winapi-комманда WM_CLOSE, что примерно аналогично нажатию крестика "Закрыть" в окне программы. И в большинстве случаев этого будет достаточно. НО, в моей конфигурации нужно было обязательно выполнить, на важно какие, действия перед закрытием 1С, а wm_close бывало приходило раньше, чем они завершались, и 1с закрывалась. Так вот, в этом случае можно убрать галку "Останавливать 1С посылкой wm_close", в этом случае сервис создаст файл "wm_close" в папке, которая будет указана в настройке "Общая с 1С папка для записи файла", и тогда в 1С для нашего пользователя в процедуре ПриНачалеРаботыСистемы можно подключить обработчик ожидания, в котором проверять, не появился ли в нашей папке файл wm_close, и если он там есть, то выполнять необходимые нам действия, после чего вызывать ЗавершитьРаботуСистемы( Ложь ); Сервис дождётся завершения 1С и остановится. Путь к этой папке в 1С у меня хранится в константе, хотя можно его и в коде прописать, если уверены что папка ни куда переедет.

На счет прав. При установке сервиса кнопкой "Установить" из ServiceSetupGUI у пользователя должны быть права администратора. Также если для остановки сервиса через создание файла wm_close  в папке нужно проследить чтобы у соответствующих пользователей были права на запись и удаление файлов в этой папке.

Сервис по умолчанию имеет Тип запуска — автоматически, т.е. при загрузке компа сервис стартанет и запустит 1С. Тип запуска можно сменить либо в Delphi, либо в свойствах службы в оснастке Windows.



Как установить отработку или отчет 1С


Скачивание доступно только зарегистрированным пользователям.
Зарегистрируйтесь или войдите под своим аккаунтом.


Бесплатная юридическая
консультация по телефону

8 (499) 350-80-26(Москва)
8 (812) 627-15-62(Спб)

звонок бесплатный

В центре внимания

Комментарии (0)