Всем привет.
Поискал на Инфостарте и не нашел подобной темы, надеюсь, что это не "баян". Итак, друзья.
Ковыряясь в конфигураторе, случайно допустил, как мне казалось, ошибку в коде, используя в качестве процедуры описания оповещения серверную не экспортную процедуру, но, как оказалось, это работает.
При этом, если обратиться к ИТС, то станет очевидно, что процедура обязательно должна быть экспортной, однако работает и так. Если же использовать клиентскую процедуру, то "экспорт" обязателен. Обновление: на платформе 8.13 и далее экспорт писать обязательно.
Кроме того, есть возможность использовать сразу серверную процедуру, если того требует задача, без промежуточного "клиентского" звена - это тоже оказалось неожиданным, так как во всех мануалах, да и на ИТС во всех скриншотах указывается, что процедура используется "&НаКлиенте" и с экспортом. Оказывается, все не так однозначно.
Объект встроенного языка ОписаниеОповещения
Назначение этого объекта - указать точку конфигурации, с которой должно быть продолжено исполнение кода после того, как пользователь закроет блокирующее окно. Этот объект содержит имя экспортируемой процедуры, которая начнёт выполняться, а также указание на модуль, в котором находится эта процедура.
Если процедура находится в том же модуле, в котором создаётся описание оповещения, то для указания на этот модуль используется значение ЭтотОбъект. Это новое свойство, реализованное для управляемой формы, команды командного интерфейса и общего модуля. Именно в этих модулях может находиться процедура обработки оповещения. Пример есть в разделе Вопрос в модуле команды, формы или в общем модуле.
Иногда возникает необходимость разместить обработчик оповещения не в том модуле, в котором создаётся описание оповещения, а в другом, например, в общем модуле. В таком случае вместо ЭтотОбъект можно указать имя общего модуля. Пример можно посмотреть в разделе Вопрос в модуле управляемого приложения.
Кроме этих параметров описание оповещения может содержать структуру с произвольными данными. Передача этих данных в обработчик оповещения может понадобиться для того, чтобы алгоритм, выполняемый после реакции пользователя, мог использовать значения, вычисленные перед открытием блокирующего окна. Такой пример можно посмотреть в разделе Как передать дополнительную информацию в форму, открываемую в блокирующем режиме.
ИЛИ
Особенность этого примера заключается в том, что нет возможности сослаться на модуль приложения с помощью свойства ЭтотОбъект. Поэтому процедуру, обрабатывающую оповещение, нужно располагать, например, в неглобальном клиентском общем модуле. В конструкторе описания оповещения на такой модуль можно сослаться, просто указав его имя:
Данная особенность обнаружена на платформе 8.3.12.1790, 8.3.13.1865 и 8.3.15.1534, но скорее всего появилась намного раньше, работает в тонком и толстом клиенте.