Подписки на событие в 1С

При работе с информационной базой 1С нередко возникает необходимость привязать новый алгоритм к событию, связанному с изменением объекта. В 7 версии программы для запуска обработчика приходилось переписывать исходный код программы, что приводило к проблемам при обновлении конфигурации.

Проанализировав отзывы пользователей, разработчики в восьмерке реализовали новый объект, получивший название «Подписка на событие». В этой статье мы постараемся раскрыть :

  • Настройку подписок;
  • Создание;
  • Особенности функционирования.

Создание новой подписки

Как и любой другой объект метаданных, подписка на событие в 1С добавляется из конфигуратора.

Находится эти элементы в ветке дерева «Общие» (Рис.1).  

Рис.1

Для добавления нового обработчика необходимо:

  1. Активировав левой кнопкой мыши строку «Подписки на события», нажать Insert, либо, кликнув там же правой кнопкой, добавить новый объект;
  2. В появившемся окне (Рис.2) необходимо задать Имя, которое бы максимально точно отражало назначение обработки; ис.2
  3. На этом этапе необходимо выбрать источник, то есть то место, возникновение действия в котором будет служить толчком к началу обработки (следует учитывать, что если установить в этом поле составной тип данных, то в поле «Событие» будут отображаться только события, общие для всех объектов);
  4. В зависимости от выбора источника будет составлен выпадающий список поля «Событие» (понятно, что для элемента справочника не может быть процедуры ПриПроведении, а для менеджера перечислений обработчика ПриЗаписи);
  5. Последним полем для заполнения является поле «Обработчик», где необходимо указать процедуру или функцию в общем модуле, которая будет содержать код, описывающий заданный алгоритм (при этом общий модуль (Рис.3) должен иметь признак «Серверный» ).

Рис.3

Во избежание проблем с обновлением, для собственных разработок лучше всего завести собственный общий модуль,  который будет содержать только Ваши процедуры и функции.

Особенности функционирования подписок

Одним из главных вопросов, возникающих у пользователей начинающих работать с объектом «Подписка на события», является вопрос о порядке вызова процедур. Зачастую именно здесь кроются ошибки, связанные с тем, что процедура не срабатывает или срабатывает через раз.

На примере процедуры ПриЗаписи()  для любого документа можно увидеть порядок вызова обработчиков.

Так, если в модуле объекта документ, существует эта процедура и параллельно с ней существует обработка, вызываемая из подписки и обрабатывающая то же самое событие, в первую очередь будет отработан модуль документа. Если в ходе выполнения ПриЗаписи() в модуле документа, параметр Отказ по каким-либо причинам примет значение Истина, подписка гарантировано не сработает.

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

Таким образом, последовательность обработок можно задать следующей схемой:

  1. Обрабатываются события модуля объекта;
  2. Обрабатываются подписки, связанные непосредственно с текущим типом данных;
  3. Отрабатывается код, привязанный к общему типу.

Очень важно запомнить, что ни в коем случае в процедуры, исполняемые при записи, при проведении нельзя вставлять код, меняющий данные объекта-источника, это может привести к ненужному зацикливанию. Лучше подобный код использовать в процедурах ПередЗаписью.

Обработчик события открытия формы

Возрастающая популярность управляемых форм, используемых в 8 версии программы, а так же проблемы связанные с обновлением этих объектов с сохранением собственных изменений, привели к тому, что, начиная с платформы 8.2.15, в программе появилось событие ОбработкаПолученияФормы. Именно сюда можно вставлять код, изменяющий и заменяющий типовые формы.

Некоторые особенности данного обработчика:

  • Событие не сработает в случае, если в конфигурации открываемая типовая форма прописана строго;
  • Событие может быть реализовано только для управляемых форм;
  • Общий модуль, содержащий этот обработчик должен не только иметь признак «Сервер», но и содержать установленный флажок в поле «Вызов сервера».

Важно учитывать, что эта подписка вызывается не для конкретного объекта, а для его менеджера, то есть поле источник должно содержать это слово (Рис.4)

Рис.4

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



Контрольные соотношения для расчета по страховым взносам
Контрольные соотношения для расчета по страховым взносам. Письмо ФНС России от 13.12.2017 № ГД-4-11/25417@ ...
Версионирование правил обмена в Git
Статья рассказывает о принципах работы скриптов, позволяющих применять систему контроля версий git и подход gitflow для версионирования правил обмена ...
Должностная инструкция специалиста по 1С
Описание функциональных обязанностей для трёх категорий специалистов 1С: Администратор платформы, Программист, Администратор конфигурации (Методист) ...
Новый релиз Общепит, редакция 2.0
Текущая версия конфигурации "1С:Предприятие 8. Общепит" предназначена для использования с версией системы 1С:Предприятие не ниже 8.3.8.1747 При работе с операционной ...
Реализована возможность отправки отчетности по кредиту из «1С» в Сбербанк
Фирма «1С» совместно со Сбербанком реализовала в программе «1С:Бухгалтерия 3.0» возможность онлайн-отправки финансовой отчетности для заемщиков Сбербанка ...
Продукт «1С:Комбинат ЖБИ» снимается с продаж
Фирма «1С» напоминает, что с 30 апреля 2018 года прекращается продажа отраслевых и специализированных решений, разработанных на базе «1С:УПП» ...
Борис Нуралиев оценил конкурентоспособность отечественных ИТ-специалистов
Борис Нуралиев, генеральный директор компании «1С», принял активное участие в программе первого отраслевого чемпионата в области информационных технологий DigitalSkills ...
Avast открыла разработчикам исходный код декомпилятора RetDec
Компания Avast, специализирующаяся на разработке защитного ПО, открыла доступ к декомпилятору RetDec, позволяющему изучать исходный код и отслеживать действия приложений ...
В России выпустили ОС для отечественных процессоров
Компания «Базальт СПО» разработала линейку операционных систем ОС АЛЬТ, которая поддерживает все российские процессоры «Эльбрус» ...
Тест 1С:Зарплата и управление персоналом 8 (Ред. 3.1)  - 10 вопросов от 15.12.2017
Проверь свои профессиональные навыки по программе "1С:Зарплата и управление персоналом 8 (Ред. 3.1)". Пройди тест! Всего 10 вопросов:Если флажок Используются ...
Тест 1С:Управление производственным предприятием 8  - 7 вопросов от 15.12.2017
Проверь свои профессиональные навыки по программе "1С:Управление производственным предприятием 8". Пройди тест! Всего 7 вопросов:Какие из перечисленных причин могут привести ...
Тест 1С:Бухгалтерия 8.3  - 5 вопросов от 15.12.2017
Проверь свои профессиональные навыки по программе "1С:Бухгалтерия 8.3". Пройди тест! Всего 5 вопросов:В программе 1С:Бухгалтерия 8 документ Поступление доп. расходов ...
Тест Платформа 1С:Предприятия 8  - 7 вопросов от 15.12.2017
Проверь свои профессиональные навыки по программе "Платформа 1С:Предприятия 8". Пройди тест! Всего 7 вопросов:При объединении с приоритетом основной конфигурации значение ...