Глава 1. Понятие обработчика событий

Общие сведения. 1

Последовательность выполнения обработчиков. 3

Создание внешнего обработчика. 5

Общие сведения

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

Обработчики событий подразделяются на внутренние и внешние.

Внутренние обработчики

Внутренние обработчики написаны на языке C++ и спрятаны в коде программы в файлах с расширением «*.dll» (sbis.dll и muzzle.dll - основные библиотеки программы). Список таких обработчиков довольно разнообразен, каждый из них отвечает за обработку определённых действий в программе. Вот только некоторый перечень типовых обработчиков СБиС++:

Имя

Область действия

LinkLCond

Связанные записи

LinkTreeCond

Иерархический список

ColorHandler

Цвета и пометки

ShiftHandler

Перемещение строк

LinkTypeByteCond

Выборка по связи и типу

AuthorHandler

Авторство

UniqNumHandler

Формирование уникальных номеров

FixChangeHandler

Фиксация изменений

BranchLeafConverter

Преобразование узла в лист и обратно

Обработчики группы Legacy

Наследие лиц, документов, номенклатуры и т. д.

С полным списком всех доступных в программе обработчиков вы столкнётесь, например, при назначении обработчика событий в описании формата таблицы или обработчика записей в диалоге:

НЕ нашли? Не то? Что вы ищете?

Рис. 1-1 – Выбор обработчика событий в описании формата таблицы «Документы»

Внешние обработчики

Внешние обработчики в отличие от внутренних находятся в отдельных файлах со следующими расширениями:

Расширение

Описание содержимого

.sel-hdl

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

.dlg-hdl

Обработчик событий диалогов

.bar-hdl

Обработчик событий панели инструментов

.rec-hdl

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

.tbl-hdl

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

.htm-hdl

Обработчик событий html-отчетов

Они написаны на языке СБиС++ и доступны для создания и редактирования любому пользователю.

Крайне не рекомендуется создавать обработчик для всей таблицы БД («.tbl-hdl»), лучше создавать обработчик событий окна или диалога.

Программа уже содержит некоторый набор обработчиков, необходимых при работе в СБиС++. Чтобы их увидеть, можно воспользоваться клавишами <Ctrl+O>. В появившемся окне выбрать вариант «Открыть обработчик»:

Рис. 1-2 – Список всех доступных в программе обработчиков

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

Последовательность выполнения обработчиков

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

Рис. 1-3 – Список обработчиков для приходной накладной

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

В списке могут показываться и правила операций (в нашем примере это «Приобретены ТМЦ»). С точки зрения языка СБиС++ правило операции – это тоже некоторый обработчик событий, описанных в этом правиле. Подробнее на этом остановимся немного позже.

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

Рис. 1-4 – Список всех доступных обработчиков

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

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

{
перем пРезультат=СледФункция();
...
вернуть пРезультат;
}
# сначала выполняются действия, описанные в следующей функции, а уже потом функция переходит к выполнению своих действий.

Создание внешнего обработчика

Для того, чтобы создать новый обработчик или отредактировать уже существующий, нужно стоя на объекте нажать <Ctrl+Shift+F12>. Если к данному объекту уже привязаны обработчики, то появится их список и отдельным пунктом «Создать новый обработчик». Если внешних обработчиков к этому объекту ещё не привязано, то программа выдаст соответствующее сообщение:

Рис. 1-5 – Запрос на создание внешнего обработчика

По умолчанию каждый новый обработчик создается в модуле «!Заплатки» в файле с соответствующим расширением и названием выборки. При желании обработчик можно переместить в любой файл с описанием обработчиков событий нужного объекта.

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

Рис. 1-6 – Список шаблонов событий

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

При выборе уже имеется некоторое краткое описание выполнения этой функции:

функция ИмяДиалога( пИмя )
#
# Возвращает имя диалога для редактирования данной записи
# в пИмя передаётся текущее имя диалога
#
{
вернуть СледФункция();
}

В функции могут передаваться переменные, описание которых также приводится. Список допустимых функций для данного файла отображается при нажатии <Ctrl+L>:

Рис. 1-7 – Список функций данного файла

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