Обработчика бизнес событий это

На предыдущем занятии мы создали форму документа Приходная накладная и назначили эту форму основной. Что это значит? У всех прикладных объектов конфигурации существует некоторое количество основных форм. Они служат для отображения данных объекта в том или ином виде.

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

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

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

Ролик «Последовательность обработчиков событий при проведении документа»

Обработчики событий

При работе с событиями в платформе 1С:Предприятие 8 следует различать два типа событий: события, связанные с формой и ее элементами, и все остальные. Разница заключается в том, что обработчики событий, связанных с формой и ее элементами, — назначаемые, а обработчики всех остальных событий — фиксированные.

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

Требуется явное назначение процедуры обработчиком этого события в палитре свойств, в соответствующем событии. Назначение обработчика может выполняться интерактивно, при работе с формой в конфигураторе, или программно, используя методы формы и ее элементов — УстановитьДействие().

  • Модуль управляемого приложения. Модуль управляемого прило­жения выполняется при старте системы 1С:Предприятие в режимах тонкого клиента и веб-клиента.

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

  • Общие модули. В общих модулях хранятся процедуры и функции, которые вызываются из других модулей системы. Сам по себе общий модуль не исполняется. Исполняются отдельные его процедуры/ функции в момент их вызова из других модулей. Чтобы открыть общий модуль, нужно раскрыть ветвь Общие в дереве объектов конфигурации, затем раскрыть ветвь Общие модули и дважды щелкнуть мышью на нужном модуле.
  • Модули объектов. Модули объектов — это, например, модуль элемента справочника или модуль документа. Эти модули вызываются тогда, когда либо программно создается этот объект средствами встроенного языка, например, методами Соз-датьЭлемент() у менеджеров справочников или СоздатьДокумент() менеджеров документов, либо когда пользователь создает новый элемент справочника или документ интерактивно. Чтобы открыть модуль объекта, нужно в окне редактирования объекта конфигурации перейти на закладку Прочее и нажать кнопку Модуль объекта. Или, выделив нужный объект в дереве объектов конфигурации, вызвать из контекстного меню команду Открыть модуль объекта.

Рис.5.1. Открытие модуля объекта

  • Модули форм. Каждая форма, определенная в конфигурации, имеет свой собственный модуль. Этот модуль исполняется при создании объекта УправляемаяФорма встроенного языка. Этот объект создается системой в режиме 1С предприятие в тот момент, когда мы программно (методами ПолучитьФорму() или ОткрытьФорму()). Чтобы открыть модуль формы, нужно открыть нужный объект конфигурации Форма объекта и в окне редактора форм перейти на закладку Модуль .
Читайте также:  Перепродажа нефти как бизнес

Листинг 5.1. Открытие модуля формы

  • Модуль сеанса. Модулем сеанса называется модуль, который автоматически выполняется при старте системы 1С:Предприятие в момент загрузки конфигурации. Модуль сеанса предназначен для инициализации параметров сеанса и отработки действий, связанных с сеансом работы. Модуль сеанса не содержит экспор­тируемых процедур и функций и может использовать процедуры из общих модулей конфигурации. Чтобы открыть модуль сеанса, нужно выделить корень дерева объектов конфигурации (строку Фамилия) и вызвать из контекстного меню команду Открыть модуль сеанса.
  • Модуль внешнего соединения предназначен для размещения в нем текстов функций и процедур, которые могут вызываться в сессии внешнего соединения. Чтобы открыть модуль сеанса, нужно выделить корень дерева объектов конфигурации (строку ПособиеДляНачинающих) и вызвать из контекстного меню команду Открыть модуль внешнего соединения.
  • Модуль менеджеров. Для каждого прикладного объекта существует менеджер, предназначенный для управления этим объектом как объектом конфигурации. С помощью менеджера можно создавать объекты, работать с формами и макетами. Модуль менеджера позволяет расширить функциональность менеджеров, предоставляемых системой, за счет написания процедур и функций на встроенном языке. Чтобы открыть модуль менеджера, нужно в окне редактирования объекта конфигурации перейти на закладку Прочее и нажать кнопку Модуль менеджера.
  • Модуль команды. Как в самой конфигурации, так и у многих прикладных объектов могут существовать подчиненные объекты конфигурации — Команды. У каждой команды существует модуль команды, в котором можно написать предопределенную процедуру ОбработкаКоманды() для выполнения этой команды. Чтобы открыть модуль команды, подчиненной некоторому объекту конфигурации, нужно в окне редактирования объекта конфигурации перейти на закладку Команды и дважды щелкнуть мышью на нужной команде. Или, выделив нужную команду в дереве объектов конфигурации, вызвать из контекстного меню команду Открыть модуль команды.

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

  • локальным контекстом самого модуля формы;
  • реквизитами формы, которой ;принадлежит; модуль;
  • свойствами и методами объекта УправляемаяФорма встроенного языка;
  • свойствами и методами расширения формы, определяемого типом того объекта, данные которого содержатся в основном реквизите формы;
  • глобальным контекстом, в том числе неглобальными общими модулями и экспортируемыми функциями и процедурами глобальных общих модулей;
  • экспортируемыми переменными, процедурами и функциями модуля управляемого приложения;

Бизнес-события — Настройка и администрирование «1С:Документооборот» — 1С:Учебный центр №1

Источник: studfile.net

Обработчики событий 1С:Предприятие 8.3

Особенностью обработки событий среде 1С:Предприятия 8 является то, что имя процедуры-обработчика в одних случаях должно совпадать с именем события, а в других случаях может от него отличаться.
Процедуры-обработчики событий //its.1c.ru

Форма

События жизненного цикла формы

Открытие объекта в форме
  • ПриЧтенииНаСервере () — выполняется только для существующего объекта, подготовка доп.данных, зависящих от данных объекта. Объект — основной элемент открываемой формы;
  • ТекущийОбъект — объект, прочитанный из БД (доступны экспортные методы объекта)
  • ДанныеЗаполнения (ссылка на объект-основание либо структура отбора). В случае
  • СтандартнаяОбработка = Истина, после обработки заполнения, обрабатываются сначала ДанныеЗаполнения, затем ЗначенияЗаполнения
  • ПриСозданииНаСервере (, ) — Окончательная подготовка формы (ее представления) к открытию
  • форма, открытая для создания нового объекта, получает новый пустой несохраненный Объект, для которого метод Объект.ЭтоНовый() возвращает Истина
  • фактически этот метод приводит к ошибке » Метод объекта не обнаружен (ЭтоНовый) » и следует использовать ЗначениеЗаполнено(Объект.Ссылка)
  • ПриОткрытии () — Действия, связанные с открытием, которые на сервере выполнить невозможно; выполняемые тогда, когда форма наверняка открывается. Последний обработчик перед открытием, в котором можно отказаться от открытия
Запись объекта в форме
  • ПередЗаписью() — Анализ готовности вспомогательных данных для записи объекта
  • ОбработкаПроверкиЗаполненияНаСервере(, ) — Проверка данных, не относящихся к объекту.
  • ПроверяемыеРеквизиты содержит массив имен реквизитов формы
  • ОбработкаПроверкиЗаполнения(, ) — Всё, что относится к проверкам реквизитов основного объекта БД.
  • ПроверяемыеРеквизиты содержит массив имен реквизитов объекта
  • ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) — Объект — основной реквизит формы объекта;
  • ТекущийОбъект — объект, который реально будет записан в БД. Анализировать данные и дозаполнять реквизиты нужно через ТекущийОбъект, модификация Объекта ни к чему не приведет. Обработчик вызывается только при записи из формы
  • ПередЗаписью() — Вызывается при любом способе записи. Данные объекта записываются в БД, но транзакция не закрывается
  • ПриЗаписи() — Выполняются действия над доп.данными, которые неразрывно связаны с основными данными объекта
  • ПриЗаписиНаСервере(, , ) — Предназначение аналогично ПриЗаписи(), но при обработке доп.данных можно использовать данные формы.
  • ТекущийОбъект — данные, которые были записаны в БД, работать следует именно с ним; Объект — данные основного реквизита формы, которые были до записи, его модификация бесполезна. Если это запись нового объекта, то у Объект свойство Ссылка пустое, а у ТекущийОбъект уже заполнено
  • ПослеЗаписи() — Действия, которые невозможно выполнить на сервере, или требующие интерактивного взаимодействия с пользователем. Объект гарантированно записан
Читайте также:  Амортизация в бизнесе сколько стоит
Режим проведения при записи документа

При записи документа в форме, расширение формы выполняет установку режима проведения и в случае оперативного изменяет значение реквизита .Дата . Повлиять на режим проведения возможно через присвоение реквизиту формы ИспользоватьРежимПроведения требуемого значения:

ЭтаФорма . ИспользоватьРежимПроведения = ИспользованиеРежимаПроведения . Неоперативный ;

Подробно алгоритм реализации режима проведения описан в ИТС //its.1c.ru

Закрытие формы
  • ПередЗакрытием(, , , ) — Проверка, можно закрыть форму или нельзя. Если отключить стандартную обработку, то форма будет закрыта, независимо от модифицированности
  • ЗавершениеРаботы
    Тип: Булево.
    В параметр передается признак того, что форма закрывается в процессе завершения работы приложения
  • ПриЗакрытии() — Выполняется, если форма 100% закрывается. На момент вызова пользователь форму уже не видит
  • ЗавершениеРаботы
    Тип: Булево.
    В параметр передается признак того, что форма закрывается в процессе завершения работы приложения: Истина — если в процессе завершения приложения; Ложь — если закрывается только форма.

События формы

? Форма: ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

Событие вызывает метод ОповеститьОВыборе() в подчиненной форме, при открытии которой был установлен Владелец.

Фокус формы и ТекущийЭлемент

Активный элемент формы «в фокусе» отслеживается через свойство ЭтаФорма.ТекущийЭлемент. Для события изменения текущего элемента формы обработчик не предусмотрен.

Оповещение формы

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

  • ИмяСобытия — Строка, содержит идентификатор вида оповещения
  • Параметр — произвольные данные, передаваемые формам
  • Источник — произвольные данные, передаваемые в качестве источника

Передача оповещения выполняется для тех форм, у которых определен обработчик событий в процедуре ОбработкаОповещения(ИмяСобытия, Параметр, Источник). Процедура обработчика вызывается с теми же параметрами, с которыми была вызвана процедура Оповестить(. ).

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

Все описанные процедуры подключения, вызова и обработки выполняются СообщитьАдминистратору» )
Процедура ОбработкаОповещения ( ИмяСобытия , Параметр , Источник )
ОтправитьМейлИзФормы ( Источник ) ;
КонецПроцедуры
Процедура СообщитьАдминистратору ( ИмяСобытия , Параметр , Источник )
СообщитьАдминистраторуПоФорме ( Источник ) ;
КонецПроцедуры

Элементы формы

Поле

Обработчик изменения текста в Поле управляемой формы ИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) вызывается для каждого добавления, удаления, вставки или серии таких изменений, после которой последовала пауза больше ~0.2 секунды. Реквизит связанный с полем получает измененное значение только после завершения редактирования, а до завершения актуальное значение изменяемого текста содержит параметр обработчика Текст или свойство элемента Поле .ТекстРедактирования.

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

Таблица формы (ТаблицаФормы)

. Таблицы, Поля: ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) — ?

Процедура ПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) — для вставки начальных значений

. Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Перетаскивание элемента в таблице

Перетаскивание элемента в таблице формы вызывает событие Перетаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) /

Процедура ДеревоПеретаскивание ( Элемент , ПараметрыПеретаскивания , СтандартнаяОбработка , Строка , Поле )

Для Каждого Идентификатор Из ПараметрыПеретаскивания . Значение Цикл
ЭлементПеретащили ( Идентификатор , Строка ) ;
КонецЦикла;
ЭтаФорма . Модифицированность = Истина;
ЭтаФорма . ПодключитьОбработчикОжидания ( «ДеревоРазвернутьИдентификатор» , 0.1 , Истина ) ;

ПараметрыПеретаскивания ПараметрыПеретаскивания ПараметрыПеретаскивания
Действие Перемещение ДействиеПеретаскивания
ДопустимыеДействия Копирование и перемещение ДопустимыеДействияПеретаскивания
Значение Массив Массив

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

После перетаскивания в выбранный узел последний будет свернут, и развернуть его кодом Элементы.Дерево.Развернуть(Строка); не получится, поэтому развернуть узел можно используя обработчик ожидания.

Читайте также:  Какая волна бизнес радио
Изменение порядка строк

При использовании команд изменяющих порядок строк в элементе ТаблицаФормы событие не возникает, и существуют только косвенные пути это обнаружить!

Объекты

Виртуальный реквизит .Представление

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

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

Первый этап выполняется в процедуре ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка):

  • Поля — Массив, необходимо наполнить строковыми именами реквизитов объекта, необходимых для формирования представления
  • СтандартнаяОбработка — Булево, необходимо установить в Ложь при наполнении массива Поля значениями
  • если оставить значение Истина, то массив Поля будет наполнен стандартной обработкой платформы
  • стандартная обработка для справочников в массиве Поля формирует набор значений [«Наименование», «Ссылка»]
  • стандартная обработка для документов в массиве Поля формирует набор значений [«Номер», «Дата», «Ссылка»]

Источник: reks.biz

Отладчик пользовательских дополнительных обработчиков бизнес-событий в 1С:Документооборот версии 2.1.7.9

Профессиональное сообщество по автоматизации учета и управления (более 1 млн. участников)

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

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

Расскажу коротко о принципе работы отладчика. В 1С:Документооборот имеется РегистрСведений.ПроизошедшиеБизнесСобытия. Туда 1С:Документооборот пишет все произошедшие бизнес-события в виде очереди. Эта очередь обрабатывается предопределенным регламентным заданием ОбработкаПроизошедшихБизнесСобытий, которое 1 раз в минуту делает вызов процедуры общего модуля БизнесСобытияВызовСервера.ОбработкаПроизошедшихБизнесСобытий().

В этой процедуре для не обработанных бизнес-событий оператором Выполнить() запускается код включенных Дополнительных обработчиков бизнес-событий из Справочник.ПользовательскиеОбработчикиБизнесСобытий.ВыпоняемыйКод.

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

Итак, скачиваем демонстрационную конфигурацию demo.dt и внешнюю обработку ОтладчикПользовательскихОбработчиковБизнесСобытий.epf. Создаем демо-базу открываем в конфигураторе и в клиенте в режиме отладки.

Краткая инструкция

1. Отключаем РегламентноеЗадание.ОбработкаПроизошедшихБизнесСобытий (снимаем флаг в форме обработки). Открываем РегистрСведений.ПроизошедшиеБизнесСобытия

2. После отладки копируем содержимое процедуры ОтлаживаемыйОбработчик через буфер обмена в Справочник.ПользовательскиеОбработчикиБизнесСобытий.ВыпоняемыйКод и включаем РегламентноеЗадание.ОбработкаПроизошедшихБизнесСобытий

2.1 Если в базе много обработчиков, то для отладки можем создать ниже отдельные процедуры для каждого обработчика и по мере необходимости подставлять их вызов в тело процедуры ОтлаживаемыйОбработчик(Событие), в этом случае после отладки копируем содержимое вызываемой процедуры, к примеру, содержимое процедуры: ОтлаживаемыйОбработчикОзнакомлениеПослеУтверждения(Событие)

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

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

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

1. Заходим в конфигуратор 1С:Предприятие в режиме Администратора, открываем для редактирования эту обработку, устанавливаем точку останова на первую строку процедуры ОтлаживаемыйОбработчикОзнакомлениеПослеУтверждения:

2. Запускаем из Конфигуратора 1С:Предприятие в режиме отладки.

3. Отключаем РегламентноеЗадание.ОбработкаПроизошедшихБизнесСобытий

4. Создаем интерактивно внутренний документ Тест (ВидДокумента=»Приказ финансового блока»)

5. Создаем интерактивно Бизнес-процесс Утверждение по приказу Тест, запускаем

6. Утверждаем под пользователем, указанным для утверждения.

7. Создаем интерактивно пустой пользовательский обработчик события «Запуск процесса Ознакомление после Утверждения»

8. Создаем для этого обработчика Подписку на событие Завершение процесса

9. Запускаем обработку ОтладчикПользовательскихОбработчиковБизнесСобытий

10. Наслаждаемся процессом отладки и написания кода

10.1 Для повторения отладки после изменения кода снимаем флажки Обработано и НеУдалосьОбработать (ЧислоПопытокОбработки=0) с нашего события в Регистре сведений ПроизошедшиеБизнесСобытия,

Перезапускаем обработку ОтладчикПользовательскихОбработчиковБизнесСобытий

11. После завершения отладки Копируем отлаженный код в ВыполняемыйКод обработчика «Запуск процесса Ознакомление после Утверждения»

12. Включаем РегламентноеЗадание.ОбработкаПроизошедшихБизнесСобытий

Источник: tf21.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
Бизнес для женщин