Подписка на событие ОбработкаПолученияФормы

1. sv_baranov 6 21.06.22 12:39 Сейчас в теме
Доброго времени. Кто-нибудь объясните мне как это работает.
Есть подписка на события ОбработкаПолученияФормы. Обработчик мы можем создать только в серверном модуле.
У обработчика есть следующие параметры:
Источник, ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка.

Все вроде понятно. Мы перехватываем получение формы для того чтобы можно было что-нибудь с ней сделать.
Но сделать с ней ничего нельзя.

Пишу код:

Если Параметры.Ключ.Пустая() Тогда
	ЭлементОбъект = Источник.СоздатьЭлемент();
Иначе
	ЭлементОбъект = Параметры.Ключ.ПолучитьОбъект();
КонецЕсли;                                    
Ключ = Новый Структура("Ключ", ЭлементОбъект.Ссылка);
ФормаЭлемента = ЭлементОбъект.ПолучитьФорму("Документ."+Источник.ПустаяСсылка().Метаданные().Имя+".Форма.ФормаОбъекта", Ключ);


И... Ничего. Возвращает ФормаЭлемента Неопределено.
Перерыл все что можно.
Логично что форма возвращаться может только на клиенте. Хотя есть в форме процедура "ПриСозданииНаСервере".

Как получить форму для изменения непосредственно перед тем как она будет отображена пользователю, и при этом не привязываться к конкретному документу?
По теме из базы знаний
Найденные решения
8. SlavaKron 21.06.22 14:16 Сейчас в теме
(6) Для конфигураций на БСП есть лазейки через процедуры, которые вызываются ПриСозданииНаСервере и передают на сервер форму объекта:
ПодключаемыеКоманды.ПриСозданииНаСервере
ВерсионированиеОбъектов.ПриСозданииНаСервере
Можно в расширении добавить свой код для одной из этих процедур для универсальной обработки открываемой формы на сервере.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 21.06.22 13:00 Сейчас в теме
(1)
Если Параметры.Свойство("Ключ") И ЗначениеЗаполнено(Параметры.Ключ) Тогда
   ВидОперации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Параметры.Ключ, "ВидОперации");
КонецЕсли;
Если ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары Тогда
   ВыбраннаяФорма = "ФормаДокументаТовары";
ИначеЕсли ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Услуги Тогда
   ВыбраннаяФорма = "ФормаДокументаУслуги";
ИначеЕсли ...
КонецЕсли;
Показать
3. SlavaKron 21.06.22 13:18 Сейчас в теме
(1) Подписка на получение формы вам не подойдёт. Тут скорее подойдёт подписка на ОбработкаЗаполнения объекта. О том, чтобы получать универсально форму перед открытием на сервере в подписке лучше забыть.
5. sv_baranov 6 21.06.22 14:06 Сейчас в теме
(3) Обработка заполнения та же серверная процедура. Не подойдет...
7. SlavaKron 21.06.22 14:14 Сейчас в теме
9. sv_baranov 6 21.06.22 14:16 Сейчас в теме
(7) Моя задача добавить команду(кнопку) в каждую открываемую форму. Независимо от того какой документ был открыт.
11. SlavaKron 21.06.22 14:19 Сейчас в теме
(9) Это можно сделать только на сервере. Сделайте расширение процедуры Перед для ПодключаемыеКоманды.ПриСозданииНаСервере и там добавляйте, что хотите. Обработчики команды придётся привязывать к процедурам Подключаемый_ВыполнитьКомандуНаСервере или Подключаемый_ВыполнитьКоманду. В общем, та еще задачка, если не разрешается изменять форму.
12. sv_baranov 6 21.06.22 15:48 Сейчас в теме
(11)
Спасибо. Так и сделал. Уже летает.
Задача не тривиальная. Сделать расширение для интеграции. В каждой форме должна появиться кнопка "Создать заявку программисту". Создается док в расширении и дальше синхронизируются базы в части этого документа. Т.о. будет сервисная база с заявками и любая конфа (на БСП) сможет использовать это расширение.
4. EVKash 14 21.06.22 13:42 Сейчас в теме
(1)
подписка на события ОбработкаПолученияФормы
нужна для того, чтобы в определенных условиях можно было открыть ту или иную форму объекта.
(1)
Как получить форму для изменения непосредственно перед тем как она будет отображена пользователю, и при этом не привязываться к конкретному документу?
В лоб никак. Обычно в ПриСозданииНаСервере вызывают процедуру общего модуля. В УТ11 например в абсолютном большинстве форм вызывается
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
6. sv_baranov 6 21.06.22 14:11 Сейчас в теме
(4) Проверил в БП нет такой процедуры. А жаль - решило бы мой вопрос.
8. SlavaKron 21.06.22 14:16 Сейчас в теме
(6) Для конфигураций на БСП есть лазейки через процедуры, которые вызываются ПриСозданииНаСервере и передают на сервер форму объекта:
ПодключаемыеКоманды.ПриСозданииНаСервере
ВерсионированиеОбъектов.ПриСозданииНаСервере
Можно в расширении добавить свой код для одной из этих процедур для универсальной обработки открываемой формы на сервере.
10. sv_baranov 6 21.06.22 14:18 Сейчас в теме
(8) Спасибо. Я забыл совсем про подключаемые команды... Именно то что нужно. Перехватить создание формы на сервере и добавить туда команду.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот