Создание патчей в 1С:Предприятие — обязательный навык для разработчиков, администраторов и даже опытных пользователей, которые хотят вносить изменения в конфигурацию без риска сломать рабочую базу. Патч (или "обновление") позволяет добавлять новые функции, исправлять ошибки или адаптировать систему под специфические бизнес-процессы. Однако неправильно созданный патч может привести к конфликтам объектов, потере данных или даже краху базы. В этой статье разберём весь процесс — от подготовки до установки — с учётом нюансов разных версий платформы (8.3, 8.3.20+) и типовых конфигураций (Бухгалтерия 3.0, УТ 11, ЗУП 3.1).
Особое внимание уделим трём критическим этапам: тестированию патча на копии рабочей базы с реальными данными (это устраняет 90% будущих проблем),
созданию резервной копии перед установкой и проверке совместимости с текущей версией платформы. Также рассмотрим, как избежать типичных ошибок — например, когда патч "затирает" пользовательские настройки или приводит к Ошибке блокировки данных.
Если вы никогда не создавали патчи, начните с раздела "Что такое патч и когда он нужен" — там объяснено, чем патч отличается от полного обновления конфигурации. Опытным разработчикам будет полезен блок про автоматизацию создания патчей через Git и OneScript, а также таблица совместимости форматов .cf и .cfu для разных версий 1С.
Что такое патч в 1С и когда он нужен
Патч (от англ. patch — "заплата") в контексте 1С:Предприятие — это файл с изменениями конфигурации, который можно применить к рабочей базе без полной перезагрузки системы. В отличие от полного обновления (например, с Бухгалтерии 2.0 на 3.0), патч вносит точечные правки:
- 🔧 Исправление ошибок в отчётах или документах (например,
Ошибка при формировании книги покупок). - 📊 Добавление новых реквизитов в справочники или документы (например, поле
Комментарий менеджерав заказе клиента). - 🔄 Изменение логики работы обработок (например, корректировка алгоритма расчёта скидок).
- 📎 Интеграция с внешними системами (добавление REST API или обмена по CommerceML).
Патчи используют, когда:
- Нужно внести изменения без остановки работы пользователей (например, в УТ 11 можно обновить только модуль продаж, не трогая складской учёт).
- Типовое обновление от 1С не решает вашу задачу (например, в ЗУП 3.1 отсутствует нужный вид расчёта).
- Вы тестируете новую функциональность на ограниченной группе пользователей.
Чем патч отличается от полного обновления?
| Критерий | Патч | Полное обновление |
|---|---|---|
| Объём изменений | Точечные правки | Замена всей конфигурации |
| Время установки | Минуты | От 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: Ручное создание патча в Конфигураторе
Этот метод подходит для небольших изменений. Следуйте инструкции:
- Откройте базу в режиме Конфигуратор (
1Cv8.exe /F"Путь\к\базе" /NИмяПользователя /PПароль). - Внесите необходимые изменения (например, добавьте новый реквизит в справочник
Контрагенты). - Сохраните конфигурацию (
Конфигурация → Сохранить конфигурацию). - Сформируйте патч:
Конфигурация → Сравнить, объединить с конфигурацией из файла...→ Выберите исходную конфигурацию (до изменений)
→ Нажмите "Сравнить"
→ Отметьте галочками нужные объекты
→ Нажмите "Выгрузить изменения в файл" (.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С) процесс ещё проще:
- Откройте проект в EDT.
- Внесите изменения и закоммитьте их в Git.
- Используйте функцию
Team → Create Patchдля генерации файла изменений.
При создании патча через Конфигуратор всегда проверяйте флаг "Сохранять историю изменений". Это позволит откатиться к предыдущей версии, если что-то пойдёт не так.
Тестирование патча: как избежать ошибок в рабочей базе
Тестирование — самый важный этап, который многие пропускают. По статистике, 70% проблем с патчами возникает из-за недостаточного тестирования на данных, близких к реальным. Вот чек-лист для проверки:
Проверить установку на копии рабочей базы|Протестировать все изменённые документы и отчёты|Убедиться, что не сломались интеграции (например, обмен с сайтом)|Проверить права доступа (например, новые роли в ЗУП 3.1)|Симулировать работу нескольких пользователей одновременно-->
Рассмотрим три уровня тестирования:
- Функциональное тестирование:
- 📋 Проверьте, что новые поля отображаются в формах (например, реквизит
ДатаОплатыв документеПоступлениеНаРасчетныйСчет). - 🧮 Убедитесь, что расчёты работают корректно (например, пересчёт НДС в Бухгалтерии 3.0).
- 📋 Проверьте, что новые поля отображаются в формах (например, реквизит
- Тестирование производительности:
- ⏱️ Замерьте время выполнения изменённых отчётов (например,
Оборотно-сальдовая ведомостьне должна тормозить после добавления новых группировок). - 🖥️ Проверьте нагрузку на сервер при одновременной работе 10+ пользователей.
- ⏱️ Замерьте время выполнения изменённых отчётов (например,
- 🔐 Убедитесь, что новые права доступа не дают лишних возможностей (например, в ЗУП 3.1 менеджер не должен видеть зарплаты сотрудников).
- 🛡️ Проверьте, что патч не открывает уязвимостей (например,
SQL-инъекциив новых запросах).
Для автоматизации тестирования можно использовать:
- 🤖 Vanessa-ADD (библиотека для автоматического тестирования 1С).
- 📊 1С:Тест-центр (встроенный инструмент в 1C:EDT).
- 🔄 Jenkins + OneScript для запуска тестов после каждого коммита.
⚠️ Внимание: Если ваш патч затрагивает регламентные задания (например, автоматическое формирование отчётов в УТ 11), обязательно проверьте их выполнение в фоновом режиме. Ошибки в регламентных заданиях могут остаться незамеченными, но привести к проблемам через неделю работы.
Что будет, если не протестировать патч?
Без тестирования патч может:
1. Удалить критические данные (например, очистить справочник Номенклатура при ошибке в обработке загрузки).
2. Заблокировать работу пользователей (например, из-за бесконечного цикла в триггере ПередЗаписью).
3. Сломать интеграции (например, обмен с 1С:Документооборот перестанет работать из-за изменения структуры данных).
4. Привести к потере лицензии (в облачных базах 1C:Fresh некорректный патч может вызвать ошибку лицензирования).
Установка патча на рабочую базу: нюансы и типичные ошибки
Когда патч протестирован, можно приступать к установке. Важно учесть режим работы базы (файловый или клиент-серверный) и версию платформы.
Установка в файловом режиме
- Закройте все сеансы пользователей (
Администрирование → Активные пользователи → Завершить сеансы). - Откройте базу в режиме Конфигуратор.
- Выберите
Конфигурация → Загрузить конфигурацию из файлаи укажите путь к патчу (.cfили.cfu). - Подтвердите объединение изменений.
- Обновите базу данных (
Конфигурация → Обновить базу данных).
Установка на клиент-серверной базе
Здесь процесс сложнее:
- Остановите кластер серверов 1С:
oscript -execute "ПодключитьБиблиотеку('1C:EnterpriseScript');Сервер = Новый Сервер1С();
Сервер.ОстановитьКластер('ИмяКластера');"
- Установите патч через Конфигуратор (аналогично файловому режиму).
- Обновите базу данных.
- Перезапустите кластер:
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
Для командной разработки:
- Настройте 1C:EDT для работы с Git.
- Создайте Jenkins-пайплайн, который:
- 🔍 Запускает тесты после каждого коммита.
- 📦 Собирает патч при успешном прохождении тестов.
- 🚀 Устанавливает его на тестовую базу.
3. Vanessa-Automation
Этот инструмент позволяет:
- 🤖 Автоматизировать тестирование патчей.
- 📊 Генерировать отчёты об ошибках.
- 🔄 Интегрироваться с CI/CD системами.
Пример теста на Vanessa-ADD:
Перем Тест;
Тест = Тесты.Добавить("Проверка нового реквизита в справочнике Контрагенты");
Тест.Шаги.Добавить("Открыть справочник Контрагенты");
Тест.Шаги.Добавить("Создать нового контрагента");
Тест.Шаги.Добавить("Проверить наличие реквизита 'Комментарий'");
Тест.Шаги.Добавить("Заполнить реквизит и сохранить");
Тест.Выполнить();
⚠️ Внимание: При автоматизации учитывайте лицензионные ограничения. Например, для работы с 1C:EDT требуется отдельная лицензия, а Jenkins может конфликтовать с политиками безопасности вашей компании.
Частые проблемы с патчами и как их решить
Даже опытные разработчики сталкиваются с ошибками при работе с патчами. Разберём TOP-5 проблем и способы их решения:
1. Ошибка "Конфликт объектов метаданных"
Причина: Патч изменяет объекты, которые уже были модифицированы в целевой базе (например, в УТ 11 добавили новый реквизит в документ ЗаказКлиента, а патч пытается изменить тот же документ).
Решение:
- Используйте
Объединение конфигурацийс ручным разрешением конфликтов. - Создайте расширение конфигурации вместо патча (подходит для 1С:Предприятие 8.3.10+).
2. Патч не устанавливается на клиент-серверной базе
Причина: Не хватает прав на сервере SQL или PostgreSQL, либо версия патча несовместима с версией сервера.
Решение:
- Проверьте права пользователя 1С в 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С (если он включён). - Для клиент-серверных баз — восстановить бэкап SQL или PostgreSQL.
Если резервной копии нет, попробуйте:
- Загрузить предыдущую версию конфигурации из файла.
- Использовать
Сравнение и объединение конфигурацийдля ручного отката изменений.
Как сделать патч для облачной базы 1C:Fresh?
В 1C:Fresh установка патчей имеет ограничения:
- 🔧 Вы можете дорабатывать конфигурацию только через расширения (не путайте с патчами!).
- ☁️ Патчи в формате
.cf/.cfuустанавливать нельзя — все изменения вносятся через веб-интерфейс. - 📅 Обновления типовой конфигурации приходят автоматически, их нельзя отменить.
Для переноса доработок:
- Создайте расширение конфигурации в локальной базе.
- Экспортируйте его в файл (
.cfe). - Загрузите в 1C:Fresh через
Настройки → Расширения.
Чем отличаются форматы .cf и .cfu?
Это два основных формата файлов конфигурации в 1С:
| Формат | Описание | Когда использовать |
|---|---|---|
.cf |