Обрабатываем события при запуске и завершении работы приложения в 1С

При написании программ нередко возникает необходимость выполнить какие-либо действия при запуске или завершении работы программы. С «обычными» программами в этом случае всё просто. Необходимо обработать соответствующие события или поместить необходимый код перед загрузкой главного окна или отображением консольного «интерфейса».

Но, что делать в случае с 1С? Если в 1С Предприятие подобный функционал?

В 1С есть возможность выполнения кода при запуске и остановке приложения. Она реализована в виде специальных событий обработка которых доступна в модуле управляемого приложения.

  • ПередНачаломРаботыСистемы
    1С Предприятие запускается, но рабочее окно конфигурации, ещё не появилось на экране;
  • ПриНачалеРаботыСистемы
    Приложение уже запущено;
  • ПередЗавершениемРаботыСистемы
    Событие возникает перед началом процесса завершения работы приложения. Рабочее окно ещё отображается на экране;
  • ПриЗавершенииРаботыСистемы
    Рабочее окно уже закрылось и выполняются заключительные действия перед полным завершением работы.

Если в режиме конфигуратора щёлкнуть правой кнопкой мыши на корне конфигурации и выбрать в открывшемся меню пункт «Открыть модуль управляемого приложения», откроется стандартное окно для редактирования кода, в котором содержится код вышеназванного модуля.

Для обработки требуемых событий в модуле управляемого приложения нужно описать соответствующие процедуры, как это показано в примере ниже:

Обратите внимание!

Имена процедур должны строго соответствовать названиям тех событий, которые они обрабатывают.

Процедура ПередЗавершениемРаботыСистемы принимает единственный параметр – «Отказ» (булево, значение по умолчанию «ложь»). Этот параметр определяет отмену завершения работы конфигурации. То есть, если перед завершением работы выполняются некоторые проверки и их результаты неудовлетворительны, можно отменить завершение работы просто присвоив параметру «Отказ» значение «истина».

Параметр «Отказ» в процедуре ПередНачаломРаботыСистемы, имеет аналогичное назначение. Если ему присвоить значение «истина», приложение просто не запустится.

Таким образом можно не только выполнять нужные действия, но и управлять самим процессом запуска и завершения работы.

Ограничения

  • Весь код размещённый в модуле управляемого приложения работает только на стороне клиента. Поэтому, если при обработке вышеперечисленных событий необходимо обратиться к серверу, то для этих целей следует создать отдельный общий модуль и установить в его настройках работу на стороне сервера и доступность для вызова сервера на стороне клиента (то есть в свойствах установить флажки «Сервер» и «Вызов сервера»).
  • Также не рекомендуется при запуске и завершении приложения выполнять громоздкие операции. И дело здесь не только в увеличении времени обработки событий вследствие больших объёмов данных или сложности алгоритмов. Модуль управляемого приложения компилируется при запуске программы. Поэтому, чем больше он загружен функционалом, тем дольше приложение будет запускаться.
    Подобные операции лучше выполнять по запросу во время работы или в регламентных заданиях.

Один комментарий

  1. Вот только в процедуре «ПриЗавершенииРаботыСистемы()»
    практически ничего невозможно сделать, т.к. серверные вызовы в ней запрещены.
    А «на клиенте» ничего нужного не получится.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *