Ловкое жонглирование полями в форме организации. УФ
Клиент захотел в карточке организации иметь два дополнительных флажка. Я добавил их через расширение.
Но возник вопрос с позиционированием элементов в форме.
Если это ИП, то нужно размещать справа от фамилии и имени.
Если это ООО, то нужно размещать справа от наименования сокращенного и полного.
В итоге я потратил некоторое количество времени, чтобы жонглировать полями и чтобы они конкретно отображались при смене вида ИП/ООО:
&НаСервере Процедура доп_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) Группа = Элементы.Добавить("доп_Группа1", Тип("ГруппаФормы")); Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа; Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; Элемент = Элементы.Добавить("доп_Поле1", Тип("ПолеФормы"), Группа); Элемент.Вид = ВидПоляФормы.ПолеФлажка; Элемент.ПутьКДанным = "Объект.доп_Поле1"; Группа = Элементы.Добавить("доп_Группа2", Тип("ГруппаФормы")); Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа; Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; Элемент = Элементы.Добавить("доп_Поле2", Тип("ПолеФормы"), Группа); Элемент.Вид = ВидПоляФормы.ПолеФлажка; Элемент.ПутьКДанным = "Объект.доп_Поле2"; доп_РазместитьГруппы(); КонецПроцедуры &НаСервере Процедура доп_РазместитьГруппы() //Восстанавливаем положение групп доп_ВосстановитьГруппу("ФамилияИП", "ОтчествоИП"); доп_ВосстановитьГруппу("ИмяИП", "ФамилияИП"); доп_ВосстановитьГруппу("НаименованиеПолное", "Наименование"); доп_ВосстановитьГруппу("НаименованиеСокращенное", "НаименованиеПолное"); //Размещаем в зависимости от физлица Если ЭтоФизЛицо Тогда доп_РазместитьГруппу("доп_Группа1", "ФамилияИП", "доп_Поле1"); доп_РазместитьГруппу("доп_Группа2", "ИмяИП", "доп_Поле2"); Иначе доп_РазместитьГруппу("доп_Группа1", "НаименованиеСокращенное", "доп_Поле1"); доп_РазместитьГруппу("доп_Группа2", "НаименованиеПолное", "доп_Поле2"); КонецЕсли; КонецПроцедуры &НаСервере Процедура доп_РазместитьГруппу(ИмяГруппы, Имя1, Имя2) //Размещаем группу перед элементом 1 Элементы.Переместить(Элементы[ИмяГруппы], Элементы[Имя1].Родитель, Элементы[Имя1]); //Объединяем в группу элемент 1 и элемент 2 Элементы.Переместить(Элементы[Имя1], Элементы[ИмяГруппы]); Элементы.Переместить(Элементы[Имя2], Элементы[ИмяГруппы]); КонецПроцедуры &НаСервере Процедура доп_ВосстановитьГруппу(ИмяЭлемента, ИмяПеред) //Возвращаем на стандартное место те элементы, которые двигали Элементы.Переместить(Элементы[ИмяЭлемента], Элементы[ИмяПеред].Родитель, Элементы[ИмяПеред]); КонецПроцедуры &НаСервере &После("ИнициализироватьФорму") Процедура доп_ИнициализироватьФорму() доп_РазместитьГруппы(); КонецПроцедуры
Но в итоге получилось, что из-за добавления новых групп поля разъезжаются:
И вообще, сложно — не есть хорошо.
Поэтому я предложил клиенту разместить оба флажка справа от поля Вид.
И да, решил что отлаживать буду не на своей базе, а на типовой, потому что в своей я не смог поменять вид у ИП на ООО, а заводить новую организацию не хочу.
Среда: БП 3.0.96.35 Объем: 1 час
1 час на возню в гуе с двумя полями. Напоминает трах со слоями в 7.7. Кто придумал уф в текущем виде и пропагандирует это как хорошее средство для организации интерфейса — надо в голову гвоздь забить. Как оно себя вести будет вообще предсказать невозможно
это да.
А не надо было «прыгать элементам», надо было контролы привязать к одному и тому же реквизиту и за счет видимости (условного оформления) показывать тот или иной
В итоге я так и предложил клиенту.
а клиенту не побоку как оно там реализовано, если внешне одинаково?
там будет ставиться во много баз это расширение.
помимо этого хотелось бы не очень часто обновлять, а тягу 1с к переменам все знают.
поэтому если привязаться только к одному полю, это надежнее.