При работе с типовыми конфигурациями 1С часто возникает необходимость программно получить информацию об установленных исправлениях (патчах). Разработчики часто пытаются обращаться к ним через общие макеты, однако при такой попытке возникает ошибка Недопустимое значение параметра. Давайте разберем, почему это происходит и как правильно получать данные об исправлениях.
Когда мы пытаемся использовать метод ПолучитьОбщийМакет() для получения макета, который находится внутри расширения, мы сталкиваемся с тем, что глобальный контекст «не видит» объекты внутри изолированных расширений. Метод ПолучитьОбщийМакет() предназначен для поиска объектов в основной конфигурации, а расширения являются изолированными областями метаданных.
Если вы попробуете выполнить такой код:
// Ошибочный подход
Макет = ПолучитьОбщийМакет(ИмяРасширения);
Платформа выдаст ошибку, так как для неё макет в расширении не является «общим» в привычном понимании контекста конфигурации. Чтобы решить эту задачу, необходимо использовать системные механизмы, предоставляемые Библиотекой Стандартных Подсистем (БСП).
Вместо того чтобы пытаться «парсить» XML-файлы из макетов расширений, профессиональный подход заключается в обращении к данным, которые система уже подготовила для нас. Все установленные исправления регистрируются в базе данных.
Рассмотрим, как это реализовано:
ИсправленияКонфигурации для получения списка всех примененных патчей.Вместо ручного обращения к макетам, проанализируем запрос к регистру сведений. Это надежный и рекомендуемый способ получения информации об исправлениях.
Рассмотрим пример того, как можно получить список исправлений через запрос:
ВЫБРАТЬ
ИсправленияКонфигурации.Имя КАК Имя,
ИсправленияКонфигурации.Описание КАК Описание,
ИсправленияКонфигурации.Версия КАК Версия
ИЗ
РегистрСведений.ИсправленияКонфигурации КАК ИсправленияКонфигурации
Использование запроса к этому регистру позволяет избежать проблем с контекстом выполнения и получением объектов метаданных. Мы получаем структурированные данные, которые можно легко вывести в отчет или форму.
Если специфика вашей задачи требует именно чтения XML из макета конкретного расширения, необходимо использовать объект метаданных расширения. Рассмотрим пошаговый алгоритм:
РасширенияКонфигурации.Получить().ПолучитьМакет() у объекта метаданных расширения, а не метод глобального контекста.Пример корректного подхода:
Расширения = РасширенияКонфигурации.Получить();
Для Каждого Расширение Из Расширения Цикл
// Работаем с объектом метаданных расширения
Макет = Расширение.ПолучитьМакет("ИмяВашегоМакета");
Если Макет <> Неопределено Тогда
Текст = Макет.ПолучитьТекст();
КонецЕсли;
КонецЦикла;
Таким образом, мы выяснили, что ошибка при получении макета возникает из-за неверной области видимости. Рекомендуем всегда использовать данные из регистра сведений ИсправленияКонфигурации, так как это стандартный способ получения актуальной информации о патчах, который гарантирует стабильность и корректность работы вашего кода.
Используйте эти методы в своей практике, чтобы автоматизация процессов обновления и контроля версий конфигураций стала более прозрачной и надежной.