Имя: Пароль:
1C
1С v8
Проверить наличие параметров макета для заполнения.
0 mzelensky
 
11.07.12
10:44
Доброго всем!
Есть стандартный макет с кучей параметров + у пользователя есть возможность подгрузить этот макет и подправить его, затем сохранить и использовать для печати. В связи с этим "изменить" появляется вероятность того, что пользователь уберет какой-то параметр, а программа при формировании печатной формы попытается к нему обратиться и вуаля - страшная ОШИБКА!

Покапался в СП...для параметров макета не нашел метод "НАЙТИ" (как, например в ТЧ). Следовально - как быть в данной ситуации? Как проверять наличие параметра?
1 mzelensky
 
11.07.12
10:45
(0) можно конечно заполнение каждого параметра посадить на попытку, но это пипец...там параметров в макете десятка 3-4.
2 Jaap Vduul
 
11.07.12
10:50
Сделай через метод Заполнить()
3 mzelensky
 
11.07.12
10:54
(2) тоже не вариант. часть случаем конечно можно отработать, но есть много ситуаций, где не получится....либо нужно делать промежуточную переменную под "имя" параметра.
4 Jaap Vduul
 
11.07.12
10:58
>> есть много ситуаций, где не получится
Например?
5 mzelensky
 
11.07.12
11:03
(4) например где заполнение параметра идет из фкнкции!
Ну типа

Область.Параметр.Парм1=ОбщийМодуль.КакаяТоФункция();

А т.к. функция универсальная, то ИМЯ возвращаемого значения тоже однотипное.
6 Jaap Vduul
 
11.07.12
11:07
>> А т.к. функция универсальная, то ИМЯ возвращаемого значения тоже однотипное.
Чего?

СтруктураСоЗначениямиПараметров.Парм1 = ОбщийМодуль.КакаяТоФункция();
Область.Параметры.Заполнить(СтруктураСоЗначениямиПараметров);
7 ЛЮС
 
11.07.12
11:08
(4) А в чем сложность?

СтуктураПараметров.Вставить("Парм1", ОбщийМодуль.КакаяТоФункция());
Область.Параметры.Заполнить(СтуктураПараметров);

И заполняй их как хочешь.
8 mzelensky
 
11.07.12
11:32
А можно как-то получить имена параметров области?

Пробовал :

для каждого Парам из Область.Параметры цикл

но так он параметры обходит, но ИМЕНА их не дает.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.