Как обновить доработанную конфигурацию 1С и не потерять свои изменения
Содержание
Нетиповую конфигурацию 1С обновляют в Конфигураторе через Конфигурация → Поддержка → Обновить конфигурацию. Платформа сравнивает три версии: старую типовую, новую типовую и вашу доработанную. Изменения поставщика попадают в базу автоматически, а там, где менялись и вы, и фирма-разработчик, решение принимаете вы.
Автоматическое обновление из пользовательского режима для такой базы не подходит: оно либо откажется работать, либо затрёт часть доработок. Ниже весь цикл: подготовка, объединение, особые случаи с CF-файлами, проверка результата и автоматизация.
Чем обновление нетиповой конфигурации отличается от типовой
Типовая конфигурация стоит «на замке»: объекты поставщика не редактируются. Обновить её можно одной командой, конфликтов не бывает.
Нетиповая — это конфигурация, в которой включена возможность изменения и программист что-то поменял: модуль, форму, реквизит, макет печатной формы. Для неё обновление превращается в объединение.
| Типовая | Нетиповая | |
|---|---|---|
| Режим поддержки | Объекты не редактируются | Редактируются с сохранением поддержки или сняты с поддержки |
| Способ | Из пользовательского режима или CFU в Конфигураторе | Только Конфигуратор, сравнение и объединение |
| Конфликты | Нет | Дважды изменённые объекты |
| Время на релиз | Минуты | От часа до нескольких дней |
| Кто делает | Бухгалтер или администратор | Программист 1С |
Сложность зависит от трёх вещей:
- 🔹 Число дважды изменённых объектов. Десяток правок в своих общих модулях — час работы. Переписанный модуль проведения реализации, который поставщик тоже поменял, — уже ручная сборка кода.
- 🔹 Режим поддержки объектов. Объект, снятый с поддержки, обновление не трогает. Новые возможности поставщика в нём не появятся, пока вы не перенесёте их руками.
- 🔹 Отставание по релизам. Каждый пропущенный релиз — отдельное объединение, если нет полного CF-файла нужной версии.
Посмотреть, что именно доработано, можно до обновления: Конфигурация → Поддержка → Настройка поддержки. Объекты с изменениями помечены значками, а Конфигурация → Сравнить конфигурации покажет разницу между основной конфигурацией и конфигурацией поставщика.
Подготовка к обновлению нетиповой 1С
Главное правило: обновление делается на копии базы, а не на рабочей. В рабочую переносится уже проверенный результат.
Что собрать заранее
- Дистрибутив нужного релиза. Скачайте его с портала обновлений по подписке ИТС и установите шаблон (по умолчанию он попадает в каталог шаблонов
tmpltsв профиле пользователя). - Список допустимых переходов. В описании каждого релиза указано, с каких версий на него можно обновиться файлом
1cv8.cfu. Если ваш релиз туда не входит, придётся идти через промежуточные или брать полный1cv8.cf. - Версию платформы. Новые релизы требуют платформу с номером не ниже указанного в описании. Обновите платформу на всех рабочих местах и сервере до начала.
- Перечень доработок. Если программисты помечали правки комментариями, например
// +++ Петров 14.03 задача 512и// --- Петров, объединение пройдёт быстрее: сразу видно, чей код и зачем.
Резервные копии
Перед любыми действиями сделайте две копии:
- 📦 Выгрузку базы в
.dt:Администрирование → Выгрузить информационную базув Конфигураторе. Для неё нужен монопольный доступ, пользователей придётся отключить. - 📦 Файл конфигурации
.cf:Конфигурация → Сохранить конфигурацию в файл. Это ваш эталон доработок на случай, если объединение пойдёт не так.
Для клиент-серверной базы надёжнее штатный бэкап СУБД, а .dt держать как дополнительную копию.
Сравнение и объединение конфигураций по шагам
Это основной сценарий для конфигурации, которая стоит на поддержке с возможностью изменения.
Шаг 1. Запуск обновления
- Откройте тестовую копию в Конфигураторе и откройте конфигурацию.
- Выберите
Конфигурация → Поддержка → Обновить конфигурацию. - Укажите поиск доступных обновлений или выберите файл вручную:
1cv8.cfuиз каталога шаблонов либо полный1cv8.cf. - Подтвердите версию, на которую идёт обновление.
Платформа построит дерево сравнения. В нём три колонки состояния: основная конфигурация, старая и новая конфигурации поставщика.
Шаг 2. Отбор конфликтов
Включите флажок Показывать только дважды измененные свойства. В дереве останутся объекты, которые меняли и вы, и поставщик. Всё остальное объединится без вашего участия.
Для каждого конфликта выберите режим:
| Режим | Когда выбирать | Риск |
|---|---|---|
| Взять из новой конфигурации поставщика | Ваша доработка устарела или теперь есть в типовой | Доработка пропадёт |
| Объединить с приоритетом основной конфигурации | Ваша логика важнее, правки поставщика мелкие | Можно не получить исправление ошибки |
| Объединить с приоритетом новой конфигурации поставщика | Хотите типовое поведение, но сохранить добавленное | Ваш код может оказаться в неожиданном месте |
| Не объединять (оставить как есть) | Объект полностью ваш | Новые возможности поставщика в объекте не появятся |
Шаг 3. Модули — по процедурам
Для дважды изменённого модуля откройте сравнение кода. Платформа умеет объединять модуль по процедурам: для каждой процедуры отдельно указываете, чью версию брать.
Если поставщик и вы правили одну и ту же процедуру, автоматика не поможет. Возьмите версию поставщика и перенесите свою вставку вручную, сверяясь с сохранённым .cf. Ручная сборка дольше, зато потом код читается.
Не выбирайте для всех модулей «с приоритетом основной конфигурации» скопом ради скорости. Так в базе останутся старые процедуры, а новые формы будут вызывать то, чего нет. Ошибки вылезут уже у пользователей.
Шаг 4. Применение
- Нажмите
Выполнить. - Если платформа сообщит, что выбранные объекты ссылаются на неотмеченные, разрешите включить их в объединение. Иначе останутся битые ссылки.
- Выполните
Конфигурация → Обновить конфигурацию базы данных(F7). - В окне «Реорганизация информации» просмотрите список изменений структуры и примите его.
Обновление структуры базы требует монопольного доступа: все сеансы пользователей будут закрыты, работу нужно планировать на нерабочее время.
Обновление через CF-файл: когда без него не обойтись
Файл 1cv8.cfu содержит только разницу между конкретными релизами. Полный 1cv8.cf — всю конфигурацию целиком. Он нужен в трёх ситуациях.
Большое отставание по релизам
Если CFU с вашего релиза нет, выберите в Обновить конфигурацию полный CF нужной версии. Платформа выполнит то же трёхстороннее сравнение. Конфликтов будет больше, но один большой переход часто быстрее десяти маленьких.
Конфигурация снята с поддержки
Это самый тяжёлый случай. Базы старой версии поставщика нет, и сравнение становится двухсторонним: каждое отличие выглядит как конфликт, даже если его внёс поставщик.
Приём практиков — сначала восстановить поддержку, потом обновлять:
- Найдите
.cfтого же типового релиза, который сейчас стоит в базе (номер виден в свойствах конфигурации). - Выберите
Конфигурация → Сравнить, объединить с конфигурацией из файлаи укажите этот файл. - На вопрос о постановке на поддержку ответьте согласием.
- В дереве сравнения снимите все флажки, чтобы не изменить ни одного объекта, и выполните объединение.
Конфигурация встанет на поддержку, а в качестве старой версии поставщика запомнится ваш текущий типовой релиз. Дальше обновление идёт обычным путём из предыдущего раздела, с нормальным трёхсторонним сравнением.
Переход на другую конфигурацию или редакцию
Перейти с одной редакции на другую простым объединением обычно нельзя. Для таких переходов фирма выпускает отдельные инструкции и обработки переноса данных, и это уже другая задача.
Самая дешёвая стратегия на будущее — выносить доработки в расширения (.cfe, механизм появился в платформе 8.3.6). Основная конфигурация остаётся типовой и обновляется за минуты. После обновления остаётся проверить, что расширения применились: платформа выдаёт предупреждение, если расширение перестало подходить к изменённой конфигурации.
Проверка базы после обновления
Обновление в тестовой копии — половина работы. Вторая половина — убедиться, что ничего не сломалось.
Проверка конфигурации
Запустите Конфигурация → Проверка конфигурации. Отметьте синтаксический контроль модулей для всех режимов запуска (тонкий клиент, сервер, внешнее соединение) и поиск ссылок на несуществующие объекты. Каждую ошибку нужно закрыть до переноса в рабочую базу.
Первый запуск в режиме 1С:Предприятие
При первом входе выполнятся обработчики обновления: программа переносит данные под новую структуру. Дождитесь окончания и откройте Администрирование → Обслуживание → Результаты обновления программы. Если там есть ошибки отложенной обработки данных, разберите их по журналу регистрации.
Функциональная проверка
Проверьте всё, что затрагивали доработки и что обновил поставщик:
- 📄 Создание и проведение ключевых документов: реализация, поступление, банк, зарплата.
- 🖨 Доработанные печатные формы и отчёты.
- 🔄 Обмены с сайтом, складом, другими базами.
- 👥 Права доступа : войдите под пользователем с ограниченной ролью, а не только под администратором.
Хорошая проверка учёта — сравнить оборотно-сальдовую ведомость за закрытый период до и после обновления. Суммы должны совпасть. Если расходятся — переход что-то перепровёл, и разбираться нужно до переноса.
Перенос в рабочую базу
Есть два варианта. Сохранить результат тестовой копии в .cf и в рабочей базе выполнить то же объединение повторно. Или, если тестовая копия свежая и в рабочей за это время ничего не меняли в конфигурации, загрузить .cf целиком через Конфигурация → Загрузить конфигурацию из файла — поддержка при этом переносится вместе с файлом.
Если база подключена к хранилищу конфигурации, обновление делают в хранилище: захватывают корень конфигурации со всеми объектами, выполняют обновление и помещают изменения.
Ошибки после обновления и как их разобрать
Большинство проблем после объединения — следствие неверно выбранного режима для дважды изменённого объекта.
Частые промахи при объединении
- ❌ Обновление сразу в рабочей базе. Если объединение ушло не туда, откат — только из резервной копии и с потерей данных, введённых после неё.
- ❌ Пропуск предупреждения о ссылках на неотмеченные объекты. Конфигурация соберётся с битыми ссылками, проверка покажет десятки ошибок.
- ❌ Снятие объекта с поддержки ради «быстрой» правки. Через год этот объект станет главным тормозом обновлений.
- ❌ Проверка только под администратором. Новые роли и права поставщика могут закрыть пользователям доступ к доработанным объектам.
Автоматизация обновления нетиповых конфигураций
Если базы много или релизы выходят часто, ручное объединение становится узким местом. Автоматизация строится в два слоя.
Пакетный режим Конфигуратора
Типовые шаги — выгрузка, обновление, применение — запускаются из командной строки:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F"D:\Bases\Test" /N"Администратор" /P"пароль" /DisableStartupMessages /DumpIB "D:\Backup\before.dt" /Out "D:\Logs\dump.log"
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F"D:\Bases\Test" /N"Администратор" /P"пароль" /DisableStartupMessages /UpdateCfg "D:\Templates\1cv8.cfu" /UpdateDBCfg /Out "D:\Logs\update.log"
Для серверной базы вместо /F указывают /S"сервер\имябазы". Ключ /UpdateCfg обновляет конфигурацию на поддержке, /UpdateDBCfg применяет изменения к базе.
Без конфликтов это работает сразу. Для нетиповой конфигурации нужны заранее подготовленные настройки объединения: их сохраняют в XML-файл из окна сравнения и передают параметром -Settings. Полный список параметров смотрите в документации платформы для своей версии.
Конвейер CI/CD
Команды разработки со своим конвейером обычно используют такой набор:
- 🛠 1С:EDT и Git — исходники конфигурации хранятся как файлы, доработки видны в истории коммитов, слияние делается средствами Git.
- 🛠 vanessa-runner — обёртка над пакетным режимом: сборка, обновление, загрузка расширений одной командой.
- 🛠 Vanessa-Automation — сценарные тесты: проводят документы и сверяют результат после каждого релиза.
- 🛠 Сервер сборок (Jenkins, GitLab CI) — запускает цепочку «новый релиз → объединение → проверка конфигурации → тесты → отчёт».
Полностью автоматическое объединение возможно, только если доработки вынесены в расширения или конфликты стабильно решаются одинаково. Сложные дважды изменённые модули всё равно разбирает человек, конвейер лишь избавляет его от рутины.