Skip to main content

Создание патчей

Создание расширение с исправлением

Сначала исходную ошибку, которую требуется закрыть патчем, необходимо исправить и протестировать штатным образом. Изменения по исправлению ошибки поместить в рабочее хранилище проекта.

Затем открыть конфигуратором информационную базу одной из прошлых версий, в которой имеется исправляемая ошибка, и перенести изменения по ошибке в расширение конфигурации.

Расширение с патчем должно исправлять только одну ошибку.
Исправление патчем нескольких ошибок допустимо, если ошибки связаны.

Для этого создать новое расширение конфигурации и выполнить действия:

  1. Указать свойства расширения:
    • Имя – "EF_<произвольный_номер_ошибки>". Например, EF_00_000268773.
      image-1716530630282.png
    • Префикс имен – берется из свойства имя.
    • Основные роли – снять флаг.
    • Основной язык – снять флаг.
    • В группе Совместимость – снять флаги у всех свойств.
    • Режим совместимости - указывать равный или ниже тому, что у конфигурации, для которого оно создается.
  2. Не удалять объект метаданных Язык – Русский.
  3. Удалить автоматически созданную роль. В патче она не нужна.
  4. Перенести изменения в расширение-патч.
    • Для процедур и функций – встать на любой строчке и нажать ALF+SHIFT+F2, в диалоговом окне "Тип выбора" указать "Вызывать вместо".
    • В метод патча перенести текущую реализацию со всеми необходимыми изменениями.
  5. Создать и заполнить макет, который описывает содержимое патча и информацию о нем:
    • Добавить общий макет, имя которого совпадает с именем расширения. Например, EF_00_00268773.
    • Заполнить содержимое макета по примеру:
    <Patch xmlns="http://www.v8.1c.ru/ssl/patch" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Name>EF_00_00268773</Name>
      <Description>В веб-клиенте при сохранении некоторых печатных форм может быть недоступен выбор папки сохранения.</Description>
      <UUID>abfde8f7-7ac4-43a9-9521-d291d0d0d6c3</UUID>
      <ModifiedMetadata>ОбщаяФорма.СохранениеПечатнойФормы.ПриСозданииНаСервере</ModifiedMetadata>
      <AppliedFor>
        <ConfigurationName>СтандартныеПодсистемы</ConfigurationName>
        <Versions>3.1.2.229,3.1.2.245</Versions>
      </AppliedFor>
    </Patch>

    где:

    • Name – должно совпадать с именем патча из расширения
    • Description – описание для пользователя, будет отображаться в списке установленных патчей.
    • UUID – уникальный идентификатор патча. Требуется создать новый, получив методом платформы Новый УникальныйИдентификатор.
    • ModifiedMetadata – изменяемые объекты метаданных.
    • AppliedFor – блок, в котором описывается к каким конфигурациям подходит данный патч.
    • ConfigurationName – имя конфигурации, берется из описания подсистемы в модуле ОбновлениеИнформационнойБазы<Сокращение>.
    • Versions – список версий конфигурации через запятую, для которой применим патч.
    • Рекомендуется при проверке патча проверять, что данный макет корректно читается и в нем нет ошибок – для этого нужно перейти к списку установленных исправлений (Администрирование – Обслуживание – Установленные исправления).

    Для создания макета есть обработка ФормированиеОписанияПатча.epf (расположена в прикрепленных файлах).

    При переносе исправления ошибки в расширение следует учитывать следующее. Новые процедуры и функции следует добавлять в расширение с префиксом патча, например, вместо

    "ИмяМоейПроцедуры" следует указывать

    "EF_<произвольный_номер_ошибки>_ИмяМоейПроцедуры".

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

    Нельзя изменять ранее созданное расширение для исправления новой ошибки, это приведет к исключению при одновременном подключении этих расширений.

    После создания патча передаем расширение клиенту и ответственному за публикацию решений.

    Публикация патчей

    Этот блок только для тех у кого есть доступ к публикатору.

    Для публикации расширения (патча) необходимо:

    1. Запустить "Управление публикациями конфигураций".
    2. Перейти на форму "Исправления (Патчи)" (команда "Исправления (Патчи)" в подсистеме "Портал 1С:ИТС")
    3. Нажать кнопку создать, выбрать файл расширения. Файл погрузиться в публикатор. Выведится сообщение что файл расширения загружен, нужно надать кнопку "Ок".
    4. Откроется форма с данными расширения, нужно убедиться что все данные правильные и нажать "Записать и закрыть".image-1717074198309.png
    5. После записи патч подгрузится на releases.1c.ru. В карточке релиза должна появиться гиперссылка "Исправления ошибок версии"

      image-1717074423386.png

      и при переходе по ней должен быть виден опубликованный патч

      image-1717074463245.png


    Полезные ссылки:

    1. https://its.1c.ru/db/metod8dev#content:5986:hdoc:_top:патчи