Пол-года назад необходимо было из внешнего отчета проверить, определена ли в глобальном модуле переменная глКаталогПечФорм (ну, типа, универсальный отчет, сам подстраивается под механизмы конфигурации).
Хотелось простой конструкции типа:
Если ТипЗначения(глКаталогПечФорм) = 0 Тогда
Сообщить("Переменной нету")
КонецЕсли;
Однако при открытии отчета в конфигурации без глКаталогПечФорм, отчет вываливал ошибку компиляции.
Тогда нормально так и не решил проблему (сделал через шаблон, но всё равно, при отсутствии переменной в глобальном модуле в окно сообщений вылезала ошибка).
Сегодня торкнуло:
Если 1=0 Тогда глКаталогПечФорм = 0 КонецЕсли;
Если ТипЗначения(глКаталогПечФорм) = 0 Тогда
Сообщить("Переменной нету")
КонецЕсли;
Бред, конечно, но работает! Правда, неверно определяется случай, когда переменная есть, а значение ей не присвоено, но эту проблему обойти уже легче.
В процессе обсуждения этой статьи Abadonna предложил ещё более лаконичный вариант:
глКаталогПечФорм=глКаталогПечФорм;
Если ТипЗначения(глКаталогПечФорм) = 0 Тогда
Сообщить("Переменной нету")
КонецЕсли;
Обход упомянутой проблемы с неициализированной переменной
Процедура ПопробоватьУстановитьПеременную()
глКаталогПечФорм = "Ура!"
КонецПроцедуры
Процедура Проверка()
глКаталогПечФорм=глКаталогПечФорм;
Если ТипЗначения(глКаталогПечФорм) = 0 Тогда
ПопробоватьУстановитьПеременную();
Если глКаталогПечФорм <> "Ура!" Тогда
Сообщить("Переменной нету")
Иначе
глКаталогПечФорм = ПолучитьПустоеЗначение() //Вернем как было
КонецЕсли;
КонецЕсли;
КонецПроцедуры