Имя: Пароль:
1C
1С v8
Общая форма элемента для нескольких справочников
0 alext88
 
17.04.17
14:18
Приветствую, коллеги! Есть 2 справочника (Справочник1 и Справочник2), схожие по структуре и форма элемента у них одинаковая. Чтобы не вносить изменения в формы дважды, решил сделать общую форму элемента для этих справочников. Перенес форму элемента Справочник1 в общие формы, настроил подписку на событие ОбработкаПолученияФормы.
Теперь при открытии элемента из Справочник1 у меня открывается полностью заполненная форма, а при открытии формы элемента из Справочник2 открыватся форма создания нового элемента.
Догадываюсь, что это из-за типа основного реквизиты формы. Но не соображу как его поменять... Подскажите, пожалуйста, как это сделать?
1 elCust
 
17.04.17
14:21
А, как реализована подписка "ОбработкаПолученияФормы"?
2 alext88
 
17.04.17
14:23
Процедура ПолучениеФормыОбработкаПолученияФормы(Источник, ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) Экспорт
    Если ВидФормы="ФормаОбъекта" Тогда
        СтандартнаяОбработка=Ложь;
        Параметры.Вставить("КлючОбщейФормы",Параметры.Ключ);
        ВыбраннаяФорма="ОбщаяФорма.ФормаЭлемента";
    КонецЕсли;
КонецПроцедуры
3 Вафель
 
17.04.17
14:23
основной реквизит какого типа?
4 1dvd
 
17.04.17
14:24
что такое основной реквизит общей формы? Ни разу такого не видел
5 alext88
 
17.04.17
14:26
(3), (4) основной реквизит скопировался вместе с формой элемента справочника (при копировании формы элемента в общие формы). Сейчас у него тип СправочникОбъект.Справочник1
6 Dmitrii
 
гуру
17.04.17
14:33
(0) >> как это сделать?

Никак.
Не занимайтесь ерундой.
Проще две отдельные одинаковые формы иметь.
При большом количестве однотипного кода состряпать общий(е) модуль(и) с соответствующими процедурами. Как, например, в типовой бухне сделано, где несколько форм объекта у документа ПоступлениеТоваровУслуг, но значительная часть однотипных алгоритмов их работы вынесена в общие модули.

Если же рисовать единую форму, то придется отказаться от основного реквизита формы и соответственно описывать вручную всю стандартную логику (Записать, Снять/установить пометку удаления и т.п.)