Изменение форм типовых конфигураций лучше выполнять программно.
Эта обработка упрощает добавление элементов на форму, генерируя код создания элементов, реквизитов и команд формы.
Обработка очень хорошая и нужная, но есть одна недоработочка.
Когда генерируется код добавления двух и более элементов формы, то указывается элемент формы перед которым вставлять.
Т.е. добавляется первый элемент, и в коде прописано что его нужно вставлять перед вторым.
А второго то еще нет! И возникает ошибка.
(107) Добавление элементов выполняются, начиная с последнего.
Поэтому при добавлении первого второй уже есть.
Если, конечно, в сформированном обработкой коде самостоятельно строки местами не меняете.
(109) Возможно потому, что добавление любого элемента выполняется вставкой, которая предполагает указание элемента перед которым нужно вставить, а не добавлением. Это предположение, могу ошибаться.
(109) Смысл в том, чтобы вставить элемент на нужное место.
Добавлять можно. Но добавление всегда добавляет элемент последним. Это удобно, если рисуем форму программно полностью с нуля. Но чаще мы не рисуем форму с нуля, а добавляем программно несколько элементов между имеющимися типовыми. В данном случае применима только вставка. А вставка требует указания места вставки.
Замечательная вещь, очень удобно, большое спасибо!
Надо было в Заказ добавить с десяток вкладок с каким-то немыслимым количеством элементов на них. В итоге, модификация формы - одна строчка, ну и дополнительный общий модуль (в т.ч. и для прочих нужд)! Знай себе копипасти - красота!
(на платформе 8.3.9.2170, в УНФ 1.6.7.43, при анализе ЗаказаПокупателя, в конце СформироватьДеревоСЭлементамиФормы(), споткнулось об ПутьБезТочек, когда она приняла значение "ОбъектПлатежныйКалендарь[0]" - поправил для себя, исключив недопустимые символы)
Добрый день. Решил попробовать обработку. Для 3.0 поправил процедуру ПриСозданииНаСервере() в глобальном модуле, как было сказано в тексте описания, но обработка ругается:
{Документ.РаспределительнаяСетка.Форма.ФормаДокумента.Форма(445)}: Значение не является значением объектного типа (Параметры)
Если Форма.Параметры.Свойство("ДекомпиляцияЭлементов") Тогда
Подскажите, что я забыл сделать. Тапками не кидайтесь - не шибко еще опытный
Добрый день! Только что опробовал на 8.3.13.1644. Очень помогло, большое спасибо)
Что заметил (создаю таблицу формы из дерева):
- НовыйЭлемент.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет; -автоматически не добавилось
- НовыйЭлемент.СохраняемыеДанные = Ложь; - зачем-то добавляется, этот флаг и так по-умолчанию Ложь
123.
user701287_darkowntheworld
07.04.19 21:46 Сейчас в теме
В "Декомпиляция управляемых форм 3.0.1 (с 8.3.5) (3.0 + разбор командной панели + клиент-сервер)" ошибка... Модуль формы
&НаКлиенте
Процедура ДеревоФормВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекСтрока = Объект.ДеревоФорм.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если НЕ ПустаяСтрока(ТекСтрока.ПолныйПутьКФорме) Тогда
//Имя справочника, имя документа, ....
РодительФормы = ТекСтрока.ПолучитьРодителя();
//Справочник, документ,....
ТипОбъекта = РодительФормы.ПолучитьРодителя();
СтруктИнфыОМетаданном = Новый Структура;
СтруктИнфыОМетаданном.Вставить("ТипОбъекта",ТипОбъекта.Имя);
СтруктИнфыОМетаданном.Вставить("ИмяОбъекта",РодительФормы.Имя);
СтруктИнфыОМетаданном.Вставить("ИмяФормы",ТекСтрока.Имя);
//Объект.ПолноеИмяФормы = ТекСтрока.ПолныйПутьКФорме;
ДекомпиляцияЭлементов = Новый Структура("АдресВоВременномХранилище,ИмяПодключеннойОбработки,ИмяВременногоФайла",Объект.АдресВоВременномХранилище,Объект.ИмяПодключеннойОбработки,Объект.ИмяВременногоФайла);
ПараметрыФормы = Новый Структура("ДекомпиляцияЭлементов",ДекомпиляцияЭлементов);
Объект.ПолныйПутьКФорме = ТекСтрока.ПолныйПутьКФорме;
ПолучитьФорму(ТекСтрока.ПолныйПутьКФорме,ПараметрыФормы);
ЗаполнитьДанныеПоХранилищуНаСервере();
//Развернуть дерево
Для Каждого Строка Из Объект.ДеревоФорм.ПолучитьЭлементы() Цикл
Если Строка.Имя = СтруктИнфыОМетаданном.ТипОбъекта Тогда
//Ищем объект
Для Каждого СтрокаОбъект Из Строка.ПолучитьЭлементы() Цикл
Если СтрокаОбъект.Имя = СтруктИнфыОМетаданном.ИмяОбъекта Тогда
//Ищем форму
Для Каждого СтрокаФормы Из СтрокаОбъект.ПолучитьЭлементы() Цикл
Если СтрокаФормы.Имя = СтруктИнфыОМетаданном.ИмяФормы Тогда
ИдентификаторСтроки = СтрокаФормы.ПолучитьИдентификатор();
// Было
//Элементы.ДревоФорм.ТекущаяСтрока = ИдентификаторСтроки;
// Надо
Элементы.ДревоФорм.ТекущаяСтрока = Объект.ДеревоФорм.НайтиПоИдентификатору(ИдентификаторСтроки);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
(125) Процедуру из общего модуля нельзя.
Однако во многих типовых есть как раз на такой случай отдельная процедура в форме "Подключаемый.....", которая из себя вызывает процедуру общего модуля. Можно попробовать подключить её и внести изменения в общий модуль.
Не взяла кнопки командной панели,заключенной в группу, табличной части Товары документа РеализацияТоваровУслуг.ФормаДокументаТовары БП3, при добавлении строк
(0)Добрый день!
Прошу разрешения на включение вашего инструмента в свободно распространяемый набор "Универсальные инструменты 1С" https://github.com/cpr1c/tools_ui_1c.
Обработка сейчас бесплатна для скачивания. По идее лицензия должна быть подходящей, но хотелось бы уточнить.
Поддержку и дальнейшее развитие готовы взять на себя.
Судя по тому, что обработка бесплатна для скачивания - файл можно здесь прикрепить.
Добавлен анализ некоторых новых свойств реквизитов для последних платформ.
И платформенные картинки разбираются.
(132) скачал вашу версию. Невозможно открыть, невозможно подключить.
Выдаёт ошибку: "Архив не является набором вариантов картинки, либо содержит некорректные варианты.".
Платформа 8.3.17.1549