Подписки на событие в 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

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



Росстандарт опубликовал ГОСТ для интернет-магазинов
Федеральное агентство по техническому регулированию опубликовало «Руководство по добросовестной продаже товаров через интернет» ...
Google представит облачный сервис для квантовых вычислений
ИТ-гигант собирается открыть онлайн-доступ к своим квантовым машинам для исследователей проблем искусственного интеллекта. Этим ходом компания хочет «подстегнуть» разработку новых ...
«1С:Лекторий» обновил свое расписание на сентябрь
В расписание «1С:Лектория» добавились мероприятия, которые пройдут в сентябре и начале октября 2017 года ...
Искусственный интеллект от Microsoft научился распознавать эмоции в тексте
Инструмент компании Microsoft Text Analytics API может проанализировать эмоциональную окраску повествования от очень негативной до очень позитивной по шкале от ...
Свертка ЗУП, ЗБУ
В жизни любой организации рано или поздно обязательно наступает момент, когда свертка информационной базы становится просто необходимой. И причин для ...
Автоматическое отключение неактивных веб клиентов
У вас организован доступ в базу через веб-клиент для посторонних лиц (веб-портал, веб-витрина, и т.д.), и вы испытываете проблему нехватки ...
Настройка веб сервера Apache + 1С (Пошаговое руководство)
Пошаговое руководство настройки Web сервера Apache на Windows. Не секрет, что файловые базы через веб-сервер будут работать намного шустрее, чем ...
После обновления на Розницы 2.2.6.22 в центр.узле перестала проходить регистрация объектов
Вопрос: После обновления на Розницы 2.2.6.22 в центр.узле перестала проходить регистрация объектов к обмену (в частности, Установка цен номенклатуры). Перенастройка ...
Начисление возмещения расходов на приобретение медикаментов сотруднику
Организация может возмещать работникам, их супругам, родителям и детям (в том числе усыновленным), подопечным (в возрасте до 18 лет), бывшим ...
Правка ресурсной спецификации по которой запущенно производство
Вопрос: ERP 2.2.3.231, используется управление производством версии 2.2 Мне программа грозит тяжкими последствиями, если я залезу в ресурсную спецификацию, разблокирую, ...
Переход доли в уставном капитале обществу (позиция ООО)
Если доля в уставном капитале общества оплачена не полностью, то с момента истечения срока оплаты доли неоплаченная часть переходит к ...
Не переносятся начальные остатки из УТ в БП
Вопрос: Конфигурация: Управление торговлей, редакция 11.2 (11.2.2.94) . В фирме 10000 позиций вбито в документ начальных остатков (собственные товары), но ...
Расчет по страховым взносам - корректировка
Вопрос: Возникла необходимость сдать уточненный вариант Расчета по страховым взносам (сотруднику при увольнении начислили с минусом компенсацию отпуска, что повлекло ...
Новый релиз Бухгалтерия предприятия, редакция 3.0
Текущая версия конфигурации "Бухгалтерия предприятия" предназначена для использования с версией системы 1С:Предприятие 8.3 не ниже 8.3.10.2466. Обновление предназначено для следующих ...