Подписка на событие ОбработкаПолученияФормы
Доброго времени. Кто-нибудь объясните мне как это работает.
Есть подписка на события ОбработкаПолученияФормы. Обработчик мы можем создать только в серверном модуле.
У обработчика есть следующие параметры:
Источник, ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка.
Все вроде понятно. Мы перехватываем получение формы для того чтобы можно было что-нибудь с ней сделать.
Но сделать с ней ничего нельзя.
Пишу код:
И... Ничего. Возвращает ФормаЭлемента Неопределено.
Перерыл все что можно.
Логично что форма возвращаться может только на клиенте. Хотя есть в форме процедура "ПриСозданииНаСервере".
Как получить форму для изменения непосредственно перед тем как она будет отображена пользователю, и при этом не привязываться к конкретному документу?
Есть подписка на события ОбработкаПолученияФормы. Обработчик мы можем создать только в серверном модуле.
У обработчика есть следующие параметры:
Источник, ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка.
Все вроде понятно. Мы перехватываем получение формы для того чтобы можно было что-нибудь с ней сделать.
Но сделать с ней ничего нельзя.
Пишу код:
Если Параметры.Ключ.Пустая() Тогда
ЭлементОбъект = Источник.СоздатьЭлемент();
Иначе
ЭлементОбъект = Параметры.Ключ.ПолучитьОбъект();
КонецЕсли;
Ключ = Новый Структура("Ключ", ЭлементОбъект.Ссылка);
ФормаЭлемента = ЭлементОбъект.ПолучитьФорму("Документ."+Источник.ПустаяСсылка().Метаданные().Имя+".Форма.ФормаОбъекта", Ключ);
И... Ничего. Возвращает ФормаЭлемента Неопределено.
Перерыл все что можно.
Логично что форма возвращаться может только на клиенте. Хотя есть в форме процедура "ПриСозданииНаСервере".
Как получить форму для изменения непосредственно перед тем как она будет отображена пользователю, и при этом не привязываться к конкретному документу?
По теме из базы знаний
- Подписка на событие получения управляемой формы
- Метод формирования движений в типовых регистрах нетиповыми регистраторами
- Оперативная доработка отчетов без обновления конфигурации или расширения
- Последовательности событий при проведении документа 1С. Шпаргалка
- Структурирование доработок обработчиков событий объектов и форм
Найденные решения
(6) Для конфигураций на БСП есть лазейки через процедуры, которые вызываются ПриСозданииНаСервере и передают на сервер форму объекта:
ПодключаемыеКоманды.ПриСозданииНаСервере
ВерсионированиеОбъектов.ПриСозданииНаСервере
Можно в расширении добавить свой код для одной из этих процедур для универсальной обработки открываемой формы на сервере.
ПодключаемыеКоманды.ПриСозданииНаСервере
ВерсионированиеОбъектов.ПриСозданииНаСервере
Можно в расширении добавить свой код для одной из этих процедур для универсальной обработки открываемой формы на сервере.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Если Параметры.Свойство("Ключ") И ЗначениеЗаполнено(Параметры.Ключ) Тогда
ВидОперации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Параметры.Ключ, "ВидОперации");
КонецЕсли;
Если ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары Тогда
ВыбраннаяФорма = "ФормаДокументаТовары";
ИначеЕсли ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Услуги Тогда
ВыбраннаяФорма = "ФормаДокументаУслуги";
ИначеЕсли ...
КонецЕсли;
Показать
(9) Это можно сделать только на сервере. Сделайте расширение процедуры Перед для ПодключаемыеКоманды.ПриСозданииНаСервере и там добавляйте, что хотите. Обработчики команды придётся привязывать к процедурам Подключаемый_ВыполнитьКомандуНаСервере или Подключаемый_ВыполнитьКоманду. В общем, та еще задачка, если не разрешается изменять форму.
(11)
Спасибо. Так и сделал. Уже летает.
Задача не тривиальная. Сделать расширение для интеграции. В каждой форме должна появиться кнопка "Создать заявку программисту". Создается док в расширении и дальше синхронизируются базы в части этого документа. Т.о. будет сервисная база с заявками и любая конфа (на БСП) сможет использовать это расширение.
Спасибо. Так и сделал. Уже летает.
Задача не тривиальная. Сделать расширение для интеграции. В каждой форме должна появиться кнопка "Создать заявку программисту". Создается док в расширении и дальше синхронизируются базы в части этого документа. Т.о. будет сервисная база с заявками и любая конфа (на БСП) сможет использовать это расширение.
(1)
(1)
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
подписка на события ОбработкаПолученияФормы
нужна для того, чтобы в определенных условиях можно было открыть ту или иную форму объекта.
(1)
Как получить форму для изменения непосредственно перед тем как она будет отображена пользователю, и при этом не привязываться к конкретному документу?
В лоб никак. Обычно в ПриСозданииНаСервере вызывают процедуру общего модуля. В УТ11 например в абсолютном большинстве форм вызывается
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
(6) Для конфигураций на БСП есть лазейки через процедуры, которые вызываются ПриСозданииНаСервере и передают на сервер форму объекта:
ПодключаемыеКоманды.ПриСозданииНаСервере
ВерсионированиеОбъектов.ПриСозданииНаСервере
Можно в расширении добавить свой код для одной из этих процедур для универсальной обработки открываемой формы на сервере.
ПодключаемыеКоманды.ПриСозданииНаСервере
ВерсионированиеОбъектов.ПриСозданииНаСервере
Можно в расширении добавить свой код для одной из этих процедур для универсальной обработки открываемой формы на сервере.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот