Проверка на наличие поля

1. avogadro57 17.08.17 10:56 Сейчас в теме
Добрый день, в типовой конфигурации пришлось добавить строку в условие

	ИначеЕсли ТипЗнч(ДанныеДляПечати.ДокументОснование) = Тип("ДокументСсылка.КорректировкаРеализации") Тогда 
			ОбластьМакета = Макет.ПолучитьОбласть("ИдентификаторГосКонтракта");
			ОбластьМакета.Параметры.ИдентификаторГосКонтракта = ДанныеДляПечати.ИдентификаторГосКонтракта;
			ТабДокумент.Вывести(ОбластьМакета);


Проблема в том, что эта процедура используется также и в других документах, поле ДокументОснование есть не везде, выдает ошибку "поле ДокументОснование не найдено"
Как можно это обойти?
"Попытка" не получилось использовать прямо в условии перед "ИначеЕсли", как правильно можно это сделать?
По теме из базы знаний
Найденные решения
11. avogadro57 17.08.17 12:04 Сейчас в теме
Нашел проверку поля, сделал через ДанныеДляПечати.Свойство("ДокументОснование")
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. D_e_X_T_e_R 573 17.08.17 10:59 Сейчас в теме
Для начала посмотреть отладчиком, что попадает в это поле.
4. avogadro57 17.08.17 11:01 Сейчас в теме
(2)Да передается. Основание туда попадает, в нужном документе все правильно работает. Проблема именно в наличии этого поля, не у всех счет фактур есть основание
3. D_e_X_T_e_R 573 17.08.17 11:00 Сейчас в теме
ДанныеДляПечати - это как правило структура, в твою процедуру или функцию передается эта структура?
5. user649060 17.08.17 11:05 Сейчас в теме
ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ДанныеДляПечати, "ДокументОснование")
8. avogadro57 17.08.17 11:14 Сейчас в теме
(5)
ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ДанныеДляПечати, "ДокументОснование")
не вижу такой процедуры в этом модуле, КА1
9. BackinSoda 17.08.17 11:23 Сейчас в теме
(8)
МетаданныеДокумента = ДанныеДляПечати.Метаданные();
ИначеЕсли ОбщегоНазначения.ЕстьРеквизитДокумента("ДокументОснование", МетаданныеДокумента) И ТипЗнч(ДанныеДляПечати.ДокументОснование) = Тип("ДокументСсылка.КорректировкаРеализации") Тогда

где
Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента) Экспорт

	Возврат НЕ (МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено);

КонецФункции // ЕстьРеквизитДокумента()
6. loki03 17.08.17 11:07 Сейчас в теме
так?

Иначе
Попытка
Если ТипЗнч(ДанныеДляПечати.ДокументОснование) = Тип("ДокументСсылка.КорректировкаРеализации") Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ИдентификаторГосКонтракта");
ОбластьМакета.Параметры.ИдентификаторГосКонтракта = ДанныеДляПечати.ИдентификаторГосКонтракта;
ТабДокумент.Вывести(ОбластьМакета)
КонецПопытки;
КонецЕсли;
7. avogadro57 17.08.17 11:11 Сейчас в теме
(6) Для попытки обязательно "Исключение", даже если ставить исключение так:
Иначе
Попытка
Если ТипЗнч(ДанныеДляПечати.ДокументОснование) = Тип("ДокументСсылка.КорректировкаРеализации") Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ИдентификаторГосКонтракта");
ОбластьМакета.Параметры.ИдентификаторГосКонтракта = ДанныеДляПечати.ИдентификаторГосКонтракта;
ТабДокумент.Вывести(ОбластьМакета)
Исключение
КонецПопытки;
КонецЕсли;

Тоже неправильно
10. WasiliyMay 8 17.08.17 11:32 Сейчас в теме
(7) В исключении не обязательно что то писать
11. avogadro57 17.08.17 12:04 Сейчас в теме
Нашел проверку поля, сделал через ДанныеДляПечати.Свойство("ДокументОснование")
Оставьте свое сообщение

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