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

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

Вот что-то такого типа:
Если ОбластьШапка.Параметры.Найти("Параметр1") <> Неопределено Тогда
...
По теме из базы знаний
Найденные решения
12. mailrum2004 1 15.12.17 18:02 Сейчас в теме
Функция ЕстьВОбластиПараметр(Область, ИмяПараметра)
	уникИД = новый УникальныйИдентификатор;
	СтруктураПараметров = Новый Структура(ИмяПараметра, уникИД);
	ЗаполнитьЗначенияСвойств(СтруктураПараметров, Область.Параметры);
	Если уникИД <> СтруктураПараметров[ИмяПараметра] Тогда
		Возврат Истина;	
	иначе
		Возврат Ложь;
	КонецЕсли;
КонецФункции
Показать
mihco; Ermigen; izidakg; 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; +42 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. romansun 193 09.11.11 17:20 Сейчас в теме
смотрите ПараметрыМакетаТабличногоДокумента

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


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

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

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


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

справа вверху ссылка зеленая [+ Новая тема]:
Прикрепленные файлы:
5. manfeese 09.11.11 18:00 Сейчас в теме
Записывай в некую переменную (в Соответствие) те параметры, которые уже присвоил ячейкам, а перед присвоением проверяй есть ли они в данном Соответствии
xbox10; Збянтэжаны Саўка; +2 Ответить
6. Збянтэжаны Саўка 245 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 Сейчас в теме
Функция ЕстьВОбластиПараметр(Область, ИмяПараметра)
	уникИД = новый УникальныйИдентификатор;
	СтруктураПараметров = Новый Структура(ИмяПараметра, уникИД);
	ЗаполнитьЗначенияСвойств(СтруктураПараметров, Область.Параметры);
	Если уникИД <> СтруктураПараметров[ИмяПараметра] Тогда
		Возврат Истина;	
	иначе
		Возврат Ложь;
	КонецЕсли;
КонецФункции
Показать
mihco; Ermigen; izidakg; 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; +42 Ответить
13. Збянтэжаны Саўка 245 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 172 30.08.23 10:53 Сейчас в теме
Макет.Области.Найти("ИдентификаторГосКонтракта") в типовой БП
20. futuar 22.09.23 16:13 Сейчас в теме
Шапка.Параметры.Заполнить(Новый Структура("Номер", ВДЗ.Номер));
И не надо мучаться с Если....
Все в одной строке.
Или
ЗначенияЗаполнения = Новый Структура;
ЗначенияЗаполнения.Вставить("Параметр1", Значение1);
****
Шапка.Параметры.Заполнить(ЗначенияЗаполнения);

Если их много.
White13; user1114234; +2 Ответить
22. user753505 04.04.24 13:50 Сейчас в теме
ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Параметры, ИмяПараметра)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот