Как программно получить описание исправлений (патчей) в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с типовыми конфигурациями 1С часто возникает необходимость программно получить информацию об установленных исправлениях (патчах). Разработчики часто пытаются обращаться к ним через общие макеты, однако при такой попытке возникает ошибка Недопустимое значение параметра. Давайте разберем, почему это происходит и как правильно получать данные об исправлениях.

Разбор ошибки при получении макета

Когда мы пытаемся использовать метод ПолучитьОбщийМакет() для получения макета, который находится внутри расширения, мы сталкиваемся с тем, что глобальный контекст «не видит» объекты внутри изолированных расширений. Метод ПолучитьОбщийМакет() предназначен для поиска объектов в основной конфигурации, а расширения являются изолированными областями метаданных.

Если вы попробуете выполнить такой код:


// Ошибочный подход
Макет = ПолучитьОбщийМакет(ИмяРасширения);

Платформа выдаст ошибку, так как для неё макет в расширении не является «общим» в привычном понимании контекста конфигурации. Чтобы решить эту задачу, необходимо использовать системные механизмы, предоставляемые Библиотекой Стандартных Подсистем (БСП).

Где на самом деле хранятся данные об исправлениях?

Вместо того чтобы пытаться «парсить» XML-файлы из макетов расширений, профессиональный подход заключается в обращении к данным, которые система уже подготовила для нас. Все установленные исправления регистрируются в базе данных.

Рассмотрим, как это реализовано:

  1. Регистр сведений «Исправления конфигурации»: Именно здесь БСП хранит всю необходимую информацию: описание, версию, дату установки и другие параметры.
  2. Механизмы БСП: В состав БСП входят специальные модули, предназначенные для работы с патчами. Мы можем использовать методы подсистемы ИсправленияКонфигурации для получения списка всех примененных патчей.

Как правильно получить информацию программно?

Вместо ручного обращения к макетам, проанализируем запрос к регистру сведений. Это надежный и рекомендуемый способ получения информации об исправлениях.

Рассмотрим пример того, как можно получить список исправлений через запрос:


ВЫБРАТЬ
    ИсправленияКонфигурации.Имя КАК Имя,
    ИсправленияКонфигурации.Описание КАК Описание,
    ИсправленияКонфигурации.Версия КАК Версия
ИЗ
    РегистрСведений.ИсправленияКонфигурации КАК ИсправленияКонфигурации

Использование запроса к этому регистру позволяет избежать проблем с контекстом выполнения и получением объектов метаданных. Мы получаем структурированные данные, которые можно легко вывести в отчет или форму.

Что делать, если все же нужно прочитать макет?

Если специфика вашей задачи требует именно чтения XML из макета конкретного расширения, необходимо использовать объект метаданных расширения. Рассмотрим пошаговый алгоритм:

  1. Получите объект расширения через РасширенияКонфигурации.Получить().
  2. В цикле переберите расширения и обратитесь к метаданным конкретного расширения.
  3. Используйте метод ПолучитьМакет() у объекта метаданных расширения, а не метод глобального контекста.

Пример корректного подхода:


Расширения = РасширенияКонфигурации.Получить();
Для Каждого Расширение Из Расширения Цикл
    // Работаем с объектом метаданных расширения
    Макет = Расширение.ПолучитьМакет("ИмяВашегоМакета");
    Если Макет <> Неопределено Тогда
        Текст = Макет.ПолучитьТекст();
    КонецЕсли;
КонецЦикла;

Таким образом, мы выяснили, что ошибка при получении макета возникает из-за неверной области видимости. Рекомендуем всегда использовать данные из регистра сведений ИсправленияКонфигурации, так как это стандартный способ получения актуальной информации о патчах, который гарантирует стабильность и корректность работы вашего кода.

Используйте эти методы в своей практике, чтобы автоматизация процессов обновления и контроля версий конфигураций стала более прозрачной и надежной.

← На главную