При записи 10 типов документа мне нужно вставить дополнительную проверку, которая выводит сообщения пользователю. В подписка на события я эти сообщения получил и даже вывел, но Пользователь может нажать "Провести и закрыть" и ничего не увидит. Нашел решение на форуме https://forum.infostart.ru/forum9/topic102697/ путем добавления нескольких процедур ПриЗакрытииПосле, ПослеЗаписиПосле, ПослеЗаписиНаСервереПосле. Все работает, но события пришлось в расширение вручную добавить, а очень хочется сделать это программно, тк помимо того, что типов документов около 10, так еще и баз 9.
Могу добавить при создании на сервере
Форма.УстановитьДействие("ПослеЗаписи","Расш_ПослеЗаписиПосле");
Но эта команда переопределяет действующее событие и штатные процедуры не отрабатывают...
Как добавить программно Обработчик события ПриЗакрытииПосле для расширения?
(7) И что мешает сделать одну общую процедуру в общем модуле "при создании на сервере", и в ней уже определять тип документа и в зависимости от этого типа переопределять действия?
(8) это в принципе невозможно. Во время работы действие уже установлено. Можно только переназначить.
А в конфигураторе, это настройка сценария для компиляции формы. Невозможно программно переназначить сценарий. Это как и метаданные не редактируются программно во время работы приложения.
(5) Тогда в подписке пишите Сообщить("БлаБла),
а на форме в процедуре ПередЗакрытием вызывайте ПолучитьСообщенияПользователю(Истина). А полученный текст спокойно вставите в ПоказатьОповещениеПользователя.
С сервера больше никак сообщение от пользователя не передать, кроме как через сообщить.
ПолучитьСообщенияПользователю - Процедура, которая работает только на сервере, а при закрытии нельзя вызывать серверные процедуры по-моему. То, что можно добавить программно СписокЗначений, а потом прочитать из него проблем не вызывает.
Хочется красиво программно обработчик установить, вот чего хочется...
Могу добавить при создании на сервере
Форма.УстановитьДействие("ПослеЗаписи","Расш_ПослеЗаписиПосле");
Но эта команда переопределяет действующее событие и штатные процедуры не отрабатывают...
Через .ПолучитьДействие("ПослеЗаписи") можно узнать имя процедуры обработчика.
Хранить сопоставление формы и обработчика, скажем в параметрах сеанса.
Установить новую процедуру обработчик. В нем обращаться в общий модуль и получать имя оригинальной процедуры и вызывать ее.