Как проверить существует ли параметр с таким именем в макете отчета?

1. Збянтэжаны Саўка 244 09.11.11 15:50 Сейчас в теме
Как перед присвоением параметру значения проверить существует ли он, чтобы не нарываться на исключение?

Вот что-то такого типа:
Если ОбластьШапка.Параметры.Найти("Параметр1") <> Неопределено Тогда
...
По теме из базы знаний
Найденные решения
12. mailrum2004 1 15.12.17 18:02 Сейчас в теме
Функция ЕстьВОбластиПараметр(Область, ИмяПараметра)
	уникИД = новый УникальныйИдентификатор;
	СтруктураПараметров = Новый Структура(ИмяПараметра, уникИД);
	ЗаполнитьЗначенияСвойств(СтруктураПараметров, Область.Параметры);
	Если уникИД <> СтруктураПараметров[ИмяПараметра] Тогда
		Возврат Истина;	
	иначе
		Возврат Ложь;
	КонецЕсли;
КонецФункции
Показать
user640247; mudrak; Toliban; Montecrizto; maxim_ataev; user1798793; sacred_a; ReactoR; custer; justaria; Longinoff; zqzq; burgomister; sdaf; artross; knigula; PsYsTaR; Kazaams; user1039778; Designer1C; ipoloskov; tolyan_ekb; zif74; S_D_M; asid; odamcha; vikochkagridina; user1182587; romanpolyashov@yandex.ru; JohnTur; igor-pn; kholkin; Dmtr666; memb3r; John_d; Matematik; Uka22; pagiev; atseparate; +39 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. romansun 193 09.11.11 17:20 Сейчас в теме
смотрите ПараметрыМакетаТабличногоДокумента

думаю, метод Заполнить позволит выйти из ситуации: сформируем структуру со всеми подряд параметрами, в итоге заполнится только совпавшее и проверять на существование будет не надо... как-то так..
user613717_egeg; xopbat; kholkin; irreal; dyuha; +5 Ответить
3. js-ss 14 09.11.11 17:27 Сейчас в теме
Простите что я не в тему пишу...Я недавно на вашем сайте...Скажите пожалуйста как тут создавать ТЕМЫ.
4. Збянтэжаны Саўка 244 09.11.11 17:34 Сейчас в теме
romansun пишет:
думаю, метод Заполнить позволит выйти из ситуации


он в моем случае не подходит
я в цикле заполняю параметры с именами <П_№> где № счетчик цикла
а значениями будут поля запроса с именами СуммаЧегото
ну т.е имена не совпадают увы :(

Некоторые ячейки не содержат параметра - пустые.
Вот мне нужно проверить? что ячейка пуста и не заполнять ее.
Типа так:

сч = 0;
Для Каждого стр Из тзПараметры Цикл
	сч = сч + 1;
	Если стр.НомерСтрокиВОтчете > 0 и стр.НомерСтрокиВОтчете <= 28 Тогда //27
		ОбластьГлавная.Параметры["ПЭЭ" + стр.НомерСтрокиВОтчете] = стр.СуммаЭЭ;
		ОбластьГлавная.Параметры["ПТЭ" + стр.НомерСтрокиВОтчете] = стр.СуммаТЭ;
		//Если ОбластьГлавная.Параметры.Найти("П" + стр.НомерСтрокиВОтчете) <> Неопределено Тогда
		ОбластьГлавная.Параметры["П"   + стр.НомерСтрокиВОтчете] = стр.Сумма;
		//КонецЕсли; 
	КонецЕсли; 
КонецЦикла;
Показать


js-ss пишет:
Скажите пожалуйста как тут создавать ТЕМЫ

справа вверху ссылка зеленая [+ Новая тема]:
Прикрепленные файлы:
5. manfeese 09.11.11 18:00 Сейчас в теме
Записывай в некую переменную (в Соответствие) те параметры, которые уже присвоил ячейкам, а перед присвоением проверяй есть ли они в данном Соответствии
xbox10; Збянтэжаны Саўка; +2 Ответить
6. Збянтэжаны Саўка 244 10.11.11 10:08 Сейчас в теме
Я то думал, что есть такой метод проверки у объекта и я его просто не могу найти, а его значит нет - недоработка языка :(
7. KRubtsov 19.12.11 17:11 Сейчас в теме
Сам искал ответ на этот вопрос. Обошелся флагами. В общем то да. Хотелось бы чтобы у макет было свойство имя.
Чтобы можно было писать типа:

//Где-то выше  
Макет = ПолучитьМакет("Очередная_накладная");
..........
//а ниже
Если Макет.Имя <>  "Очередная_накладная" Тогда
.......
КонецЕсли;
Показать
8. nrv 24.03.17 01:02 Сейчас в теме
Как вариант если не многовато параметров в макете то можно:

ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки);

    Эсли Найти(ЗначениеВСтрокуВнутр(ОбластьМакета),"ПараметрN") <> 0 Тогда
    ...

Актуальность темы думаю не ослабла. ;) Удачных идей!!!
ApTeM_26_; erazh; abadonna83; +3 Ответить
9. _Farsh_ 10 24.07.17 10:35 Сейчас в теме
(8) В 1С как то находил вот такое на проверку свойств в структуре.

Если Форма.Склады.Количество() = 0
		И Параметры.Свойство("ОстаткиПоВсемСкладам")  // вот тут если параметра нет то на следующею строчку не перейдет и ошибки не будет
		И Параметры.ОстаткиПоВсемСкладам Тогда
........
КонецЕсли
shevelyov; +1 Ответить
10. 20tanush 25.07.17 13:57 Сейчас в теме
(9)Увы. у параметров макета табличного поля такого метода Свойство() нет.
11. 20tanush 25.07.17 14:06 Сейчас в теме
Вот тут http://www.forum.mista.ru/topic.php?id=614246 предложена хорошая идея как получить имена параметров:
Макет = Отчеты.Отчет2.ПолучитьМакет("Макет");
ОбластьМакета = Макет.Область("Область1");
Для НомерСтроки = 1 По 40 Цикл
    Для НомерКолонки = 1 По 40 Цикл
        Область = Макет.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
        Если Область.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр Тогда
        Сообщить(Область.Параметр);
            КонецЕсли;
    КонецЦикла;
КонецЦикла;
Показать
12. mailrum2004 1 15.12.17 18:02 Сейчас в теме
Функция ЕстьВОбластиПараметр(Область, ИмяПараметра)
	уникИД = новый УникальныйИдентификатор;
	СтруктураПараметров = Новый Структура(ИмяПараметра, уникИД);
	ЗаполнитьЗначенияСвойств(СтруктураПараметров, Область.Параметры);
	Если уникИД <> СтруктураПараметров[ИмяПараметра] Тогда
		Возврат Истина;	
	иначе
		Возврат Ложь;
	КонецЕсли;
КонецФункции
Показать
user640247; mudrak; Toliban; Montecrizto; maxim_ataev; user1798793; sacred_a; ReactoR; custer; justaria; Longinoff; zqzq; burgomister; sdaf; artross; knigula; PsYsTaR; Kazaams; user1039778; Designer1C; ipoloskov; tolyan_ekb; zif74; S_D_M; asid; odamcha; vikochkagridina; user1182587; romanpolyashov@yandex.ru; JohnTur; igor-pn; kholkin; Dmtr666; memb3r; John_d; Matematik; Uka22; pagiev; atseparate; +39 Ответить
13. Збянтэжаны Саўка 244 18.12.17 09:09 Сейчас в теме
(12) спасибо
да это выход, то что надо
14. pehatuk 13 24.07.20 10:07 Сейчас в теме
(12) Не работает, если в Имени параметра содержатся запятые или другие символы
15. aledis 2 17.11.20 11:06 Сейчас в теме
(12) Спасибо большое, мне помогла эта функция.
16. Salavat88 14.09.22 07:43 Сейчас в теме
(12) Почему то у меня на платформе 8.3.20.1789 все норм, а на 8.3.17.1851 не работает эта функция.
21. user640247 20.10.23 14:32 Сейчас в теме
(12) Спасибо большое!!! очень помогло
17. user1572509 07.10.22 17:49 Сейчас в теме
Уж не знаю, насколько актуально (а главное оптимально), но я делал так:

Функция ПараметрОбластиСуществует(ИмяПараметра,ОбластьМакета)
	
	Попытка
		ЗначениеПараметра = ОбластьМакета.Параметры[ИмяПараметра];
		ПараметрСуществует = Истина; 
	Исключение
		ПараметрСуществует = Ложь;
	КонецПопытки;
	
	Возврат ПараметрСуществует;
	
КонецФункции
Показать
sponchebob; westline3; inf012; +3 Ответить
18. p.ugrumov 170 30.08.23 10:53 Сейчас в теме
Макет.Области.Найти("ИдентификаторГосКонтракта") в типовой БП
20. futuar 22.09.23 16:13 Сейчас в теме
Шапка.Параметры.Заполнить(Новый Структура("Номер", ВДЗ.Номер));
И не надо мучаться с Если....
Все в одной строке.
Или
ЗначенияЗаполнения = Новый Структура;
ЗначенияЗаполнения.Вставить("Параметр1", Значение1);
****
Шапка.Параметры.Заполнить(ЗначенияЗаполнения);

Если их много.
Оставьте свое сообщение
Вакансии
Программист
Санкт-Петербург
зарплата от 180 000 руб. до 240 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Программист 1С
Екатеринбург
зарплата от 130 000 руб. до 170 000 руб.
Полный день

Программист 1C
Санкт-Петербург
зарплата от 140 000 руб. до 200 000 руб.
Полный день