События Типов справочников и ТКЭД. Часть 3.

7 1

Цикл статей:

События Типов справочников и ТКЭД. Часть 1.

События Типов справочников и ТКЭД. Часть 2.

События Типов справочников и ТКЭД. Часть 3.

Таблица – Добавление До

Выполняется перед добавлением строки в таблицу. На момент выполнения события строка не существует ни на клиенте, ни на сервере.

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

Внимание! Нельзя использовать функции изменения значения реквизитов, работающие в контексте текущей строки таблицы, т.к. на момент срабатывания события строка еще не существует.

Таблица – Добавление После

Событие выполняется после добавления строки в таблицу. На момент выполнения события строка существует только на клиенте. При копировании строки к моменту срабатывания события все копируемые поля уже заполнены. 

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

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

Таблица – Удаление До

Событие выполняется до удаления строки из таблицы. На момент выполнения события строка еще существует и на клиенте, и на сервере. Событие не выполняется при отмене добавления строки. Отмена добавления строки происходит в том случае, когда указатель перемещается с вновь добавленной строки без заполнения хотя бы одного поля. Поле «№» не учитывается.

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

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

Таблица – Удаление После

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

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

Внимание! Нельзя использовать функции записи реквизитов, работающие в контексте текущей строки, т.к. на момент выполнения события удаляемой строки уже нет.

Запись  – Удаление Возможность

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

В случае ошибки в вычислениях события выводится сообщение об ошибке и удаление записи отменяется. 

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

Форма-карточка – Скрытие

Выполняется ДО события Запись – Закрытие – при закрытии записи, смене текущей записи, отмене изменений записи.

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

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

Запись  – Удаление До

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

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

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

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

Запись  – Удаление После

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

В случае ошибки в вычислениях события выводится сообщение об ошибке и удаление записи отменяется.

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

Нельзя использовать функции чтения-записи реквизитов, работающие в контексте текущей записи, т.к. они будут работать не с удаляемой записью.

Запись – Закрытие

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

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

Внимание! Нельзя использовать функции записи реквизитов, работающие в контексте текущей записи.

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

Набор данных – Закрытие

Выполняется после закрытия набора данных, то есть после выхода из компоненты. В данном событии можно «подчищать» информацию, сформированную во время работы с записью. Например, переменные окружения, данные реестра.

События ТКЭД

Набор событий для ТС и ТКЭД – одинаковый. Разница лишь в том, что при работе с ТКЭД, в наборе данных всегда одна запись. Поэтому все вышеописанное подходит и для работы с ТКЭД, однако есть следующая особенность: при открытии текста документа, карточки документа, состояния документа, создании версии документа – срабатывают два события Набор данных – Открытие и Запись – Открытие

 
Олег Копосов

По поводу событий таблицы полезно знать, что в веб-доступе, до версии 4.9, при сохранении записи справочника происходит удаление, а потом занесение по новой всех строк детальных разделов. Таким образом в веб-доступе при нажатии на кнопку "Сохранить" происходят события Таблица - Удаление до --> Таблица - Удаление после --> Таблица - Добавление до --> Таблица - Добавление после --> Сохранение возможность --> Сохранение до --> Сохранение после.

В веб-доступе 4.9 это поправили.

Авторизуйтесь, чтобы написать комментарий