1с как найти подписку на событие документа

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

Поиск подписок на событие в конфигураторе

Первый способ связан с механизмом платформы по поиску ссылок на объект метаданных.

  • Открываем 1с 8 в режиме Конфигуратор;
  • Выделяем нужный объект метаданных (справочник, документ или др.);
  • Нажимаем на нем правой кнопкой мыши, появляется контекстное меню;
  • В меню выбираем пункт Поиск ссылок на объект;
  • В появившемся окне выбираем В свойствах и жмем ОК;

1с поиск ссылок на объект

  • После чего будут найдены все ссылки на объект метаданных, в том числе и подписки на события.

Поиск подписок на событие обработкой

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

Интерфейс у обработки очень простой, выбираете документ или справочник и жмете Выполнить.
Обработка поиск подписок на событие

Скачать обработку Поиск подписок (документы, справочники)


Поиск подписок на событие для объектов конфигурации 1C

В 1С подписки на события позволяют создать одну процедуру или функцию которая будет выполняться при определенном событии (ПередЗаписью, ПриЗаписи, ОбработкаЗаполнения, ОбработкаПроверкиЗаполнения, ОбработкаФормированияПоВерсииИсторииДанных) у выбранных объектов конфигурации. При этом в самих объектах писать код не нужно, достаточно лишь отметить их в дереве. Есть два варианта поиска подписок. Первый это открывать каждую подписку на события и смотреть источник, но на это можно потратить очень много времени так как например, в типовых конфигурациях очень много подписок. Второй это произвести поиск ссылок на объект.

Как найти подписку на событие

Допустим вы хотите найти подписку на события справочника «Страны Мира». Для этого на данном справочнике кликаем ПКМ и выбираем пункт «Поиск ссылок на объект».

1C подписки на события

Далее в открывшемся окне отмечаем пункты «В свойствах».

Поиск подписок на событие для объектов конфигурации 1C

Система произведет поиск и отобразить все ссылки на выбранный объект.

1С 8.3 Как быстрой найти подписку на событие любого объекта

Таким образом происходит поиск всех подписок на событие для объектов конфигурации 1C.

О чем эта статья

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

  • Что такое подписка на событие и как его применять на практике?
  • Как выполнить проверку дублирования наименования при записи элемента справочника без модификации модулей самого справочника?
  • Как, при помощи подписки на событие, обеспечить формирование движений по регистру накопления при проведении документа?
  • Как обеспечить подмену основной формы документа?

Применимость

В статье рассматривается платформа «1С:Предприятие» редакции 8.3. Представленная информация актуальна для текущих релизов платформы.

Подписки на события

В статье рассматриваются несколько примеров применения одного из вспомогательных объектов платформы «1С:Предприятие 8» – подписок на события.

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

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

Подписки на события описываются в ветке Общие окна объектов конфигурации (Рис.1).

1С 8 Подписки на события

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

  1. Выполняется обработчик события ПередЗаписью() в модуле объекта документа.
  2. Если в ходе выполнения обработчика параметр Отказ принимает значение Истина или вызывается исключение, то обработка события прерывается.
  3. Если на втором шаге обработка события не прерывалась, то выполняются внешние обработчики (подписки на события), определенные для события ПередЗаписью().
  4. Если в ходе выполнения внешнего обработчика параметр Отказ принимает значение Истина или вызывается исключение, то выполнение внешнего обработчика прерывается.

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

Задача 1

Выполнить проверку дублирования наименования при записи элемента справочника “Контрагенты” – без модификации модулей самого справочника.

Для решения задачи нужно создать общий модуль ОбработчикиПодписокНаСобытия. В палитре свойств модуля установить флаг Сервер и Клиент (обычное приложение). Второй флаг нужен для того, чтобы подписка на событие работала в обычном приложении.

Флаг Клиент (обычное приложение) доступен, если в параметрах конфигуратора установлен режим редактирования Управляемое приложение и обычное приложение.

В ветке Общие окна объектов конфигурации создать новую подписку на событие. В палитре свойств ввести имя подписки ПроверкаНаименованияСправочника. В поле выбора Источник отметить тип данных СправочникОбъект.Контрагенты. В поле выбора Событие выбрать событие ПередЗаписью(). После отработки этого события будет срабатывать процедура обработки подписки на событие (Рис. 2).

Процедура обработки подписки на событие

В поле выбора Обработчик указывается общий модуль, в котором располагается обработчик подписки на событие. Нажать в этом поле кнопку Открыть, выбрать модуль ОбработчикиПодписокНаСобытия и нажать ОК. Система автоматически создаст в общем модуле процедуру ПроверкаНаименованияСправочникаПередЗаписью() с параметрами Источник и Отказ. В параметре Источник передается объект, для которого создана подписка на события – СправочникОбъект.<Наименование справочника>. В параметре Отказ передается признак отказа от записи элемента.

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

Листинг процедуры ПроверкаНаименованияСправочникаПередЗаписью()

Листинг процедуры ПроверкаНаименованияСправочникаПередЗаписью

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

Задача 2

Создать оборотный регистр накопления “Выбытия денежных средств” и обеспечить формирование движений по этому регистру при проведении документа “Расходный кассовый ордер”, используя механизм подписок на события.

Создать новый оборотный регистр с именем ВыбытияДенежныхСредств. Выбрать регистратор “Расходный кассовый ордер”. Добавить измерения регистра:

Касса, тип: СправочникСсылка.Кассы;
Статья, тип: СправочникСсылка.СтатьиДвиженияДенежныхСредств.

Создать ресурс регистра:

Сумма, тип Число, Длина – 15, Точность – 2.

В документе “Расходный кассовый ордер” создать реквизит СтатьяДвижения с типом данных СправочникСсылка.СтатьиДвиженияДенежныхСредств.

Создать новую подписку на событие:

Имя – ДвиженияПоВыбытиюДенежныхСредств;
Источник – ДокументОбъект.РКО;
Событие – ОбработкаПроведения.

В общем модуле ОбработчикиПодписокНаСобытия создать обработчик ДвиженияПоВыбытиюДенежныхСредствОбработкаПроведения(). В обработчике осуществляется обход табличной части документа “Расходный кассовый ордер” и формируются движения в регистре накопления ВыбытияДенежныхСредств.

Листинг процедуры ДвиженияПоВыбытиюДенежныхСредствОбработкаПроведения()

Листинг процедуры ДвиженияПоВыбытиюДенежныхСредствОбработкаПроведения

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

Задача 3

Обеспечить подмену основной формы документа “Расходный кассовый ордер”.

Создать новую форму документа “Расходный кассовый ордер” с именем ФормаДокументаКлиентская. Внести в форму произвольные изменения, например, поменять порядок элементов управления. Для вызова этой формы необходимо использовать подписку на событие ОбработкаПолученияФормы() в модуле менеджера документа “Расходный кассовый ордер”.

Создать новую подписку на событие:

Имя – ОсновнаяФормаРКО;
Источник – ДокументМенеджер.РКО;
Событие – ОбработкаПолученияФормы.

В общем модуле ОбработчикиПодписокНаСобытия создать обработчик ОсновнаяФормаРКООбработкаПолученияФормы(). В обработчик в качестве параметра ВыбраннаяФорма передается имя открываемой формы.
Параметр СтандартнаяОбработка устанавливается в значении Ложь для отключения открытия основной формы.

Листинг процедуры ОсновнаяФормаРКООбработкаПолученияФормы()

Листинг процедуры ОсновнаяФормаРКООбработкаПолученияФормы

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

Таким образом, подписки на события предоставляют возможность добавления нового функционала, не изменяя существующие модули объектов. К недостаткам подписок на события можно отнести:

  • Увеличение сложности алгоритмов.
  • Подписаться можно только на события объектов и менеджеров объектов.

Если необходимо модифицировать какое-либо событие формы, то механизм подписок на события не доступен. В этом случае, необходимо вносить изменения в саму форму или копировать форму и вносить изменения в новый объект.

01.11.2017

Все подписки на события

Данная статья является анонсом новой функциональности.

Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.


Полное описание новой функциональности будет приведено в документации к соответствующей версии.


Полный список изменений в новой версии приводится в файле v8Update.htm.

Реализовано в EDT версии 1.7.0.567.

В 1C:Enterprise Development Tools (EDT) мы реализовали прототип нового инструмента. Рабочее название этого инструмента – редактор Все подписки на события. Он поможет вам удобно анализировать подписки на все события, которые существуют в прикладном решении.

Подписки на события

Платформа 1С:Предприятия позволяет создавать в прикладном решении подписки на события объектов конфигурации. Подписка – это процедура, которая будет выполнена после того, как выполнится исходный обработчик события. Удобство подписок заключается в том, что одну процедуру можно «подписать» на событие, принадлежащее разным объектам конфигурации. Таким образом, если есть алгоритм, который нужно выполнять и при записи организации, и при записи подразделения, его можно расположить в подписке, и тогда вам вообще не придётся даже изменять обработчики этого события в самих объектах.

Получается что подписка – это удобный и универсальный механизм. Но в больших прикладных решениях количество подписок на события может достигать нескольких сотен. Анализировать их в дереве конфигурации, в линейном списке, становится неудобно. Например, в прикладном решении 1С:Управление предприятием (ERP) более 340 подписок на события.

01.png

EDT несколько облегчает работу с подписками, показывая их в панели Схема, когда открыт модуль какого-либо прикладного объекта.

02.png

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

Все подписки на события

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

17.png

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

03.png

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

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

07.png

Если вы вызываете редактор для некоторого объекта конфигурации, будут показаны события и подписки только этого объекта, а сам объект всегда будет подсвечен красным в списке источников. Таким образом, вы можете быстро проконтролировать, например, что выбранная вами подписка работает для всех объектов конфигурации, для которых это нужно.

04.png

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

05.png

Кроме этого редактор содержит универсальный фильтр, с помощью которого вы можете произвольным образом настраивать состав объектов, событий и процедур.

06.png

Обратите внимание, что с помощью этого фильтра вы можете выбирать не только конкретные объекты, являющиеся источником событий, но и наборы типов, такие как СправочникОбъект, ДокументОбъект и другие. Такие наборы типов включают в себя все справочники или все документы, которые есть в конфигурации.

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

08.png

В любой момент вы можете быстро отфильтровать содержимое по тому событию или источнику, который показан в редакторе. Например, вы нашли подписку ПроверитьФормулуРасчета. Её источником является план видов расчета Удержания.

09.png

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

10.png

Автоматическое добавление точек останова

Одним из распространённых способов анализа подписок на события является последовательный просмотр всех вызываемых процедур в отладчике в порядке их выполнения. Для этого редактор предоставляет удобный инструмент автоматического добавления точек останова в обработчики.

Прежде всего, вы можете вызвать этот инструмент прямо в редакторе.

11.png

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

13.png

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

14.png

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

15.png

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

Теги:
1C:EDT 
разработка 

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

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

Событие в программе 1С возникает в тот момент, когда пользователь использует какую-либо кнопку, в результате нажатия на которую открывается форма или записывается документ.

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

Кроме того, программист может настроить систему таким образом, что обработчик будет назначен сразу на несколько документов при нажатии на одну кнопку.

Как подписка на событие выглядит в дереве конфигурации?

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

В самой подписке на события выбирается источник, который будет основой для осуществления определённых событий.

Функция-обработчик выбирается в общем модуле в дереве конфигурации.

Как проверить заполнение поля?

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

Объект «Подписка на события» расположен во вкладке «Общие ? Подписки на события 1С». Эта опция позволяет при наступлении определённого события назначить обработчик сразу для нескольких объектов. Это могут быть документы или справочники.

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

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


Работа с формами 1С

Как показывает практика, можно значительно упростить работу со многими объектами в 1С. Чаще всего это документы и справочники. Однако на данный момент невозможно подписаться на события 1С формы, например, при её открытии.

Следует понимать, что возможность использования событий напрямую зависит от используемого объекта. Однако, если выбрать сразу несколько объектов, в итоге в списке будут только те события, которые возможно применить к каждому из объектов.

Функция-обработчик

Следующий этап – работа с функцией обработчиком события. Для её использования необходимо установить серверный общий модуль. Эти настройки можно изменить во вкладке «Свойства». Функция-обработчик создаётся после нажатия кнопки «Лупа».


Для чего нужна функция подписки на события?

За несколько этапов пользователь сам может установить функцию подписки на событие в 1С. Этот приём позволяет выполнять определённую функцию при записи любого документа или создания нового.

Создание подписки значительно упрощает работу в программе 1С, а также экономит время пользователю.

Понравилась статья? Поделить с друзьями:
  • Как составить сюжетную схему рассказа
  • Как правильно составить объяснение участковому
  • Как найти свой двойник на картинах
  • Как можно исправить жалюзи
  • Как составить щенячью