Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Динамическое создание элементов, ошибка

Динамическое создание элементов, ошибка
Я
   Berman
 
10.08.20 - 13:10
Код выдает ошибку: "Invalid parameter value".

For Each Item in Array Do
        GroupItem = ThisForm.Items.Add("Group", Type("FormGroup"), ThisForm.Items.Tiles);
        DescriptionItem = Items.Add("Desc", Type("FormDecoration"),GroupItem);
        DescriptionItem.Title = Item.Get("Description");
        DescriptionItem.Type=FormDecorationType.Label;
    
EndDo;
Строка: "DescriptionItem = Items.Add("Desc", Type("FormDecoration"),GroupItem);"
По факту, ругается, на GroupItem, ибо, если вместо него подставлю ThisForm.Items.Tiles, все будет норм.
ThisForm.Items.Tiles - тоже группа, но создана не динамически.
Бьюсь много времени, при этом код по факту ничем не отличается от примеров другого кода. Прошу помощи.
   Ёпрст
 
1 - 10.08.20 - 13:25
Ну дык нефик с одним именем группы добавлять
   Ёпрст
 
2 - 10.08.20 - 13:25
в цикле
   SilverFalconi
 
3 - 10.08.20 - 13:25
(0) Создание группы:
Группа = Элементы.Добавить(НаименованиеГруппы, Тип("ГруппаФормы"), РодительГруппы);
Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;

Создание декорации(надписи):
Элемент = Элементы.Добавить(НаименованиеЭлемента,Тип("ДекорацияФормы"),Группа);
Элемент.Заголовок = "Надпись...";
Элемент.Гиперссылка = Истина;
   SilverFalconi
 
4 - 10.08.20 - 13:27
(2) а, тут проблема в цикле... Не заметил что он имя одинаковое делает. Не привык к синтаксису на анг. языке
   Жан Пердежон
 
5 - 10.08.20 - 13:28
это провал!
   Жан Пердежон
 
6 - 10.08.20 - 13:30
в защиту тс можно сказать, что тексты ошибок дин.добавления элементов/реквизитов формы крайне не информативны
   youalex
 
7 - 10.08.20 - 13:32
(0) У Группы формы укажи вид.

"1.Тексты модулей должны быть написаны на русском языке." (C)тандарты
   SilverFalconi
 
8 - 10.08.20 - 13:33
(6) Нуу, такое)
Там ругается на параметр, и выдает его номер по порядку. Можно понять что дело в названии.
Хотя и правда, не очень по информативно)
   Berman
 
9 - 10.08.20 - 13:39
Спасибо №7 и №3
Дело было в указании вида группы, ибо при коде вида:
        Counter = 1;
    For Each Item in Array Do
        GroupItem = ThisForm.Items.Add("Groups" + String(Counter), Type("FormGroup"), ThisForm.Items.Tiles);
        DescriptionItem = ThisForm.Items.Add("Desc" + String(Counter), Type("FormDecoration"),GroupItem);
        DescriptionItem.Title = Item.Get("Description");
        DescriptionItem.Type=FormDecorationType.Label;
        Counter = Counter+1;
    EndDo;
Крашилось все равно, я криво код для примера выдал без уникального идентификатора, прошу прощения
А вот при указании типа группы падать перестало. Благодарю душевно!
Конечный вид:
        Counter = 1;

    For Each Item in Array Do
        GroupItem = ThisForm.Items.Add("Groups" + String(Counter), Type("FormGroup"), ThisForm.Items.Tiles);
        GroupItem.Type=FormGroupType.UsualGroup;
        DescriptionItem = ThisForm.Items.Add("Desc" + String(Counter), Type("FormDecoration"),GroupItem);
        DescriptionItem.Title = Item.Get("Description");
        DescriptionItem.Type=FormDecorationType.Label;
        Counter = Counter+1;
    EndDo;
Всем спасибо!
   Жан Пердежон
 
10 - 10.08.20 - 13:40
(8) обычно это либо тип параметра неверный, либо значение не удовлетворяет каким-либо критериям (например, уникальности или значениям определенных свойств (тот же вид))
   Ёпрст
 
11 - 10.08.20 - 13:42
(9) если элементов будет больше 999, будет ошибка

Список тем форума
Рекламное место пустует  Рекламное место пустует
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.