Как перед присвоением параметру значения проверить существует ли он, чтобы не нарываться на исключение?

Вот что-то такого типа:
Если ОбластьШапка.Параметры.Найти("Параметр1") <> Неопределено Тогда
...
---
```1c
    Функция ЕстьВОбластиПараметр(Область, ИмяПараметра)
    уникИД = новый УникальныйИдентификатор;
    СтруктураПараметров = Новый Структура(ИмяПараметра, уникИД);
    ЗаполнитьЗначенияСвойств(СтруктураПараметров, Область.Параметры);
    Если уникИД <> СтруктураПараметров[ИмяПараметра] Тогда
    Возврат Истина;
    иначе
    Возврат Ложь;
    КонецЕсли;
    КонецФункции
```
---
смотрите ПараметрыМакетаТабличногоДокумента

думаю, метод Заполнить позволит выйти из ситуации: сформируем структуру со всеми подряд параметрами, в итоге заполнится только совпавшее и проверять на существование будет не надо... как-то так..
---
Простите что я не в тему пишу...Я недавно на вашем сайте...Скажите пожалуйста как тут создавать ТЕМЫ.
---
romansun пишет:
думаю, метод Заполнить позволит выйти из ситуации

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

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

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

js-ss пишет:
Скажите пожалуйста как тут создавать ТЕМЫ
справа вверху ссылка зеленая [+ Новая тема]:
---
Записывай в некую переменную (в Соответствие) те параметры, которые уже присвоил ячейкам, а перед присвоением проверяй есть ли они в данном Соответствии
---
Я то думал, что есть такой метод проверки у объекта и я его просто не могу найти, а его значит нет - недоработка языка :(
---
Сам искал ответ на этот вопрос. Обошелся флагами. В общем то да. Хотелось бы чтобы у макет было свойство имя.
Чтобы можно было писать типа:

```1c
    //Где-то выше
    Макет = ПолучитьМакет("Очередная_накладная");
    ..........
    //а ниже
    Если Макет.Имя <> "Очередная_накладная" Тогда
    .......
    КонецЕсли;
```
---
Как вариант если не многовато параметров в макете то можно:

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

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

Актуальность темы думаю не ослабла. ;) Удачных идей!!!
---
В 1С как то находил вот такое на проверку свойств в структуре.

```1c
    Если Форма.Склады.Количество() = 0
    И Параметры.Свойство("ОстаткиПоВсемСкладам") // вот тут если параметра нет то на следующею строчку не перейдет и ошибки не будет
    И Параметры.ОстаткиПоВсемСкладам Тогда
    ........
    КонецЕсли
```
---
Увы. у параметров макета табличного поля такого метода Свойство() нет.
---
Вот тут http://www.forum.mista.ru/topic.php?id=614246 предложена хорошая идея как получить имена параметров:

```1c
    Макет = Отчеты.Отчет2.ПолучитьМакет("Макет");
    ОбластьМакета = Макет.Область("Область1");
    Для НомерСтроки = 1 По 40 Цикл
    Для НомерКолонки = 1 По 40 Цикл
    Область = Макет.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
    Если Область.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр Тогда
    Сообщить(Область.Параметр);
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
```
---
```1c
    Функция ЕстьВОбластиПараметр(Область, ИмяПараметра)
    уникИД = новый УникальныйИдентификатор;
    СтруктураПараметров = Новый Структура(ИмяПараметра, уникИД);
    ЗаполнитьЗначенияСвойств(СтруктураПараметров, Область.Параметры);
    Если уникИД <> СтруктураПараметров[ИмяПараметра] Тогда
    Возврат Истина;
    иначе
    Возврат Ложь;
    КонецЕсли;
    КонецФункции
```
---
спасибо
да это выход, то что надо
---
Не работает, если в Имени параметра содержатся запятые или другие символы
---
Спасибо большое, мне помогла эта функция.
---
Почему то у меня на платформе 8.3.20.1789 все норм, а на 8.3.17.1851 не работает эта функция.
---
Спасибо большое!!! очень помогло
---
Уж не знаю, насколько актуально (а главное оптимально), но я делал так:

```1c
    Функция ПараметрОбластиСуществует(ИмяПараметра,ОбластьМакета)

    Попытка
    ЗначениеПараметра = ОбластьМакета.Параметры[ИмяПараметра];
    ПараметрСуществует = Истина;
    Исключение
    ПараметрСуществует = Ложь;
    КонецПопытки;

    Возврат ПараметрСуществует;

    КонецФункции
```
---
Макет.Области.Найти("ИдентификаторГосКонтракта") в типовой БП
---
https://forum.mista.ru/topic.php?id=591468
---
Шапка.Параметры.Заполнить(Новый Структура("Номер", ВДЗ.Номер));
И не надо мучаться с Если....
Все в одной строке.
Или
ЗначенияЗаполнения = Новый Структура;
 ЗначенияЗаполнения.Вставить("Параметр1", Значение1);
****
Шапка.Параметры.Заполнить(ЗначенияЗаполнения);

Если их много.
---
ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Параметры, ИмяПараметра)