Обработчик проведения документа 1с где находится

Обновлено: 08.07.2024

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

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

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

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

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

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

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

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

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

Задача 1

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

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

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

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

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

Задача 2

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

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

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

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

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

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

Задача 3

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

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

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

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

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

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

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

ПоследовательностьСобытийДокументаОтменаПроведения_v1.1.jpg

ПередЗаписью(<Отказ>, <ПараметрыЗаписи>)
ОбработкаПроверкиЗаполненияНаСервере(<Отказ>, <ПроверяемыеРеквизиты>)
ОбработкаПроверкиЗаполнения(<Отказ>, <ПроверяемыеРеквизиты>)
ПередЗаписьюНаСервере(<Отказ>, <ТекущийОбъект>, <ПараметрыЗаписи>)
ПередЗаписью(<Отказ>, <ПараметрыЗаписи>)
ПриУстановкеНовогоНомера(<СтандартнаяОбработка>, <Префикс>)
ПриЗаписи(<Отказ>)
ОбработкаПроведения(<Отказ>, <РежимПроведения>) или
ОбработкаУдаленияПроведения(<Отказ>)
ПриЗаписиНаСервере(<Отказ>, <ТекущийОбъект>, <ПараметрыЗаписи>)
ПослеЗаписиНаСервере(<ТекущийОбъект>, <ПараметрыЗаписи>)
ПослеЗаписи(<ПараметрыЗаписи>)

ОбработкаПолученияФормы(<ВидФормы>, <Параметры>, <ВыбраннаяФорма>, <ДополнительнаяИнформация>, <СтандартнаяОбработка>)
<Активация модуля формы на сервере>
<Активация модуля объекта>
ПриЧтенииНаСервере(<ТекущийОбъект>) или
ПриКопировании(<ОбъектКопирования>) или
ОбработкаЗаполнения(<ДанныеЗаполнения>, <ТекстЗаполнения>, <СтандартнаяОбработка>)
ПриСозданииНаСервере(<Отказ>, <СтандартнаяОбработка>)
ПередЗагрузкойДанныхИзНастроекНаСервере(<Настройки>)
ПриЗагрузкеДанныхИзНастроекНаСервере(<Настройки>)
<Активация модуля формы на клиенте>
ПриОткрытии(<Отказ>)
ПриПовторномОткрытии()

Цвета: &НаКлиенте &НаСервере


Про расширения

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

Работа с расширенным программным модулем имеет существенные особенности, которые будут рассмотрены в данном разделе.

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

В расширяющем модуле имеется возможность:

1. Создавать собственные методы и переменные (если это допускает расширяемый модуль).

2. Назначать собственные обработчики на события, которые не обрабатываются в расширяемой конфигурации.

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

`79; полностью заменить оригинальный метод собственным;

`79; создать методы, которые будут вызваны перед или после расширяемого метода.

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

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

В общем случае, аннотированный метод из программного модуля расширения выглядит следующим образом:

В данном примере Перед R09; одна из трех возможных аннотаций, ИмяМетода R09; имя расширяемого метода, Префикс_Имя R09; имя расширяющего метода. Префикс_ R09; это префикс расширения, который желательно указывать для всех методов расширения. Расширяться может как процедура, так и функция. Имя расширяющего метода должно подчиняться обычным правилам формирования имен процедур и функций. В частности R09; оно должно быть уникально.

Если расширяемый метод содержит какие-либо параметры, то:

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

2. Значения параметров разделяются между всеми расширяющими методами из всех расширений и собственно расширяемым методом. Это значит, что если какой-либо расширяющий метод изменит значение параметра, все методы, которые получат управление после этого метода, получат измененное значение этого параметра.

3. В расширяющем методе не имеет смысла указывать значения по умолчанию для параметров расширяемого метода. Значения по умолчанию будут определяться из описания расширяемого метода.

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

33.4.2.2. Способы расширения

Исполнение до расширяемого метода (аннотация Перед)

Если метод аннотирован таким образом, это означает, что вначале будет выполнен метод расширения, а затем R09; расширяемый метод.

Рис. 688. Схема исполнения «Перед»

Исполнение после расширяемого метода (аннотация После)

Если метод аннотирован таким образом, это означает, что вначале будет выполнен расширяемый метод, а затем R09; метод расширения.

Рис. 689. Схема исполнения «После»

Обрамление расширяемого метода (аннотации Перед и После)

Если в расширяющем модуле созданы расширяющие методы, которые отмечены аннотациями Перед и После , то это означает, что вначале будет вызван метод, который отмечен аннотацией Перед , затем расширяемый метод и зачем метод расширения, отмеченный аннотацией После .

Рис. 690. Схема исполнения «Перед» и «После»

Замена метода (аннотация Вместо)

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

Для расширяемых функций возможно применение только этого способа расширения.

Рис. 691. Схема исполнения «Вместо»

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

Рис. 692. Схема исполнения «Вместо» совместно с ПродолжитьВызов()

В исходном тексте пример будет выглядеть следующим образом:

33.4.2.3. Редактирование программного модуля

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

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

При выполнении команды Добавить в расширение происходит следующее:

`79; Если объект, из модуля которого добавляется метод, отсутствует в выбранном расширении R09; этот объект автоматически добавляется в расширение.

`79; Если расширяется метод из модуля, отличного от модуля формы:

`79; Разработчику предлагается выбрать аннотацию для метода ( Перед , После или Вместо ). При этом полужирным шрифтом выделяются те расширения метода, которые уже существуют в расширении.

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

`79; Если выбран несуществующий способ расширения, то будет создан новый метод в расширении, который будет предваряться соответствующей аннотацией.

`79; Для функций недоступны аннотации Перед и После .

`79; Для процедуры недоступно:

`79; Аннотация Вместо , если уже существуют методы с аннотациями Перед или После ;

`79; Аннотация Перед / После , если уже существует метод с аннотацией Вместо .

`79; Если расширяется метод из модуля формы:

`79; Если расширяемый метод является обработчиком одного события или одной команды, то предлагается выбрать, каким образом выполнить расширение выбранного метода: как расширение для обработчика события/команды или как расширение обычного метода.

`79; Если расширяемый метод является обработчиком для нескольких событий или команд, то будет сформировано предупреждение о том, что данный метод не может быть расширен как обработчик события/команды, и он будет расширен только как обычный метод. Затем будет предложено выбрать способ расширения метода.

`79; Для обычного метода, не являющего обработчиком какого-либо события, будет выполнено расширение метода с использованием аннотаций.

Следует учитывать, что если расширяемый метод обрамлен инструкциями препроцессора, то эти инструкции не будут перенесены в расширение.

При проверке соответствия описания расширяемого метода и метода расширения проверяются следующие характеристики методов:

`79; Количество параметров и признак передачи параметров «по значению» (ключевое слово Знач ).

`79; Метод является процедурой или функцией. Если определение метода изменяется с процедуры на функцию, а до этого процедура была расширена с применением аннотаций Перед / После , то аннотация будет заменена на аннотацию Вместо .

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

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

33.4.2.4. Взаимодействие нескольких расширений

При разработке расширений следует исходить из следующих предположений:

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

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

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

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

Если оба расширения одинаково обрамляют (аннотации Перед и После ) расширяемый метод, то исполнение схема исполнения встроенного языка будет выглядеть следующим образом:

Рис. 693. Схема взаимодействия. Пример 1

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

1. Будет вызван метод, отмеченный аннотацией Перед("Расширяемая") из Расширения2 .

2. Затем будет вызван метод, отмеченный аннотацией Перед("Расширяемая") из Расширения1 .

3. Затем будет вызван метод Расширяемая() из расширяемой конфигурации.

4. Затем, в обратном порядке (относительно списка расширений, т. е. Расширение1 и Расширение2 ), будут вызваны методы, отмеченные аннотациями После("Расширяемая") .

Т.е. вначале вызываются те методы расширений, которые разработчик отметил как вызываемые до исполнения расширяемого метода, затем исполняется собственно расширяемый метод, а затем вызываются те методы, которые разработчик отметил как вызываемые после исполнения расширяемого метода.

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

Рис. 694. Схема взаимодействия. Пример 2

Так произошло потом, что метод, отмеченный аннотацией Вместо , полностью заменяет собой расширяемый метод. Следует особо отметить, что если в этом примере поменять порядок регистрации расширений (первым будет Расширение2 , а последним R09; Расширение1 ), то единственным выполнившимся методом будет метод из Расширения1 .

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

33.4.2.5. Профили безопасности и расширение

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

Если прикладное решение работает в файловом варианте или в клиент-серверном варианте без профилей безопасности, то при подключении расширения:

`79; В обычном режиме исполнения встроенного языка R09; допустимо расширять как клиентские, так и серверные методы. Без ограничения места расположения методов.

`79; В безопасном режиме исполнения встроенного языка R09; будут расширяться только клиентские методы и серверные обработчики форм, которые установлены через панель свойств. К остальным серверным методам (аннотированные серверные методы модулей формы и серверные общие модули) расширение применяться не будет.

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

ps: оригинальные изображения взяты из источников

upd(ответ на комментарии Cyberhawk и Yashazz):

"Отказ=Истина", выставленный в одной подписке, не мешает срабатывать другой (т.е. процесс не прерывается)

утверждение верно для ОДНОГО события (в случае наличия нескольких подписок на одно и то же событие). Например, если есть 3 подписки на событие ПриЗаписи документа ПКО, то Отказ=Истина выставленный в одной из них не помешает срабатыванию других двух.

Отказ для каждого события проверяется в двух местах
1. После выполнения обработчика в модуле объекта/менеджера, включая все расширения.
2. После обработки всех подписок, включая все их расширения.
Т.е. если в п.1 выставили Отказ, то п.2 уже выполняться не будет. Думаю стоит это добавить в статью.

(с) tormozit

Процедуры-обработчики событий

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

Обратите внимание, что термин "Предопределенная процедура", который использовался в версии 7.х, теперь заменен на "процедура-обработчик события" или просто "обработчик события".

Ниже показана палитра свойств для формы элемента справочника "Номенклатура" с несколькими назначенными обработчиками событий:


За информацией о приемах работы с этой частью палитры свойств обращайтесь к документации: книга "Конфигурирование и администрирование", "Глава 3. Объекты конфигурации => Свойства элементов управления => Категория свойств События" (стр. 1 - 204)

Обратите внимание на важный момент, имя процедуры-обработчика событий может не совпадать с именем события . Для элементов управления чаще всего так и бывает, например, процедура "ТипЦенПриИзменении" обрабатывает событие "ПриИзменении" поля ввода для реквизита "ТипЦен", как показано на следующем рисунке:


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

Есть еще одна интересная возможность: одна и та же процедура может "обслуживать" несколько событий формы или элементов управления, в том числе от разных источников. Элемент управления, который инициировал событие, передается в качестве первого параметра в эту процедуру-обработчик (параметр "Элемент"), и при необходимости алгоритм может проанализировать, откуда пришло событие, и выполнить соответствующие действия.

Поясним это правило на конкретных примерах:

1. Процедуры-обработчики событий, расположенные в модуле приложения или модуле внешнего соединения, совпадают с именами событий:

  • ПередНачаломРаботыСистемы
  • ПриНачалеРаботыСистемы
  • ПриЗавершенииРаботыСистемы
  • ПередЗавершениемРаботыСистемы
  • ОбработкаВнешнегоСобытия

2. Имена процедур-обработчиков событий, расположенных в модуле объекта, тоже строго соответствуют именам событий:

для модуля документа (события объекта типа "ДокументОбъект")

  • ПередЗаписью
  • ПриЗаписи
  • ПриУдалении
  • ПриКопировании
  • ОбработкаЗаполнения (для обработки "ввода на основании")
  • ОбработкаПроведения
  • ОбработкаУдаленияПроведения
  • ПриУстановкеНовогоНомера

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

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

Ниже приведены несколько важных моментов, которые полезно помнить при работе с событиями:

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

Примечание 2. Если в процедурах-обработчиках модуля объекта нужно обратиться к самому объекту (текущий элемент справочника, текущий документ и т.д.), то для этого можно использовать свойство ЭтотОбъект. Оно содержит объект типа "СправочникОбъект", "ДокументОбъект" и т.д.

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


Заливкой выделены события, выполняющиеся в транзакции записи.

Последовательность событий при проведении документа из формы документа (провести и закрыть)


Заливкой выделены события, выполняющиеся в транзакции записи.

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


Заливкой выделены события, выполняющиеся в транзакции записи.

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

Расширение управляемой формы для документа. Возникает на клиенте перед выполнением записи объекта из формы. Процедура-обработчик данного события вызывается перед вызовом процедуры-обработчика события ПередЗаписью .

  • Отказ , тип Булево . Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина , запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь .
  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения». Параметр РежимПроведения может отсутствовать, если режим проведения в документе не определен.

Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере .

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

  • Отказ , тип Булево . Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина , запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь .
  • ТекущийОбъект , тип ДокументОбъект.ИмяДокумента . Записываемый объект.
  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

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

  • Отказ , тип Булево . Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина , то запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь .
  • РежимЗаписи , тип РежимЗаписиДокумента . В параметр передается текущий режим записи документа. Позволяет определить в теле процедуры режим записи. Изменение значения параметра позволяет изменить режим записи.
  • РежимПроведения , тип РежимПроведенияДокумента . В данный параметр передается текущий режим проведения. Изменение значения параметра позволяет изменить режим проведения.

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

  • Отказ , тип Булево . Признак отказа от записи документа. Если в теле процедуры-обработчика установить данному параметру значение Истина , то запись документа выполнена не будет. Значение по умолчанию: Ложь .

Расширение управляемой формы для документа. Возникает на сервере при записи объекта из формы. Процедура-обработчик вызывается после записи объекта (после события ПриЗаписи объекта) в базу данных, но до окончания транзакции записи.

  • Отказ , тип Булево . Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина , то запись произведена не будет. Значение по умолчанию: Ложь .
  • ТекущийОбъект , тип ДокументОбъект.ИмяДокумента . Записываемый документ.
  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

Расширение управляемой формы для документа. Вызывается после записи объекта на сервере и после завершения транзакции.

  • ТекущийОбъект , тип ДокументОбъект.ИмяДокумента . Записываемый объект.
  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

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

  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере .

Читайте также: