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

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



Установка конфигурации 1С 8.3
Где скачать бесплатную версию типовой конфигурации 1С. Распаковка шаблонов конфигураций и создание новой базы. Отличия демо базы от пустой ...
Форма статистического наблюдения № П-2 (инвест) за 2017 год
Утверждена годовая форма статистического наблюдения № П-2 (инвест) "Сведения об инвестиционной деятельности и средствах на долевое строительство" для отчета за ...
Форма статистического наблюдения № П-2 для 2018 года
Утверждена квартальная форма статистического наблюдения № П-2 "Сведения об инвестициях в нефинансовые активы" для применения в 2018 году. Приказ Росстата ...
Подсистема Вики - интеграция 1С и сайта под управлением MediaWiki
Редактирование статей сайта Mediawiki из 1С. Формирование функционального описания конфигурации на сайте Вики ...
Выйти на рынок ЕС с программой 1С – не просто, а очень просто
Статья предназначена для компаний-разработчиков из России или из стран СНГ. В статье рассматривается вариант эффективного выхода на рынок Европы со ...
1С "Весовая ред. 2.0". Конфигурация "Весовая" ред. 2.0  для Платформы 8.3
Конфигурация "Весовая" ред. 2.0 для "1С:Предприятие 8.3" - это решение для организации контроля движения грузов через весовую и остатков на ...
Форма статистического наблюдения № С-1 для 2018 года
Утверждена месячная форма статистического наблюдения № С-1 "Сведения о вводе в эксплуатацию зданий и сооружений" для отчетности 2018 года. Приказ ...
Форма статистического наблюдения № ИЖС для 2018 года
Утверждена форма статистического наблюдения № ИЖС "Сведения о построенных населением жилых домах" для применения в 2018 году. Приказ Росстата от ...
Изменение способа списания МПЗ в БП 3.0
Вопрос: Как изменить способ списания МПЗ с ФИФО на средню? В учетной политике настройка не доступна. Ответ: Возможно, настройка не ...
Как провести вводный инструктаж по охране труда
Вводный инструктаж входит в первый этап обучения работника охране труда – он проводится до того, как работник приступит к выполнению ...
Оперативное планирование продаж по договорам в ERP
Вопрос: ERP 2.4.1.189 В документации в главе 12 (Бюджетирование) несколько раз упоминается о получении данных из Планирования (План продаж) в ...
Тест 1С:Зарплата и управление персоналом 8 (Ред. 3.1)  - 5 вопросов от 21.9.2017
Проверь свои профессиональные навыки по программе "1С:Зарплата и управление персоналом 8 (Ред. 3.1)". Пройди тест! Всего 5 вопросов:Документ Работа в ...
Тест 1С:ERP Управление предприятием (Ред. 2.2)  - 7 вопросов от 21.9.2017
Проверь свои профессиональные навыки по программе "1С:ERP Управление предприятием (Ред. 2.2)". Пройди тест! Всего 7 вопросов:Возможность автоматического формирования потребностей в ...
Тест 1С:Бухгалтерия 8.3  - 10 вопросов от 21.9.2017
Проверь свои профессиональные навыки по программе "1С:Бухгалтерия 8.3". Пройди тест! Всего 10 вопросов:Команда Поиск панели инструментов выполняет...В программе 1С:Бухгалтерия 8 ...
Тест Платформа 1С:Предприятия 8  - 7 вопросов от 21.9.2017
Проверь свои профессиональные навыки по программе "Платформа 1С:Предприятия 8". Пройди тест! Всего 7 вопросов:Для получения почты напрямую с почтового сервера ...