Имя: Пароль:
1C
1С v8
"запись дампа" при открытии формы
0 alexshape
 
29.06.17
10:09
Пытаюсь программно создать на Упр форме страницы: РезультатЗапросаТаблица = ЗаполнитьГруппуАвтомобилиНаСервере();
    
    Имя = 1;
    Для каждого  Строка Из РезультатЗапросаТаблица Цикл
        
        Страница = Элементы.Добавить("СтраницаГруппыАвтомобили"+Имя, Тип("ГруппаФормы"), Элементы.Группа1);
        Страница.Вид = ВидГруппыФормы.Страница;
        Страница.Заголовок = Строка.Наименование;

        ДекорацияИмя = "ДекорацияГруппыАвтомобили"+Имя;
        Надпись = Элементы.Добавить(ДекорацияИмя,Тип("ДекорацияФормы"), Страница);
        Надпись.Заголовок = "Тест";
        Надпись.РастягиватьПоВертикали = Истина;
        Надпись.РастягиватьПоГоризонтали = Истина;
        Надпись.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Лево;
        Надпись.ВертикальноеПоложение = ВертикальноеПоложениеЭлемента.Верх;
        
        Имя = Имя+1;

    КонецЦикла;

КАк то так, все нормально создает, только после выхода из процедуры 1с выдает ошибку "Запись дампа" и вылетает. в чем причина не могу понять
1 lodger
 
29.06.17
10:14
ответ: не перерисовывайте форму и ее элементы когда она уже однажды была отправлена на клиент. это можно делать только при создании на сервере.
чисто технически можно, некоторые вещи даже не вешают 1с в дамп, но так делать не стоит вообще. плюс можно поэкспериментировать с версиями платформы - на некоторых разные вещи по разному отрисовываются.
2 alexshape
 
29.06.17
10:23
(1) Перенес все на "при создании на сервере", такая же ошибка
3 Волшебник
 
модератор
29.06.17
10:24
Ищите бесконечную рекурсию в функции ЗаполнитьГруппуАвтомобилиНаСервере
4 alexshape
 
29.06.17
10:27
(3) В том то и дело, он из цикла выходит, все создает что нужно, и после строки "КонецПроцедуры" Дамп
5 aleks_default
 
29.06.17
10:30
Может не помещать декорацию сразу на страницу, а создать промежуточную группу без отображения и в нее засунуть декорацию?
6 lodger
 
29.06.17
10:35
(2) тогда нарисуйте страницу и декорацию вручную, а потом остановите отладчик перед переходом на клиент и смотрите в чем отличия.
7 butterbean
 
29.06.17
10:39
вангую, что без надписи будет работать
8 Тихий омут
 
29.06.17
10:47
(0) у тебя там автомобилей сколько? а то может слишком тяжёлая форма получается. Вообще эта конструкция смущает - "СтраницаГруппыАвтомобили"+Имя, в ней автоматическое преобразование числа к строке может неразрывный пробел добавить, мож из-за этого и отваливается, если авто больше 999 :)
9 alexshape
 
29.06.17
10:52
(5) С группой не получается, (6) Буду пробовать, (7) Без надписи все ок, только пустая страница мне ни к чему, а вместо надписи ставлю поле к примеру та же ошибка. (8) Авто не много, 5 штук. Если даже принудительно к строке то все равно. ошибка
10 Тихий омут
 
29.06.17
10:59
(9) ок. Ещё пару предположений.
Емнип, не рекомендуется использовать ключевые слова как имена переменных, вот здесь у тебя есть такое сомнительное место:
Для каждого  Строка Из РезультатЗапросаТаблица

И второе - в наименованиях авто нет каких-нибудь непечатных символов? Вот в этой строке Страница.Заголовок = Строка.Наименование устанавливаешь заголовок, а там мож есть нечто такое, от чего при попытке отрисовать форму 1с  валится
11 alexshape
 
29.06.17
11:17
(10) Короче пока не получается, нет, я вместо Заголовка уже тестовую строку ставлю все равно ошибка.
12 alexshape
 
29.06.17
11:43
Хвала богам) Все получилось. Оказалось банальная невнимательность. Вот в это строке:
Страница = Элементы.Добавить("СтраницаГруппыАвтомобили"+Имя, Тип("ГруппаФормы"), Элементы.Группа1);
Группа1 - это обычная группа, нужно ставить группу  с типом страницы
13 alexshape
 
29.06.17
15:29
Спасибо всем кто помогал