1с последовательность событий бизнес процессов

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

Именно в такой ситуации и пригодится эта информация. Имея немного опыта в программировании бывает трудно разобраться во всем многообразии обработчиков платформы. В этой статье на примере проведения документа будет показана последовательность включения в работу обработчиков. Перед началом основной части статьи хотелось бы отметить, что у большей части рассматриваемых здесь обработчиков есть параметр «Отказ». Присвоив ему значение «Истина», мы отменим запись. 1. Перед транзакцией в 1С 8.3 2. Транзакция в 1С 8.3 3. После транзакции в 1С 8.3

2. Выполнение модуля объекта перед транзакцией в 1С 8.3

1. Модуль формы в 1С 8 ERP ПередЗаписью (Отказ, ПараметрыЗаписи) Выполняется на клиенте.

1С ERP Методика описания бизнес-процессов


Параметры записи представляют собой структуру, в которую система записывает значения. Также, в этот обработчик можно добавить свои данные, которые позже используются в любой процедуре с указанными параметрами записи.
Здесь есть возможность задать вопросы пользователю (организовать диалог). Добавить на платформу 1С: дополнительную информацию и внести ее в параметры записи. 2. Модуль формы в 1С 8 ERP ОбработкаПроверкиЗаполненияНаСервере (Отказ, ПроверяемыеРеквизиты) Модуль объекта в 1С 8 ERP Обработка проверки заполнения (Отказ, ПроверяемыеРеквизиты Выполняется на сервере.
Эта обработка есть как в модуле, так и в форме объекта. На форме используются платформа 1С 8.3: данные формы, в отличие от модуля, где возможно использовать только данные самого объекта. Здесь появляется массив элементов проверяемых реквизитов. В зависимости от условий можно изменить их, добавить или удалить из проверяемых реквизитов.
При дальнейшей работе система возвращается на форму в процедуру: 3. Модуль формы в 1С 8 ERP ПередЗаписьюНаСервере (Отказ, ТекущийОбъект, ПараметрыЗаписи) Выполняется на сервере.
В этой обработке появляется понятие «ТекущийОбъект». Это НЕ объект формы, т.е. изменения реквизита на платформе 1С 8.3: формы объекта не дадут результата. Если же в этой, или любой другой процедуре, в которой используется «ТекущийОбъект» требуется что-то внести в базу, то нужно изменять не объект формы в 1С 8 ERP, а текущий объект.

3. Модуль объекта в 1С 8 ERP

Начало транзакции в 1С 8.3 1. Модуль объекта в 1С 8 ERP ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Выполняется на сервере.
Параметры «РежимЗаписи» и «РежимПроведения» позволяют переопределить стандартное поведение обработки.

2. Модуль объекта в 1С 8 ERP ПриУстановкеНовогоНомера (СтандартнаяОбработка, Префикс)

Выполняется на сервере.
Эта процедура вызывается, когда в документе не установлен номер. Документ должен быть новым, или с убранным вручную номером. Если номер установлен система игнорирует этот обработчик. 3. Модуль объекта в 1С 8 ERP ПриЗаписи (Отказ) Выполняется на сервере.

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


В этой обработке документ записывается в базу. Появляется ссылка, которую можно использовать в дальнейшей работе. Также присутствует возможность создавать связанные с этим документом, объекты (например, справочники или другие документы), в которые потом будет передаваться ссылка на объект в 1С 8.3. 4. Модуль объекта в 1С 8 ERP ОбработкаПроведения (Отказ, РежимПроведения) Выполняется на сервере.
В этой обработке происходит запись на платформе 1С: движения документов регистра.
5. Модуль формы в 1С 8 ERP ПриЗаписиНаСервере (Отказ, ТекущийОбъект, ПараметыЗаписи) Выполняется на сервере.
Это последний этап транзакции в 1С 8.3. Здесь есть возможность вмешаться в логику работы и использовать данные формы. Конец транзакции в 1С 8.3

4. Проведение транзакции в 1С 8.3

1. Модуль формы в 1С 8 ERP ПослеЗаписиНаСервере (ТекущийОбъект, ПараметрыЗаписи) Выполняется на сервере.
Здесь можно вывести дополнительную информацию для пользователя или выполнить определенные действия, реализуемые в случае, если объект записан. Когда возникнет необходимость использовать данные или методы объекта в 1С 8 ERP, то обращаемся через ТекущийОбъект. 2. Модуль формы в 1С 8 ERP ПослеЗаписи (ПараметрыЗаписи) Выполняется на клиенте.
Здесь есть возможность показать пользователю оповещения о произошедших событиях, например, о созданных на платформе 1С 8.3: связанных документах или справочниках. На этом данная цепочка обработчиков события закончена. Разумеется, есть еще и процедуры «ПередЗакрытием» и «ПриЗакрытии», но они больше относятся непосредственно к форме, чем к документу. Специалист компании «Кодерлайн» Ярослав Копытов

Читайте также:  Что такое ниша в бизнесе в таргете

Источник: www.koderline.ru

Код Икс Пи ☆ Центр автоматизации, сопровождения и поддержки

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

Будьте внимательны, при программной записи события модуля формы не запускаются!

— Модуль формы ПередЗаписью(Отказ, ПараметрыЗаписи)

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

Второй параметр этого обработчика «ПараметрыЗаписи» имеет тип «Структура». У документов эти параметры заполняются системой предопределенными параметрами РежимЗаписи, РежимПроведения. Можно добавить свои!

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

— Модуль формы ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)

— Модуль объекта ОбработкаПроверкиЗаполнения (Отказ, ПроверяемыеРеквизиты)

Сначала вызывается событие формы ОбработкаПроверкиЗаполненияНаСервере На данном этапе есть доступ к данным формы.

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

Затем вызывается событие прикладного объекта ОбработкаПроверкиЗаполнения.

Эти два обработчика проверки заполнения реализуются через параметр «ПроверяемыеРеквизиты» типа Массив, содержащий реквизиты, которые надо проверять (т.е. которым установлено свойство проверки заполнения «Выдавать ошибку»). И если из этого массива убрать реквизит, то проверяться он не будет, если добавить, то будет выполняться проверка заполнения.

Эти два обработчика событий предназначены:

  • Для включения в проверку заполнения тех реквизитов, у которых в свойствах «ПроверкаЗаполнения» указано «Не проверять». Для этого надо добавить этот реквизит в массив параметр «ПроверяемыеРеквизиты»
  • Для того, чтобы исключить из автоматической проверки реквизиты, у которых установлено свойство проверки заполнения «Выдавать ошибку» в зависимости от каких-то условий. Для этого надо удалить этот реквизит из массива параметра «ПроверяемыеРеквизиты»

Имеется несколько особенностей, которые необходимо учитывать:

  • Если у формы из которой записывается объект в свойствах не установлено «ПроверятьЗаполнениеАвтоматически», то тогда эти обработчики проверки заполнения не вызываются и проверки не происходят!
  • Вызываются только при интерактивной записи! При программной записи не вызываются. Для проверки нужно использовать метод объекта ПроверитьЗаполнение(), который инициирует запуск этих событий.
  • Для документов, имеющих возможность проведения, эти события проверки заполнения вызываются только при проведении!
    Если данные формы не нужны, то используйте обработчик модуля объекта ОбработкаПроверкиЗаполнения

— Модуль формы ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

В этом обработчике можно дозаполнять реквизиты объекта (через параметр ТекущийОбъект) или провести дополнительные проверки. Есть доступ к данным формы.

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

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

Параметр ТекущийОбъект имеет тип класса «объект» в зависимости от типа записываемого объекта (в случае записи документа ДокументОбъект). Т.е. экземпляр класса объект создан, и можно обратиться к его свойствам и методам, но в базу данных ещё не записан.

Читайте также:  Из чего состоит корпоративный бизнес

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

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

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

Начало транзакции (начало работы с базой данных)

— Модуль объекта ПередЗаписью(Отказ)

В этом обработчике можно провести дополнительные проверки и отказаться от записи.

Для документов в параметры данного обработчика добавляются ещё два параметра: РежимЗаписи, РежимПроведения.

— Модуль объекта ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)

Возникает в момент, когда выполняется установка номера нового документа, задачи или бизнес-процесса.

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

Эти событии вызываются для объектов у которых указано свойство «Автонумерация» и только для тех объектов, у которых пустой код на момент записи.

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

— Модуль объекта ОбработкаУдаленияПроведения (Отказ)

Этот обработчик запускается только при отмене проведения документов с целью удаления движений из регистров. При этом неважно как отменяется проведение документа — программно или интерактивно.

— Модуль объекта ПриЗаписи(Отказ)

Вызывается после записи объекта в базу данных, но до окончания транзакции записи.

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

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

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

Поскольку это событие обрабатывается в транзакции записи основных данных, гарантируется синхронность изменения основных и дополнительных данных. Либо и те и другие будут записаны, либо и те и другие изменения будут отменены при отмене транзакции.

Можно ещё отказаться от записи.

— Модуль объекта ОбработкаПроведения (Отказ, РежимПроведения)

Этот обработчик запускается только при проведении документов. При этом неважно как проводится документ — программно или интерактивно.

Основное назначение процедуры-обработчика данного события — генерация движений по документу. Именно в данном обработчике прописываются алгоритмы записей в регистры, т.е. программно формируются движения документа.

Параметр РежимПроведения определяет как будет проводиться документ: оперативно или неоперативно.

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

— Модуль формы ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

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

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

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

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

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

Читайте также:  Современное бизнес пространство актуальные проблемы и перспективы

Работать следует именно через этот параметр, то есть не путать с основным реквизитом формы Объект, так как там данные, которые были до записи и его изменения бесполезны потому, что после этого обработчика данные из ТекущегоОбъекта запишутся в Объект.

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

Итак, по поводу этого обработчика можно сделать следующие выводы:

Если нужно выполнять какие-то действия, связанные с записанным объектом, и при этом, например, нужна ссылка на этот объект, необходимо использовать ТекущийОбъект.Ссылка.
Основной реквизит формы Объект можно использовать только для сравнения того, что «было», с тем, что «записалось». Изменять его бессмысленно, т. к. он будет замещен данными из ТекущийОбъект.
Если нужно изменить записанные данные перед отправкой их на клиент, необходимо использовать ТекущийОбъект

Завершение транзакции (данные окончательно записываются в таблицы БД)

— Модуль формы ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

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

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

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

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

Доступны ПараметрыЗаписи, данные которых были переданы в этом параметре из других обработчиков.

— Модуль формы ПослеЗаписи(ПараметрыЗаписи)

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

Доступны ПараметрыЗаписи, данные которых были переданы в этом параметре из других обработчиков.

You have no rights to post comments

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

Глава восьмая – бизнес-процессы

Аватар пользователя Admin

В тридцать девятом уроке : мы познакомимся с объектами, позволяющими объединить отдельные операции в цепочки последовательных действий. Узнаем о назначении объектов метаданных «Бизнес-процессы» и «Задачи». Познакомимся с понятием карты маршрута и их видами, точками маршрута. Рассмотрим последовательность действий, которые мы будем автоматизировать с помощью бизнес-процесса.

40 Создаем задачу и бизнес-процесс

В сороковом уроке: мы создадим подсистему «Бизнес-процессы». Создадим задачу с реквизитами адресации по сотруднику и по должности. Затем создадим бизнес-процесс «Выдача денег под отчет». Создадим карту маршрута для нашего бизнес-процесса. Определим точки карты, условия и связи.

Создадим форму бизнес-процесса. Опишем события в модуле формы бизнес процесса. Познакомимся с методом объекта бизнес-процесс «ПолучитьКартуМаршрута»

41 Форма задачи. Отладка

В сорок первом уроке : мы создадим форму задачи, сгруппируем элементы формы, напишем обработчики событий и проконтролируем последовательность действий бизнес-процесса с помощью отладчика.

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

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