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

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

Ведущий аналитик-разработчик 1С
Москва
зарплата от 230 000 руб. до 270 000 руб.
Полный день

1С:Эксперт по производительности
Москва
зарплата от 400 000 руб. до 950 000 руб.
Полный день

Ведущий аналитик 1С (ERP, ЗУП)
Краснодар
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Тверь
зарплата от 150 000 руб. до 250 000 руб.
Полный день