1с подписки на события что это
Механизм подписок на событие предназначен для назначения обработчика события для одного или нескольких объектов конфигурации платформы «1С:Предприятие». В статье рассматриваются несколько примеров применения данного механизма. Изучив статью, вы узнаете:
Применимость
В статье рассматривается платформа «1С:Предприятие» редакции 8.3. Представленная информация актуальна для текущих релизов платформы.
Подписки на события
В статье рассматриваются несколько примеров применения одного из вспомогательных объектов платформы «1С:Предприятие 8» – подписок на события.
Подписки на события позволяют размещать в общих модулях внешние обработчики, которые будут исполняться после выполнения определенного обработчика события в модуле объекта или модуле менеджера.
При этом не потребуется вносить изменения в модуль объекта или модуль менеджера. Таким образом, возникает возможность программного расширения модулей без их модификации – это очень полезный прием при изменении типовых решений.
Подписки на события описываются в ветке Общие окна объектов конфигурации (Рис.1).
- Выполняется обработчик события ПередЗаписью() в модуле объекта документа.
- Если в ходе выполнения обработчика параметр Отказ принимает значение Истина или вызывается исключение, то обработка события прерывается.
- Если на втором шаге обработка события не прерывалась, то выполняются внешние обработчики (подписки на события), определенные для события ПередЗаписью().
- Если в ходе выполнения внешнего обработчика параметр Отказ принимает значение Истина или вызывается исключение, то выполнение внешнего обработчика прерывается.
С помощью подписок на события можно организовать выполнение различных проверок, выполняющихся при записи объектов в базу данных.
Задача 1
Выполнить проверку дублирования наименования при записи элемента справочника “Контрагенты” – без модификации модулей самого справочника.
Флаг Клиент (обычное приложение) доступен, если в параметрах конфигуратора установлен режим редактирования Управляемое приложение и обычное приложение.
В ветке Общие окна объектов конфигурации создать новую подписку на событие. В палитре свойств ввести имя подписки ПроверкаНаименованияСправочника. В поле выбора Источник отметить тип данных СправочникОбъект.Контрагенты. В поле выбора Событие выбрать событие ПередЗаписью(). После отработки этого события будет срабатывать процедура обработки подписки на событие (Рис. 2).
Листинг процедуры ПроверкаНаименованияСправочникаПередЗаписью()
На практике может встретиться задача выполнения движений по дополнительным регистрам при проведении документов в типовых конфигурациях. Создание дополнительных регистров позволяет избежать модификации существующих регистров и при этом получить возможность дополнительной обработки данных при проведении типовых документов.
Задача 2
Создать оборотный регистр накопления “Выбытия денежных средств” и обеспечить формирование движений по этому регистру при проведении документа “Расходный кассовый ордер”, используя механизм подписок на события.
Создать новый оборотный регистр с именем ВыбытияДенежныхСредств. Выбрать регистратор “Расходный кассовый ордер”. Добавить измерения регистра:
Касса, тип: СправочникСсылка.Кассы;
Статья, тип: СправочникСсылка.СтатьиДвиженияДенежныхСредств.
Создать ресурс регистра:
В документе “Расходный кассовый ордер” создать реквизит СтатьяДвижения с типом данных СправочникСсылка.СтатьиДвиженияДенежныхСредств.
Создать новую подписку на событие:
Имя – ДвиженияПоВыбытиюДенежныхСредств;
Источник – ДокументОбъект.РКО;
Событие – ОбработкаПроведения.
В общем модуле ОбработчикиПодписокНаСобытия создать обработчик ДвиженияПоВыбытиюДенежныхСредствОбработкаПроведения(). В обработчике осуществляется обход табличной части документа “Расходный кассовый ордер” и формируются движения в регистре накопления ВыбытияДенежныхСредств.
Листинг процедуры ДвиженияПоВыбытиюДенежныхСредствОбработкаПроведения()
В типовых конфигурациях может возникнуть необходимость доработки основной формы некоторого объекта, например документа. Эту задачу можно решить с помощью подписок на события. При этом создается копия основной формы документа. В новую форму вносятся необходимые изменения. С помощью механизма подписок на события обеспечивается открытие новой формы вместо основной формы. При этом основная форма, находящаяся на поддержке, остается без изменения.
Задача 3
Обеспечить подмену основной формы документа “Расходный кассовый ордер”.
Создать новую форму документа “Расходный кассовый ордер” с именем ФормаДокументаКлиентская. Внести в форму произвольные изменения, например, поменять порядок элементов управления. Для вызова этой формы необходимо использовать подписку на событие ОбработкаПолученияФормы() в модуле менеджера документа “Расходный кассовый ордер”.
Создать новую подписку на событие:
Имя – ОсновнаяФормаРКО;
Источник – ДокументМенеджер.РКО;
Событие – ОбработкаПолученияФормы.
В общем модуле ОбработчикиПодписокНаСобытия создать обработчик ОсновнаяФормаРКООбработкаПолученияФормы(). В обработчик в качестве параметра ВыбраннаяФорма передается имя открываемой формы.
Параметр СтандартнаяОбработка устанавливается в значении Ложь для отключения открытия основной формы.
Листинг процедуры ОсновнаяФормаРКООбработкаПолученияФормы()
Таким образом, подписки на события предоставляют возможность добавления нового функционала, не изменяя существующие модули объектов. К недостаткам подписок на события можно отнести:
- Увеличение сложности алгоритмов.
- Подписаться можно только на события объектов и менеджеров объектов.
Если необходимо модифицировать какое-либо событие формы, то механизм подписок на события не доступен. В этом случае, необходимо вносить изменения в саму форму или копировать форму и вносить изменения в новый объект.
Рассмотрим этот объект метаданных подробнее.
События на которые можно назначить обработчик подписки на событие
- ПриУстановкеНовогоНомера
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаПроведения
- ОбработкаУдаленияПроведения
- ОбработкаПроверкиЗаполнения
Подписку на событие можно установить только на объект, а не на форму.
Очередность вызова обработчиков в 1С 8
Использование подписок на событие в 1С
Использовать подписки очень удобно, например, для регистрации изменений для плана обмена. Или какое-то другое действие, которое одинаковое для различных объектов конфигурации.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Я часто использую подписки на событие для того, чтобы не менять обработчики типовых документов. Это очень удобно, например, мы в подписке можем корректировать движения документа или добавлять движения по новым регистрам, не меняя при этом конфигурацию.
Настройка подписки на событие
Настроить подписку очень просто:
- Источник — типы данных, для которых устанавливается обработчик;
- Событие — событие, для которого установлен обработчик;
- Обработчик — указывается процедура из общего модуля, в которой будет расположен обработчик события.
Другие статьи по 1С:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Реализовано в EDT версии 1.7.0.567.
В 1C:Enterprise Development Tools (EDT) мы реализовали прототип нового инструмента. Рабочее название этого инструмента – редактор Все подписки на события. Он поможет вам удобно анализировать подписки на все события, которые существуют в прикладном решении.
Подписки на события
Все подписки на события
Чтобы избавиться от неудобств, перечисленных выше, мы реализовали универсальный способ представления подписок, событий, объектов конфигурации и процедур, в которых реализуются алгоритмы подписок.
В результате вы можете вызвать редактор Все подписки на события для всей конфигурации, или только для одного объекта – разница будет лишь в составе данных, отфильтрованных некоторым образом.
Находясь в редакторе, вы можете анализировать не только отдельные подписки, но и все подписки, относящиеся к одному событию. Если выделить событие, то редактор покажет все модули и все процедуры, подписанные на обработку этого события.
Вызов редактора с помощью контекстной команды (на объекте конфигурации) позволяет вам сразу уменьшить количество подписок, отображаемых в редакторе. Например, вы можете посмотреть подписки только на те события, которые обрабатываются в модуле объекта или в модуле менеджера.
Кроме этого редактор содержит универсальный фильтр, с помощью которого вы можете произвольным образом настраивать состав объектов, событий и процедур.
Обратите внимание, что с помощью этого фильтра вы можете выбирать не только конкретные объекты, являющиеся источником событий, но и наборы типов, такие как СправочникОбъект, ДокументОбъект и другие. Такие наборы типов включают в себя все справочники или все документы, которые есть в конфигурации.
С помощью поиска по строке вы можете быстро найти только те подписки, которые относятся к интересующему вас механизму.
В любой момент вы можете быстро отфильтровать содержимое по тому событию или источнику, который показан в редакторе. Например, вы нашли подписку ПроверитьФормулуРасчета. Её источником является план видов расчета Удержания.
С помощью контекстной команды на плане видов расчета вы можете быстро увидеть только те подписки, которые связаны с его событиями.
Автоматическое добавление точек останова
Одним из распространённых способов анализа подписок на события является последовательный просмотр всех вызываемых процедур в отладчике в порядке их выполнения. Для этого редактор предоставляет удобный инструмент автоматического добавления точек останова в обработчики.
Прежде всего, вы можете вызвать этот инструмент прямо в редакторе.
Вы можете найти и выбрать интересующий вас объект, выбрать одно из его событий, и отметить, например, все обработчики. После нажатия ОК точки останова будут добавлены на первую исполняемую строку каждого отмеченного обработчика, и все эти точки появятся в панели Точки прерывания в перспективе Отладка.
Другой способ добавить точки останова удобен тогда, когда вы уже нашли в редакторе интересующий вас объект или событие. В этом случае из контекстного меню вы можете вызвать подходящую вам команду.
И, наконец, третий способ, которым вы можете воспользоваться, это автоматическое добавление точек останова уже в процессе отладки. В этом случае вам не нужно открывать редактор, потому что команда добавления находится прямо в панели Точки прерывания.
Таким образом, редактор Все подписки на события является универсальным инструментом, позволяющим использовать самые разные сценарии анализа. Он будет полезен не только разработчикам, которые хорошо знают прикладное решение, но и специалистам по внедрению или IT-специалистам, которым требуется разобраться с незнакомой функциональностью.
Большинство клиентов 1С используют типовые конфигурации, в которые, тем не менее, вносят изменения для комфортной работы и соответствия имеющимся бизнес-процессам. Администраторы знают – чем больше таких изменений внесено, тем сложнее и дольше производить обновления, которые выпускаются к тому же довольно часто. Поэтому разработчики в свою очередь стремятся к минимизации изменений типовой конфигурации. Для разрешения этой дилеммы был разработан механизм подписок на события в 1С 8.3. Подписки позволяют проделать нужные операции, не затрагивая стандартные процедуры и функции конфигурации 1С.
Создаем подписку в 1С
Тип источников напрямую влияет на предлагаемые системой события. Выбирая одно из них, помните, что сначала отрабатывают стандартные процедуры, а потом настает очередь подписок в конфигурации. После события приходит очередь определиться с тем, в каком общем модуле будет записана наша процедура. В свойстве «Обработчик» необходимо указать один из присутствующих в конфигурации модулей с установленным свойством «Серверный».
После выбора модуля и перехода в него, остается лишь описать действия процедуры, и на этом создание подписки в конфигурации будет закончено. Далее можно обновлять конфигурацию 1C и проверять результат работы описанной на встроенном языке процедуры. Разработчики с помощью подписок делают проверки перед записью или проведением документа для контроля заполнения нужных полей. Также удобно заполнять дополнительные регистры – документ или элемент справочника уже записан, и вы можете использовать достоверные данные.
Механизм расширений, который активно используют разработчики 1С версии 8.3.6 и выше, позволяет более тонко прописывать подписки, не затрагивая типовую конфигурацию. При обновлении добавленные разработчиком проверки могут мешать реструктуризации документов, поэтому необходимо отключить подписки. Легче отключить одно расширение, чем предусматривать возможность отключения всех подписок в конфигурации, которых может быть более сотни.
Подписки в расширениях
Расширение – это конфигурация 1С, которая «накладывается» на основную конфигурацию. Само по себе расширение не является функционирующей системой, но благодаря ему разработчики получают свободу действий. Основное преимущество заключается в том, что при обновлении расширение отключается, и обновляется типовая конфигурация. Именно поэтому разработчики стараются переносить свои подписки в расширение.
В расширении есть возможность дополнять модули документов и других объектов и их форм. Достаточно добавить их из основной конфигурации в расширение. Также разработчики могут выбирать, когда исполнять код из расширения относительно процедур из основной конфигурации:
- Запускайте конфигуратор;
- Открывайте меню «Конфигурация» – «Расширения конфигурации»;
- Добавляйте новое расширение конфигурации и называйте его в соответствии с его предназначением;
Рис.2 Добавляем расширение
Чтобы добавить в расширение подписки на события, нужно добавить в расширение документ. Находим его в основной конфигурации, жмем по правой кнопке и в контекстном меню выбираем команду «Добавить в расширение». После это находим нужный документ в расширении и через контекстное меню открываем его модуль объекта.
Рис.3 Добавить в расширение подписки на события
Рис.4 Создастся процедура, внутри которой вы сможете описать текст процедуры
Дорабатывайте конфигурации с минимальными изменениями и обновления не будут отнимать у вас много времени.
Лицензия на сервер + 100 рабочих мест. Электронная поставка.
Оперативные консультации по 1С. Не тратьте время - мы поможем решить проблему любой сложности.
Настройка и доработка 1С:Документооборот для борьбы с ошибками. Гарантия на все результаты работ.
Идеально подходит для средних, крупных компаний и холдингов со сложным документооборотом
Типовой функционал, встроенный в прикладные решения 1С
1С:Документооборот помимо настроек различных параметров имеет очень полезный механизм бизнес-событий. Его можно использовать, если стандартных возможностей системы уже не хватает, но уходить с поддержки не хочется. Например, нужно автоматически регистрировать служебные записки после их утверждения, чтобы не усложнять работу пользователей лишней ненужной работой.
Бизнес-события – это отображение факта, что произошло некое важное для организации событие, которое подтверждено изменением данных в информационной базе. К ним можно привязать специальные обработчики, которые помогут реализовывать те или иные механизмы.
В типовой версии уже предустановлены готовые бизнес-события, они формируются автоматом и применяются для разнообразных механизмов (ук примеру, по видам событий «Создание задачи» и «Выполнение задачи» могут быть заданы автоматические уведомления).
Для готовых видов бизнес-событий можно писать свои обработчики для расширения функционала системы. Также в системе можно задать собственные бизнес-события и привязывать к ним обработчики событий. Все это практически безгранично расширяет возможности системы.
Бизнес-события состоят из нескольких частей:
- детекторы событий (типовые и пользовательские);
- реестр произошедших событий;
- обработчики событий (типовые и пользовательские).
Рис.1 Бизнес события
Для использования механизма бизнес-событий в настройках программы должна быть установлена соответствующая галочка. Зайдем в «Настройки программы», в раздел «Настройка и администрирование».
Рис.2 Настройки программы
Перейдем по гиперссылке «Общие настройки».
Рис.3 Общие настройки
В настройках должна быть установлена галочка «Бизнес-события».
Рис.4 Бизнес-события в общих настройках
Программой «1С:Документооборот» в разделе «Настройка и администрирование-Бизнес-события» предусмотрен справочник «Виды бизнес-событий».
Рис.5 Виды бизнес-событий
В справочнике уже заложены предопределенные бизнес-события, которые фиксируются системой автоматически.
Рис.6 Предопределенные бизнес-события
Перечень типовых бизнес-событий в системе:
Как только какое-либо событие произошло, происходит запись этого события в регистр сведений «Произошедшие бизнес-события» (доступен в меню «Все функции»).
Рис.7 Произошедшие бизнес-события
В этом регистре отображается вид события, источник записи, автор и отметка об обработке записи.
Рис.8 Параметры бизнес-событий
Так, например, при создании нового внутреннего документа «Договор аренды» в регистре появляется запись «Создание внутреннего документа», при формировании файла договора в регистре появляется запись «Создание файла» и т.д.
Пользователь может создавать свои бизнес-события и привязать к ним обработчики событий – типовые или пользовательские. Справочник «Дополнительные обработчики» доступен в разделе «Настройка и администрирование-Бизнес-события».
Рис.9 Дополнительные обработчики
С помощью кнопки «Создать» пользователь может задать дополнительный обработчик бизнес-событий.
Рис.10 Создание дополнительного обработчика бизнес-событий
В карточке указывается наименование обработчика, код обработки события и устанавливается галочка «Обработчик включен».
Рис.11 Обработчик включен
Рис.12 Код отмены обработки событий
В меню «Подписки» пользователь указывает подписку для данного обработчика (кнопка «Создать»).
Рис.13 Меню Подписки
Рис.14 Создание Подписки
Связь обработчика и вида события производится путем выбора его из справочника.
Рис.15 Виды бизнес событий
Бизнес-событие может запускаться при создании документа (внутреннего, входящего, исходящего, его регистрации, получении входящего и т.п.).
Рис.16 Связь вида бизнес-события с обработчиком
Связь вида бизнес-события с обработчиком указывается в данной форме.
Кроме типовых бизнес-событий в системе можно добавлять свои события. Для этого необходимо сделать следующее:
- В справочнике «Виды бизнес-событий» добавить новое бизнес-событие;
- Перейти к созданию детектора бизнес-событий*. У детектора установить флаг «Детектор включен».
- Создать дополнительный обработчик. Установить у обработчика флаг «Обработчик включен». Настроить у обработчика подписку на событие.
*Детектор бизнес события – это механизм, который отслеживает выполнение заданного условия и создает определенное событие в информационной базе.
Мы познакомились с мощным и очень полезным механизмом бизнес-событий в 1С:Документооборот, который позволяет существенно расширять типовые возможности системы, не внося изменений в конфигурацию и не снимая ее с поддержки. Таким образом, можно достаточно серьезно расширить функционал системы, не лишая ее стандартных обновлений.
Чтобы правильно настроить и использовать все богатые возможности 1С:Документооборот, обращайтесь к профессионалам, мы сделаем вашу работу с документами легкой и эффективной.
Читайте также: