Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 08:33

Создание нескольких полей ввода с реквизитами в цикле

Автор Alex345, 30 июл 2021, 14:25

0 Пользователей и 1 гость просматривают эту тему.

Alex345

Всем привет, столкнулся с такой проблемой, что нужно создать несколько полей ввода на каждой группе-странице через цикл. При вводе в поле "Менеджеры по снабжению" и клике по кнопке Добавление менеджера у меня создаются группы-страницы через цикл, но на каждой из этих страниц я пробую добавить простое поле ввода внутри этих созданных страниц, но пока не знаю как.



У меня есть вот такой цикл, который успешно создает новые группы-страниц с пользователями.

&НаСервере
Процедура ДобавитьСтраницыПоМенеджерам()
   
    Перем Сч, Страница, Надпись;
   
    Сч = 0;
   
    Для каждого эл_МенеджерыПоСнабжению Из МенеджерыПоСнабжению Цикл
       
        Сч = Сч + 1;
       
        ИмяСтраницы = СтрШаблон("Страница_%1", Формат(Сч, "ЧГ=0"));
       
        Страница = Элементы.Добавить(ИмяСтраницы, Тип("ГруппаФормы"), Элементы.ГруппаСтраницы);
        Страница.Вид = ВидГруппыФормы.Страница;
        Страница.Заголовок = эл_МенеджерыПоСнабжению.Значение
       
        ИмяНадписи = СтрШаблон("Надпись_%1", Формат(Сч, "ЧГ=0"));
       
        Надпись = Элементы.Добавить(ИмяНадписи, Тип("ДекорацияФормы"), Страница);
        Надпись.Заголовок = эл_МенеджерыПоСнабжению.Значение;
       
    КонецЦикла;
   
КонецПроцедуры

А вот мой успешный код который при клике по кнопке может создать поле ввода

&НаСервере
Процедура ТестоваяКнопкаНаСервере()
нРеквизиты = Новый Массив;
  Реквизит = Новый РеквизитФормы("Реквизит1", Новый ОписаниеТипов("Строка"), , "Созданное поле", Истина);
  нРеквизиты.Добавить(Реквизит);
  ИзменитьРеквизиты(нРеквизиты);

 
 Элемент = ЭтаФорма.Элементы.Добавить("Поставщики", Тип("ПолеФормы"), ЭтаФорма);
 Элемент.Заголовок = "Комментарий";
  Элемент.Вид = ВидПоляФормы.ПолеВвода;
  Элемент.ПутьКДанным = "Реквизит1";   
КонецПроцедуры

&НаКлиенте
Процедура ТестоваяКнопка(Команда)
    ТестоваяКнопкаНаСервере();
КонецПроцедуры

Я хотел бы как-то связать добавление поля ввода с предыдущем кодом, но у меня пока не получается это сделать успешно и приходят ошибки в строке ИзменитьРеквизиты(нРеквизиты) по причине того что Неуникальное имя реквизита хотя у меня стоит счетчик возможно я где-то делаю не так. И выглядит код на данный момент в связке вот таким образом:

&НаСервере
Процедура ДобавлениеМенеджераНаСервере()
         
    Перем Сч, Страница, Надпись;
   
    Сч = 0;
   
    нРеквизиты = Новый Массив; //Определяем массив добавляемых реквизитов

   
    Для каждого эл_МенеджерыПоСнабжению Из МенеджерыПоСнабжению Цикл
       
        Сч = Сч + 1;
       
        ИмяСтраницы = СтрШаблон("Страница_%1", Формат(Сч, "ЧГ=0"));
       
        Страница = Элементы.Добавить(ИмяСтраницы, Тип("ГруппаФормы"), Элементы.ГруппаСтраницы);
        Страница.Вид = ВидГруппыФормы.Страница;
        Страница.Заголовок = эл_МенеджерыПоСнабжению.Значение;
       
        ИмяНадписи = СтрШаблон("Надпись_%1", Формат(Сч, "ЧГ=0"));
        //добавление надписи
        Надпись = Элементы.Добавить(ИмяНадписи, Тип("ДекорацияФормы"), Страница);
        Надпись.Заголовок = эл_МенеджерыПоСнабжению.Значение;
       
        //добавление поля ввода
        ИмяПоля2 = СтрШаблон("Поле_%1", Формат(Сч, "ЧГ=0"));
       
        НоваяСтраница = Элементы.Добавить(ИмяПоля2, Тип("ГруппаФормы"), Элементы.ТестовыеСтраницы);
        НоваяСтраница.Вид = ВидГруппыФормы.Страница;
        НоваяСтраница.Заголовок = "Тест";
       
        Реквизит = Новый РеквизитФормы("Реквизит98" + (Сч + 1), Новый ОписаниеТипов("Строка"), , "Созданное поле", Истина);
        нРеквизиты.Добавить(Реквизит);
        ИзменитьРеквизиты(нРеквизиты);
   
   
        Элемент = Элементы.Добавить("ПоставщикиСтраницаСнабженец1", Тип("ПолеФормы"), НоваяСтраница);
        Элемент.Заголовок = "Комментарий";
        Элемент.Вид = ВидПоляФормы.ПолеВвода;
        Элемент.ПутьКДанным = "Реквизит5";

       
    КонецЦикла;
   
КонецПроцедуры

temrmal

 ИзменитьРеквизиты(нРеквизиты) у вас в цикле, а нРеквизиты за циклом создается и не очищается, поэтому при втором входе в цикл вылетит ошибка, он опять пытается первый реквизит добавить, вместе со вторым

Alex345


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск