Создание патчей в 1С:Предприятие — обязательный навык для разработчиков, администраторов и даже опытных пользователей, которые хотят вносить изменения в конфигурацию без риска сломать рабочую базу. Патч (или "обновление") позволяет добавлять новые функции, исправлять ошибки или адаптировать систему под специфические бизнес-процессы. Однако неправильно созданный патч может привести к конфликтам объектов, потере данных или даже краху базы. В этой статье разберём весь процесс — от подготовки до установки — с учётом нюансов разных версий платформы (8.3, 8.3.20+) и типовых конфигураций (Бухгалтерия 3.0, УТ 11, ЗУП 3.1).

Особое внимание уделим трём критическим этапам: тестированию патча на копии рабочей базы с реальными данными (это устраняет 90% будущих проблем),

созданию резервной копии перед установкой и проверке совместимости с текущей версией платформы. Также рассмотрим, как избежать типичных ошибок — например, когда патч "затирает" пользовательские настройки или приводит к Ошибке блокировки данных.

Если вы никогда не создавали патчи, начните с раздела "Что такое патч и когда он нужен" — там объяснено, чем патч отличается от полного обновления конфигурации. Опытным разработчикам будет полезен блок про автоматизацию создания патчей через Git и OneScript, а также таблица совместимости форматов .cf и .cfu для разных версий 1С.

📊 Для какой конфигурации 1С вы чаще создаёте патчи?
Бухгалтерия 3.0
Управление торговлей 11
Зарплата и Управление Персоналом 3.1
Самописная конфигурация
Другая типовая

Что такое патч в 1С и когда он нужен

Патч (от англ. patch — "заплата") в контексте 1С:Предприятие — это файл с изменениями конфигурации, который можно применить к рабочей базе без полной перезагрузки системы. В отличие от полного обновления (например, с Бухгалтерии 2.0 на 3.0), патч вносит точечные правки:

  • 🔧 Исправление ошибок в отчётах или документах (например, Ошибка при формировании книги покупок).
  • 📊 Добавление новых реквизитов в справочники или документы (например, поле Комментарий менеджера в заказе клиента).
  • 🔄 Изменение логики работы обработок (например, корректировка алгоритма расчёта скидок).
  • 📎 Интеграция с внешними системами (добавление REST API или обмена по CommerceML).

Патчи используют, когда:

  1. Нужно внести изменения без остановки работы пользователей (например, в УТ 11 можно обновить только модуль продаж, не трогая складской учёт).
  2. Типовое обновление от 1С не решает вашу задачу (например, в ЗУП 3.1 отсутствует нужный вид расчёта).
  3. Вы тестируете новую функциональность на ограниченной группе пользователей.

Чем патч отличается от полного обновления?

Критерий Патч Полное обновление
Объём изменений Точечные правки Замена всей конфигурации
Время установки Минуты От 30 минут до нескольких часов
Риск потери данных Минимальный (при правильном тестировании) Высокий (требуется резервное копирование)
Совместимость с доработками Может конфликтовать, если затрагивает те же объекты Часто "затирает" пользовательские доработки
⚠️ Внимание: Если ваша конфигурация сильно модифицирована (например, в УТ 11 добавлены новые документы или справочники), патчи от 1С могут не установиться. В этом случае придётся вручную переносить изменения или использовать инструменты сравнения конфигураций.

Подготовка к созданию патча: резервное копирование и анализ изменений

Прежде чем приступать к созданию патча, обязательно выполните три шага:

Создать резервную копию рабочей базы|Проанализировать изменения с помощью "Сравнение конфигураций"|Проверить совместимость версий платформы 1С|Убедиться, что у вас есть права на изменение конфигурации-->

Начнём с резервного копирования. Даже если вы работаете на тестовой базе, сохраните её состояние перед внесением изменений. В 1С:Предприятие 8.3 это можно сделать:

  • 💾 Через консоль администратора: 1Cv8.exe /D"ИмяБазы" /DumpIB"Путь\к\файлу.dt".
  • 🖥️ В режиме Конфигуратор: Администрирование → Выгрузить информационную базу.
  • ☁️ Для облачных баз (1C:Fresh) — через панель управления в личном кабинете.

Следующий этап — анализ изменений. Если вы дорабатываете типовую конфигурацию (например, Бухгалтерия 3.0), используйте инструмент Сравнение конфигураций (Конфигуратор → Конфигурация → Сравнить конфигурации). Он покажет:

  • 🔍 Какие объекты были изменены (модули, формы, макеты).
  • ⚠️ Потенциальные конфликты с будущими обновлениями от 1С.
  • 📝 Список зависимостей (например, если вы изменили справочник Номенклатура, это может повлиять на документы РеализацияТоваровУслуг).

Если вы работаете в команде, используйте систему контроля версий (например, Git с расширением 1C:EDT или OneScript). Это позволит отслеживать, кто и когда внёс изменения, а также откатываться к предыдущим версиям при ошибках.

⚠️ Внимание: В версиях платформы 8.3.20 и выше формат файлов конфигурации изменился. Патчи, созданные в старых версиях (.cf), могут не установиться на новые базы. Проверьте совместимость в таблице ниже или используйте универсальный формат .cfu.
💡

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

Создание патча в Конфигураторе: пошаговая инструкция

Теперь перейдём к практике. Рассмотрим два способа создания патча: вручную через Конфигуратор и автоматизированно с помощью скриптов.

Способ 1: Ручное создание патча в Конфигураторе

Этот метод подходит для небольших изменений. Следуйте инструкции:

  1. Откройте базу в режиме Конфигуратор (1Cv8.exe /F"Путь\к\базе" /NИмяПользователя /PПароль).
  2. Внесите необходимые изменения (например, добавьте новый реквизит в справочник Контрагенты).
  3. Сохраните конфигурацию (Конфигурация → Сохранить конфигурацию).
  4. Сформируйте патч:
    Конфигурация → Сравнить, объединить с конфигурацией из файла...
    

    → Выберите исходную конфигурацию (до изменений)

    → Нажмите "Сравнить"

    → Отметьте галочками нужные объекты

    → Нажмите "Выгрузить изменения в файл" (.cf или .cfu)

Файл патча сохранится в указанную папку. Его можно сразу установить на целевую базу или сначала протестировать.

Способ 2: Автоматизация через OneScript или 1C:EDT

Для крупных проектов или регулярных обновлений удобнее использовать скрипты. Например, с помощью OneScript можно автоматизировать:

  • 🔄 Сравнение конфигураций.
  • 📦 Упаковку изменений в патч.
  • 🚀 Установку патча на несколько баз одновременно.

Пример скрипта для создания патча:

#Подключаем библиотеку для работы с 1С

#Используем OneScript

ПодключитьБиблиотеку("OneScript.StandardLibrary.os");

ПодключитьБиблиотеку("OneScript.V8Library.os");

// Пути к файлам

ПутьКИсходнойКонфигурации = "C:\1C\BaseBefore.cf";

ПутьКИзмененнойКонфигурации = "C:\1C\BaseAfter.cf";

ПутьКПатчу = "C:\1C\Patch.cfu";

// Сравнение и создание патча

Конфигурации = Новый СравнениеКонфигураций();

Конфигурации.Сравнить(ПутьКИсходнойКонфигурации, ПутьКИзмененнойКонфигурации);

Конфигурации.ВыгрузитьИзменения(ПутьКПатчу);

Сообщить("Патч успешно создан: " + ПутьКПатчу);

Для работы с 1C:EDT (среда разработки от 1С) процесс ещё проще:

  1. Откройте проект в EDT.
  2. Внесите изменения и закоммитьте их в Git.
  3. Используйте функцию Team → Create Patch для генерации файла изменений.
💡

При создании патча через Конфигуратор всегда проверяйте флаг "Сохранять историю изменений". Это позволит откатиться к предыдущей версии, если что-то пойдёт не так.

Тестирование патча: как избежать ошибок в рабочей базе

Тестирование — самый важный этап, который многие пропускают. По статистике, 70% проблем с патчами возникает из-за недостаточного тестирования на данных, близких к реальным. Вот чек-лист для проверки:

Проверить установку на копии рабочей базы|Протестировать все изменённые документы и отчёты|Убедиться, что не сломались интеграции (например, обмен с сайтом)|Проверить права доступа (например, новые роли в ЗУП 3.1)|Симулировать работу нескольких пользователей одновременно-->

Рассмотрим три уровня тестирования:

  1. Функциональное тестирование:
    • 📋 Проверьте, что новые поля отображаются в формах (например, реквизит ДатаОплаты в документе ПоступлениеНаРасчетныйСчет).
    • 🧮 Убедитесь, что расчёты работают корректно (например, пересчёт НДС в Бухгалтерии 3.0).
  2. Тестирование производительности:
    • ⏱️ Замерьте время выполнения изменённых отчётов (например, Оборотно-сальдовая ведомость не должна тормозить после добавления новых группировок).
    • 🖥️ Проверьте нагрузку на сервер при одновременной работе 10+ пользователей.
  • Тестирование безопасности:
    • 🔐 Убедитесь, что новые права доступа не дают лишних возможностей (например, в ЗУП 3.1 менеджер не должен видеть зарплаты сотрудников).
    • 🛡️ Проверьте, что патч не открывает уязвимостей (например, SQL-инъекции в новых запросах).

    Для автоматизации тестирования можно использовать:

    • 🤖 Vanessa-ADD (библиотека для автоматического тестирования 1С).
    • 📊 1С:Тест-центр (встроенный инструмент в 1C:EDT).
    • 🔄 Jenkins + OneScript для запуска тестов после каждого коммита.
    ⚠️ Внимание: Если ваш патч затрагивает регламентные задания (например, автоматическое формирование отчётов в УТ 11), обязательно проверьте их выполнение в фоновом режиме. Ошибки в регламентных заданиях могут остаться незамеченными, но привести к проблемам через неделю работы.
    Что будет, если не протестировать патч?

    Без тестирования патч может:

    1. Удалить критические данные (например, очистить справочник Номенклатура при ошибке в обработке загрузки).

    2. Заблокировать работу пользователей (например, из-за бесконечного цикла в триггере ПередЗаписью).

    3. Сломать интеграции (например, обмен с 1С:Документооборот перестанет работать из-за изменения структуры данных).

    4. Привести к потере лицензии (в облачных базах 1C:Fresh некорректный патч может вызвать ошибку лицензирования).

    Установка патча на рабочую базу: нюансы и типичные ошибки

    Когда патч протестирован, можно приступать к установке. Важно учесть режим работы базы (файловый или клиент-серверный) и версию платформы.

    Установка в файловом режиме

    1. Закройте все сеансы пользователей (Администрирование → Активные пользователи → Завершить сеансы).
    2. Откройте базу в режиме Конфигуратор.
    3. Выберите Конфигурация → Загрузить конфигурацию из файла и укажите путь к патчу (.cf или .cfu).
    4. Подтвердите объединение изменений.
    5. Обновите базу данных (Конфигурация → Обновить базу данных).

    Установка на клиент-серверной базе

    Здесь процесс сложнее:

    1. Остановите кластер серверов 1С:
      oscript -execute "ПодключитьБиблиотеку('1C:EnterpriseScript');
      

      Сервер = Новый Сервер1С();

      Сервер.ОстановитьКластер('ИмяКластера');"

    2. Установите патч через Конфигуратор (аналогично файловому режиму).
    3. Обновите базу данных.
    4. Перезапустите кластер:
      oscript -execute "ПодключитьБиблиотеку('1C:EnterpriseScript');
      

      Сервер = Новый Сервер1С();

      Сервер.ЗапуститьКластер('ИмяКластера');"

    Типичные ошибки при установке:

    Ошибка Причина Решение
    Ошибка блокировки данных Пользователи не вышли из системы Закройте все сеансы или установите патч в нерабочее время
    Несовпадение версий конфигурации Патч создан для другой версии базы Проверьте совместимость в Сравнении конфигураций
    Ошибка обновления базы данных Не хватает прав на сервере SQL Запустите Конфигуратор от имени администратора
    Конфликт объектов метаданных Патч изменяет объекты, которые уже были модифицированы Используйте Объединение конфигураций с ручным разрешением конфликтов
    ⚠️ Внимание: В 1С:Предприятие 8.3.21+ появилась функция Отложенное обновление конфигурации. Она позволяет установить патч без немедленного обновления базы данных, что полезно для крупных баз с большим количеством пользователей. Активируется в Администрирование → Настройки системы → Обновление конфигурации.

    Автоматизация создания и установки патчей

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

    1. OneScript + Git

    С помощью OneScript можно:

    • 🔄 Автоматически сравнивать конфигурации.
    • 📦 Собирать патчи по расписанию.
    • 🚀 Устанавливать их на тестовые и рабочие базы.

    Пример скрипта для автоматической установки патча на несколько баз:

    #Подключаем библиотеки
    

    ПодключитьБиблиотеку("OneScript.StandardLibrary.os");

    ПодключитьБиблиотеку("OneScript.V8Library.os");

    // Список баз для обновления

    Базы = Новый Массив();

    Базы.Добавить("C:\Bases\Trade\");

    Базы.Добавить("\\Server\1C\Salary\");

    // Путь к патчу

    ПутьКПатчу = "C:\Patches\Update_2026_05.cfu";

    // Обновляем каждую базу

    Для Каждого База Из Базы Цикл

    Попытка

    Соединение = Новый СоединениеСИнформационнойБазой(База, "Администратор", "");

    Конфигуратор = Соединение.Конфигуратор();

    Конфигуратор.ЗагрузитьКонфигурациюИзФайла(ПутьКПатчу);

    Конфигуратор.ОбновитьБазуДанных();

    Сообщить("База " + База + " успешно обновлена!");

    Исключение

    Сообщить("Ошибка обновления базы " + База + ": " + ОписаниеОшибки());

    КонецПопытки;

    КонецЦикла;

    2. 1C:EDT + Jenkins

    Для командной разработки:

    1. Настройте 1C:EDT для работы с Git.
    2. Создайте Jenkins-пайплайн, который:
      • 🔍 Запускает тесты после каждого коммита.
      • 📦 Собирает патч при успешном прохождении тестов.
      • 🚀 Устанавливает его на тестовую базу.
  • 3. Vanessa-Automation

    Этот инструмент позволяет:

    • 🤖 Автоматизировать тестирование патчей.
    • 📊 Генерировать отчёты об ошибках.
    • 🔄 Интегрироваться с CI/CD системами.

    Пример теста на Vanessa-ADD:

    Перем Тест;
    

    Тест = Тесты.Добавить("Проверка нового реквизита в справочнике Контрагенты");

    Тест.Шаги.Добавить("Открыть справочник Контрагенты");

    Тест.Шаги.Добавить("Создать нового контрагента");

    Тест.Шаги.Добавить("Проверить наличие реквизита 'Комментарий'");

    Тест.Шаги.Добавить("Заполнить реквизит и сохранить");

    Тест.Выполнить();

    ⚠️ Внимание: При автоматизации учитывайте лицензионные ограничения. Например, для работы с 1C:EDT требуется отдельная лицензия, а Jenkins может конфликтовать с политиками безопасности вашей компании.

    Частые проблемы с патчами и как их решить

    Даже опытные разработчики сталкиваются с ошибками при работе с патчами. Разберём TOP-5 проблем и способы их решения:

    1. Ошибка "Конфликт объектов метаданных"

    Причина: Патч изменяет объекты, которые уже были модифицированы в целевой базе (например, в УТ 11 добавили новый реквизит в документ ЗаказКлиента, а патч пытается изменить тот же документ).

    Решение:

    • Используйте Объединение конфигураций с ручным разрешением конфликтов.
    • Создайте расширение конфигурации вместо патча (подходит для 1С:Предприятие 8.3.10+).

    2. Патч не устанавливается на клиент-серверной базе

    Причина: Не хватает прав на сервере SQL или PostgreSQL, либо версия патча несовместима с версией сервера.

    Решение:

    • Проверьте права пользователя в SQL Server Management Studio.
    • Обновите сервер 1С до актуальной версии (например, с 8.3.18 на 8.3.22).

    3. После установки патча пропали пользовательские настройки

    Причина: Патч перезаписал формы или макеты, в которых пользователи сохраняли персональные настройки (например, расположение колонок в отчёте).

    Решение:

    • Используйте механизм СохранениеНастроек в 1С.
    • Предупредите пользователей о необходимости сохранить настройки перед обновлением.

    4. Ошибка "Недостаточно памяти" при обновлении большой базы

    Причина: В базах с большим объёмом данных (например, УТ 11 с 100+ ГБ истории) обновление требует много ресурсов.

    Решение:

    • Увеличьте память для процесса ragent.exe в настройках сервера 1С.
    • Разбейте патч на несколько маленьких.
    • Установите патч в нерабочее время.

    5. Патч установился, но новые функции не работают

    Причина: Чаще всего это связано с:

    • 🔌 Необновлёнными внешними обработками или отчётами.
    • 🔄 Кэшем метаданных (1С не "видит" изменения).
    • 🛠️ Ошибками в коде (например, неверное имя реквизита).

    Решение:

    • Очистите кэш 1С (%APPDATA%\1C\1Cv8).
    • Проверьте журнал регистрации (Администрирование → Журнал регистрации).
    • Запустите тестовый сценарий в Vanessa-ADD.

    💡

    Если патч не устанавливается, всегда проверяйте журнал регистрации 1С (Администрирование → Журнал регистрации). В 90% случаев там есть точная причина ошибки, которую можно исправить без обращения в поддержку.

    FAQ: Ответы на частые вопросы о патчах в 1С

    Можно ли откатить патч, если что-то пошло не так?

    Да, но для этого нужно:

    1. Иметь резервную копию базы до установки патча.
    2. Использовать механизм Версии конфигурации в 1С (если он включён).
    3. Для клиент-серверных баз — восстановить бэкап SQL или PostgreSQL.

    Если резервной копии нет, попробуйте:

    • Загрузить предыдущую версию конфигурации из файла.
    • Использовать Сравнение и объединение конфигураций для ручного отката изменений.
    Как сделать патч для облачной базы 1C:Fresh?

    В 1C:Fresh установка патчей имеет ограничения:

    • 🔧 Вы можете дорабатывать конфигурацию только через расширения (не путайте с патчами!).
    • ☁️ Патчи в формате .cf/.cfu устанавливать нельзя — все изменения вносятся через веб-интерфейс.
    • 📅 Обновления типовой конфигурации приходят автоматически, их нельзя отменить.

    Для переноса доработок:

    1. Создайте расширение конфигурации в локальной базе.
    2. Экспортируйте его в файл (.cfe).
    3. Загрузите в 1C:Fresh через Настройки → Расширения.
    Чем отличаются форматы .cf и .cfu?

    Это два основных формата файлов конфигурации в 1С:

    Формат Описание Когда использовать
    .cf