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