Как создать несколько групп с реквизитами внутри? В зависимости от определенного значения

1. arsen_botashev 19.04.19 17:20 Сейчас в теме
Допустим пользователь вводит в поле ввода число 4 и жмет сформировать, при нажатии на конпку сформировать выполняется следующий код.
так вот как 4 раза добавить эту группу и эти реквизиты, и при этом менять им названиея, потому что просто в цикл нельзя засунуть, чтоб 4 раза не писать почти один и тот же код
Создаю реквизиты
ГруппаТовары = Элементы.Добавить("Месяцы", Тип("ГруппаФормы"), Элементы.Информация);	// Добавляет группу на форму
	ГруппаТовары.Группировка = ГруппировкаКолонок.Вертикальная;
	ГруппаТовары.ОтображатьВШапке = Истина;
	ГруппаТовары.Заголовок = "Месяц";
	// Добавить реквизит.
	
	ТипыРеквизита = Новый Массив;
	ТипыРеквизита.Добавить(Тип("Число"));	
	ОписаниеТиповДляРеквизита = Новый ОписаниеТипов(ТипыРеквизита);	
	РеквизитРеализация = Новый РеквизитФормы("Реализация", ОписаниеТиповДляРеквизита, "Объект.Информация", "Реализация, не более дн", Истина); 
	РеквизитЗаменаБрака = Новый РеквизитФормы("ЗаменаБрака", ОписаниеТиповДляРеквизита, "Объект.Информация", "Замена брака, не более дн", Истина);
	ДобавляемыеРеквизиты = Новый Массив;
	ДобавляемыеРеквизиты.Добавить(РеквизитРеализация);
	ДобавляемыеРеквизиты.Добавить(РеквизитЗаменаБрака);
	ИзменитьРеквизиты(ДобавляемыеРеквизиты);	
	НовыйРеализация = Элементы.Добавить("Реализация", Тип("ПолеФормы"), ГруппаТовары);	
	НовыйРеализация.ПутьКДанным = "Объект.Информация.Реализация"; 
	НовыйРеализация.Вид = ВидПоляФормы.ПолеВвода; 
	НовыйЗаменаБрака = Элементы.Добавить("ЗаменаБрака", Тип("ПолеФормы"), ГруппаТовары);	
	НовыйЗаменаБрака.ПутьКДанным = "Объект.Информация.ЗаменаБрака"; 
	НовыйЗаменаБрака.Вид = ВидПоляФормы.ПолеВвода;
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. Xershi 1484 21.04.19 12:04 Сейчас в теме
(1) реквизиты формы можно создавать и удалять по кнопке сколько угодно.
Но лучше подумать над мехазмом БСП для доп реквизитов. Думаю работать будет лучше
2. tgnike 19.04.19 17:34 Сейчас в теме
Никак - это реквизиты формы, они не сохраняются в БД.
Чтобы их сохранить нужно добавить "реальные" реквизиты в объект и связать их с программными или в обработчиках сохранять.
3. arsen_botashev 19.04.19 17:37 Сейчас в теме
(2)а зачем тогда сохраняемые данные придумали?
4. Sander80 82 19.04.19 18:13 Сейчас в теме
(3)
Свойство реквизита формы Сохраняемые данные является признаком того, что интерактивное изменение реквизита будет приводить к попытке блокировки данных формы для редактирования, а также к автоматической установке признака модифицированности формы.
5. Sander80 82 19.04.19 22:02 Сейчас в теме
Но не суть.
Как-то в таком стиле

МассивИменРеквизитов = Новый Массив;
МассивИменРеквизитов.Добавить(""Реализация");
МассивИменРеквизитов.Добавить(""ЗаменаБрака");

ДобавляемыеРеквизиты = Новый Массив;
Для Каждого ИмяРеквизита Из МассивИменРеквизитов Цикл
    Реквизит = Новый РеквизитФормы(ИмяРеквизита, ОписаниеТиповДляРеквизита, "Объект.Информация", ИмяРеквизита + ", не более дн", Истина);           
   ДобавляемыеРеквизиты.Добавить(Реквизит);
КонецЦикла;
ИзменитьРеквизиты(ДобавляемыеРеквизиты);    

Для Каждого ИмяРеквизита Из МассивИменРеквизитов Цикл
   НовыйЧТОТОТАМ = Элементы.Добавить(ИмяРеквизита, Тип("ПолеФормы"), ГруппаТовары);    
   НовыйЧТОТОТАМ.ПутьКДанным = "Объект.Информация." + ИмяРеквизита;
    НовыйЧТОТОТАМ.Вид = ВидПоляФормы.ПолеВвода;
КонецЦикла;
Показать


Возможно, местами придется использовать функцию Вычислить.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот