События типа справочника могут быть связаны с записью справочника в целом («Запись», «Операция», «Форма-карточка»), с отдельной записью любой табличной части записи справочника («Таблица» – «Таблица6»), со всем набором записей справочника («Набор данных») или с отдельными реквизитами («Реквизит»).
Описание объектов и их событий представлено в таблице:
Объект |
Событие |
Описание события |
Особенности обработки |
---|---|---|---|
Набор данных |
Открытие |
Выполняется перед открытием набора данных, т.е. перед считыванием данных с сервера |
|
Закрытие |
Выполняется после закрытия набора данных, то есть после выхода из компоненты |
|
|
Запись |
Открытие |
Выполняется при открытии карточки существующей записи и при открытии карточки вновь добавляемой записи, после выполнения события «Добавление После». В случае ошибки в вычислениях события выводится сообщение об ошибке, но карточка открывается |
Внимание! Событие срабатывает не только при программном или визуальном открытии записи, но и при открытии свойств записи в списке записей (пункт меню Файл/Свойства записи) |
Закрытие |
Выполняется при закрытии карточки записи и при отмене добавления записи. Отмена добавления записи происходит в случае, если в карточке только что добавленной записи нажать на кнопку Отменить. В случае ошибки в вычислениях события выводится сообщение об ошибке, но карточка закрывается |
Нельзя использовать функции записи реквизитов, работающие в контексте текущей записи |
|
Добавление До |
Выполняется перед добавлением записи; на момент выполнения события запись не существует ни на сервере, ни на клиенте. В случае ошибки в вычислениях события выводится сообщение об ошибке, добавление записи отменяется |
Нельзя использовать функции чтения-записи реквизитов, работающие в контексте текущей записи, т.к. они будут работать не с добавляемой, а с текущей записью |
|
Добавление После |
Выполняется после добавления записи; на момент выполнения события запись существует только на клиенте. При копировании записи к моменту выполнения события все копируемые реквизиты уже заполнены. В случае ошибки в вычислениях события выводится сообщение об ошибке, добавление записи отменяется |
|
|
Сохранение Возможность |
Выполняется до начала транзакции на сохранение изменений записи на сервере. На момент выполнения события изменения в сохраняемой записи на сервере еще не отражены. В случае ошибки в вычислениях события выводится сообщение об ошибке, происходит возврат в режим изменения записи |
|
|
Сохранение До |
Выполняется до сохранения записи в рамках транзакции на сохранение. На момент выполнения события изменения в сохраняемой записи на сервере еще не отражены. В случае ошибки в вычислениях события выводится сообщение об ошибке, происходит возврат в режим изменения записи |
Нельзя использовать функции, выводящие диалоговые окна, т.к. это может привести к блокировкам работы других пользователей на время показа диалогового окна |
|
Сохранение После |
Выполняется при сохранении записи в рамках транзакции на сохранение. На момент срабатывания события изменения в сохраняемой записи на сервере уже отражены. В случае ошибки в вычислениях события выводится сообщение об ошибке, происходит возврат в режим изменения записи |
Нельзя использовать функции, выводящие диалоговые окна, т.к. это может привести к блокировкам работы других пользователей на время показа диалогового окна. Нельзя изменять значения реквизитов сохраняемой записи |
|
Удаление Возможность |
Выполняется до начала транзакции на удаление записи на сервере. На момент выполнения события запись существует и на клиенте, и на сервере. Событие не выполняется при отмене добавления записи. Отмена добавления записи происходит в случае, если в карточке только что добавленной записи нажать на кнопку Отменить. В случае ошибки в вычислениях события выводится сообщение об ошибке и удаление записи отменяется |
|
|
Удаление До |
Выполняется до удаления записи в рамках транзакции на удаление, на момент выполнения события запись существует и на клиенте, и на сервере. Событие не выполняется при отмене добавления записи. Отмена добавления записи происходит в случае, если в карточке только что добавленной записи нажать на кнопку Отменить. В случае ошибки в вычислениях события выводится сообщение об ошибке, удаление записи отменяется |
Нельзя использовать функции, выводящие диалоговые окна, т.к. это может привести к блокировкам работы других пользователей на время показа диалогового окна. Нельзя изменять значения реквизитов удаляемой записи |
|
Удаление После |
Выполняется после удаления записи в рамках транзакции на удаление. На момент выполнения события запись удалена и на клиенте, и на сервере. Событие не выполняется при отмене добавления записи. Отмена добавления записи происходит в случае, если в карточке только что добавленной записи нажать на кнопку Отменить. В случае ошибки в вычислениях события выводится сообщение об ошибке и удаление записи отменяется |
Нельзя использовать функции, выводящие диалоговые окна, т.к. это может привести к блокировкам работы других пользователей на время показа диалогового окна. Нельзя использовать функции чтения-записи реквизитов, работающие в контексте текущей записи, т.к. они будут работать не с удаляемой записью, а со следующей за удаляемой |
|
Отмена До |
Выполняется до отмены изменений в записи. На момент выполнения события вновь вставленная запись существует на клиенте, но не существует на сервере; неновая запись существует и на клиенте, и на сервере, в наборе данных содержится исходная информация записи. В случае ошибки в вычислениях события выводится сообщение об ошибке, отмена изменений не прерывается |
|
|
Отмена После |
Выполняется после отмены изменений в записи. На момент выполнения события вновь вставленная запись не существует ни на клиенте, ни на сервере; неновая запись существует и на клиенте, и на сервере, в наборе данных содержится восстановленная информация записи. В случае ошибки в вычислениях события выводится сообщение об ошибке, отмена изменений не прерывается |
|
|
Операция |
Выполнение |
Выполняется после события «Запись. Сохранение До» до сохранения изменений записи на сервере. На момент выполнения события изменения в сохраняемой записи на сервере еще не отражены. В случае ошибки в вычислениях события выводится сообщение об ошибке, происходит возврат в режим изменения записи |
Устаревшее событие, оставленное для совместимости с предыдущими версиями. Не рекомендуется использовать во вновь разрабатываемых типах справочников |
Форма-карточка |
Показ |
Выполняется при открытии записи, смене текущей записи, добавлении новой записи после выполнения события «Запись. Открытие». В случае ошибки в вычислениях события выводится сообщение об ошибке, но карточка открывается |
Нельзя использовать функции, выводящие диалоговые окна |
Скрытие |
Выполняется при закрытии записи, смене текущей записи, отмене изменений записи перед выполнения события «Запись. Закрытие». В случае ошибки в вычислениях события выводится сообщение об ошибке, но карточка закрывается |
Нельзя использовать функции, выводящие диалоговые окна |
|
Таблица–Таблица6 |
Добавление До |
Выполняется перед добавлением строки в таблицу. На момент выполнения события строка не существует ни на клиенте, ни на сервере. В случае ошибки в вычислениях события выводится сообщение об ошибке, добавление строки отменяется |
Нельзя использовать функции изменения значения реквизитов, работающие в контексте текущей строки таблицы, т.к. на момент срабатывания события строка еще не существует |
Добавление После |
Выполняется после добавления строки в таблицу. На момент выполнения события строка существует только на клиенте. При копировании строки к моменту срабатывания события все копируемые поля уже заполнены. В случае ошибки в вычислениях события выводится сообщение об ошибке, добавление строки не отменяется |
На момент выполнения события функция СпрТблСтрКол() и свойство IDataSet.RecordCount возвращают старое количество строк, т.е. без учета только что добавленной строки |
|
Удаление До |
Выполняется до удаления строки из таблицы. На момент выполнения события строка еще существует и на клиенте, и на сервере. Событие не выполняется при отмене добавления строки. Отмена добавления строки происходит в том случае, когда курсор уходит с вновь добавленной строки без заполнения хотя бы одного поля. Поле № не учитывается. В случае ошибки в вычислениях события выводится сообщение об ошибке и удаление строки отменяется |
После выполнения события и до фактического удаления строки принудительно очищаются значения всех числовых реквизитов удаляемой строки, как следствие выполняются все вычисления на этих реквизитах. Поэтому, если в карточке справочника есть итоговые реквизиты, суммирующие данные из таблицы, то для их корректного пересчета можно использовать функцию СпрТблИтог() в вычислении на суммируемом реквизите таблицы. В этом случае не нужно дублировать пересчет итоговых реквизитов в событии «Таблица.Удаление После» |
|
Удаление После |
Выполняется после удаления строки из таблицы. На момент выполнения события строка удалена только на клиенте. Событие не выполняется при отмене добавления строки. Отмена добавления строки происходит в том случае, когда курсор уходит с вновь добавленной строки без заполнения хотя бы одного поля. Поле № не учитывается. В случае ошибки в вычислениях события выводится сообщение об ошибке, удаление строки не отменяется |
Нельзя использовать функции записи реквизитов, работающие в контексте текущей строки, т.к. на момент выполнения события удаляемой строки уже нет |
|
Реквизит |
Вычисление |
Выполняется после изменения значения реквизита и предназначено для задания действий, которые должны быть выполнены при изменении значения реквизита |
|
Выбор из справочника |
Выполняется при нажатии на кнопку , а также при ручном вводе значения реквизита в карточке записи справочника. Предназначено для переопределения стандартного механизма выбора из справочника, например, чтобы ограничить доступ к записям справочника. А также для определения выбора из справочника для полей, у которых нет стандартного механизма выбора, например, для реквизита типа «Строка» |
Для выполнения события при ручном вводе значения реквизита параметр типа справочника Вызывать событие «Выбор из справочника» при ручном вводе значений реквизитов должен быть установлен в значение «Да». Подробнее см. в разделе «Параметры типов справочников» |