Имя: Пароль:
1C
 
УФ : Программное добавление/ изменение реквизитов для различных форм в одном модуле
0 bvb
 
26.01.23
14:06
Добрый день

Покритикуйте меня, ибо нет уверенности что делаю правильно.


Мне нужно в расширении в различных формах документах и списках документов добавлять / менять внешний вид  реквизитов.
Для этого ранее я добавлял форму в расширении и в процедуре добавлял
&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    НовыйЭлемент = Элементы.Вставить……

Это не удобно :
Нужно добавлять все изменяемые формы в расширении (а их много), а так как они меняются почти с каждым обновлением, то в расширении тоже нужно жать кнопку обновить.

И я решил сделать это все в одно месте :
При создании на сервере всегда вызывается ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
Я добавил в расширение модуль “Подключаемые команды”
Добавил в нем к ПриСозданииНаСервере

&После("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Форма, ПараметрыРазмещения)    
    
Если Форма.ИмяФормы = "Документ.ГТДИмпорт.Форма.ФормаДокумента" Тогда    НовыйЭлемент = Форма.Элементы.Вставить…

правильно ли я сделал ?
1 Fedor-1971
 
26.01.23
14:20
(0) А что смущает?
2 Мультук
 
гуру
26.01.23
14:59
(0) Все зависит от конфигурации

Например в УТ почти в каждой "ФормаДокумента" есть вызовы

СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

ПодключаемыеКоманды.ПриСозданииНаСервере(...)

А вот в форме документ.КассоваяСмена.ФормаДокумента этих вызовов нет. Печаль.

В остальном -- "все так делают".
3 mistеr
 
26.01.23
15:26
(0) Случайно не аналог допреквизитов из БСП велосипедишь?

Кстати, можно туда встроиться.
4 bvb
 
26.01.23
15:30
(1) Перованачальная была задумка использовать подписку на события.
5 bvb
 
26.01.23
15:31
Теперь бы вот как то перехватить обработчики события реквизитов
без затаскивания формы в расширения

&НаКлиенте
Процедура Расш_ТоварыНоменклатураНачалоВыбораПосле(Элемент, ДанныеВыбора, СтандартнаяОбработка)
6 Мультук
 
гуру
26.01.23
15:52
(5)

Это не про 1С
Ты можешь программно подменить обработчик реквизита на другой обработчик, но лежать он должен в модуле формы, увы.
7 FIXXXL
 
26.01.23
17:02
(5) сейчас нет ЕРП под рукой, насколько помню делал что-то типа:
Обработчиком назначал процедуру родной формы Подключаемый_ЧегоТоТам, она заходила в переопределяемый модуль, далее перенаправление в мой общий модуль, где уже парсил через попытку кто пришел и откуда и вызывал уже нужную процедуру моего модуля
8 bvb
 
27.01.23
11:03
(8)Звучит очень круто но непонятно ничего