← На главную
При развертывании и активной доработке нетиповой конфигурации 1С (особенно на базе БСП) одним из ключевых вопросов становится организация процесса обновления рабочей базы. Частота изменений, потребность в оперативности и необходимость минимизации рисков требуют продуманного подхода. Давайте вместе рассмотрим различные варианты, их преимущества и недостатки, а также современные практики, которые помогут вам оптимизировать этот процесс.
Предположим, что вы, как и автор темы, работаете с тремя типами баз:
- Разработческие базы: Несколько легких баз без данных, связанных хранилищем конфигурации.
- Тестовая база: Для объединения всех изменений разработчиков и их последующего тестирования.
- Рабочая база: Непосредственно продуктивная база предприятия.
Обновления в таких условиях, особенно если они частые (раз в 5-7 дней) и конфигурация будет активно дорабатываться, требуют взвешенного решения. Рассмотрим два основных варианта и дополнительные рекомендации.
Вариант 1: Обновление рабочей базы напрямую из хранилища конфигурации
Этот подход предполагает подключение рабочей базы к хранилищу конфигурации, создание для нее отдельного пользователя хранилища и обновление по мере необходимости. Рассмотрим его подробнее.
Преимущества:
- Высокая скорость обновлений: Это одно из главных преимуществ данного метода. Процесс получения изменений из хранилища и их применения в базу происходит значительно быстрее по сравнению с формированием и накатыванием поставок.
- Возможность выборочного получения объектов: Если вам нужно внести только точечные изменения или исправления, вы можете получить из хранилища не всю конфигурацию, а лишь отдельные объекты метаданных. Это может быть полезно для оперативного устранения критических ошибок.
- История изменений: Хранилище 1С ведет историю всех изменений. Это позволяет отслеживать, кто и когда внес определенные изменения, и при необходимости сравнивать текущую версию объекта с предыдущими.
Недостатки:
- Риск попадания недоделанного или нестабильного кода: Это главный и самый серьезный минус. Если в хранилище попадает код, который еще не прошел полное тестирование, или содержит ошибки, он может быть случайно или намеренно получен в рабочую базу, что приведет к сбоям в работе.
- Ограниченные возможности глобального отката: Хотя хранилище позволяет сравнивать версии и точечно возвращать код, полноценный глобальный откат конфигурации со всеми изменениями метаданных (например, удалением новых объектов) может быть сложным и трудоемким, часто сопровождаемым "мутью" и непредсказуемым поведением. Обычно это сводится к ручному восстановлению кода из предыдущих версий.
- Отсутствие стандартного окна сравнения/объединения: При простом получении из хранилища (
Конфигурация -> Обновить конфигурацию базы данных -> Обновить конфигурацию базы данных) окно сравнения и объединения, привычное при обновлениях от поставщика, не появится, если в рабочей базе нет локальных изменений. Это означает, что вы получаете "как есть", без дополнительного контроля.
Для кого подходит: Этот вариант подходит для команд с высокой дисциплиной разработки, строгим контролем качества и тестирования на тестовой базе перед коммитом в основную ветку, а также для случаев, когда требуется максимально быстрая доставка изменений.
Вариант 2: Обновление рабочей базы через формирование поставки
Этот подход предполагает, что для каждого релиза (порции изменений) вы меняете версию конфигурации, в тестовой базе формируете файл поставки (.cfu или .cf), а затем уже эту поставку накатываете на рабочую базу.
Преимущества:
- Контролируемый процесс обновления: Поставка обычно формируется из уже протестированной и стабильной версии конфигурации. Это значительно снижает риск попадания недоделанного или ошибочного кода в продуктивную среду.
- Наличие окна сравнения и объединения: При накатывании поставки (особенно если это файл
.cf или .cfu, который отличается от текущей конфигурации в базе) всегда появляется окно сравнения и объединения. Это дает администратору или программисту полный контроль над всеми вносимыми изменениями, позволяя тщательно проанализировать их, выбрать, что принимать, а что нет, и настроить параметры объединения, как при обновлении типовых конфигураций. Это позволяет избежать случайных ошибок и гарантирует, что в базу попадет только то, что необходимо.
- Изоляция от текущей разработки: Поставка представляет собой "снимок" конфигурации на определенный момент времени. Это означает, что даже если разработчики продолжают активно работать с хранилищем и вносить новые изменения, сформированная поставка остается стабильной версией, не зависящей от дальнейшей работы.
Недостатки:
- Длительность и трудоемкость процесса: Формирование поставки, смена версий, а затем ее накатывание – это значительно более долгий и трудоемкий процесс по сравнению с получением из хранилища. Это может быть критично при частых обновлениях.
- Необходимость хранения предыдущих версий: Для возможности отката к предыдущей версии вам придется отдельно хранить файлы поставок или конфигураций предыдущих релизов.
- Отсутствие гибкости в выборочном обновлении: Поставка – это всегда целостный пакет изменений. Вы не можете выборочно применить только часть объектов из поставки (хотя в окне сравнения вы можете выборочно отключать изменения, но это не то же самое, что "получить объект из хранилища").
Для кого подходит: Этот вариант предпочтителен для команд, которым важен строгий контроль над каждым обновлением, кто готов тратить больше времени на процесс ради повышения стабильности, а также для ситуаций, когда изменения несут высокие риски для бизнес-процессов.
Дополнительные рекомендации и современные практики для оптимизации процесса
Независимо от выбранного основного способа обновления, существуют современные подходы и практики, которые могут значительно улучшить качество, скорость и безопасность процесса разработки и внедрения изменений в 1С.
-
Использование расширений конфигурации вместо прямых доработок
Если ваша нетиповая конфигурация основана на типовой (даже если она сильно доработана), мы настоятельно рекомендуем максимально использовать механизм расширений конфигурации, который появился в платформе 1С:Предприятие, начиная с версии 8.3.9. Почему это критически важно:
- Минимизация конфликтов: Расширения позволяют вносить изменения или добавлять новый функционал, не снимая конфигурацию с поддержки поставщика и не изменяя ее непосредственно. Это значительно упрощает последующие обновления самой типовой части конфигурации, так как уменьшает количество конфликтов при сравнении и объединении.
- Модульность: Доработки, оформленные в виде расширений, становятся более модульными и независимыми от основной конфигурации.
- Гибкость: Внешние доработки, такие как печатные формы и отчеты, также могут быть реализованы без изменения основной конфигурации, что повышает их переносимость и управляемость.
Применяя расширения, вы сможете гораздо быстрее и безопаснее обновлять основную конфигурацию, а ваши доработки будут управляться отдельно.
-
Использование внешних систем контроля версий (СКВ) типа Git
Хотя хранилище 1С предоставляет базовые функции контроля версий, для более гибкой групповой разработки, детального отслеживания изменений и возможности отката, особенно при использовании среды разработки 1C:Enterprise Development Tools (EDT), мы советуем использовать Git. Рассмотрим его преимущества:
- Детальная история изменений: Git предоставляет более продвинутые функции по сравнению со стандартным хранилищем 1С, включая удобную историю изменений, возможность сравнения любых версий и ветвление.
- Гибкая работа с ветками: Вы можете создавать отдельные ветки для каждой задачи, проводить слияния, решать конфликты и возвращаться к предыдущим состояниям с гораздо большей гибкостью.
- Интеграция с 1C:EDT: Если вы используете
1C:EDT, она имеет встроенную поддержку Git, что позволяет работать с этой системой без ограничений, храня конфигурацию в виде файлов.
Важно учитывать лицензионные ограничения 1С при публикации разработок, содержащих фрагменты типовых библиотек, в публичных репозиториях.
-
Принципы CI/CD (Continuous Integration/Continuous Delivery) для 1С
Современные практики разработки подразумевают применение CI/CD, что позволяет автоматизировать процессы интеграции изменений, тестирования и доставки обновлений. Для 1С это может включать:
- Хранение конфигурации в Git: Как уже обсуждалось, это основа для автоматизации.
- Автоматическая проверка изменений: При каждом коммите в Git можно настроить автоматическую проверку кода на соответствие стандартам или на наличие синтаксических ошибок.
- Запуск автоматизированных тестов: Для повышения качества релизов и снижения ошибок мы рекомендуем использовать инструменты автоматизированного тестирования, такие как
Vanessa-Automation, xUnitFor1C или встроенные механизмы 1С:EDT. Тесты должны запускаться автоматически при каждом изменении.
- Автоматическая сборка конфигурации: Можно настроить автоматическую сборку конфигурации из файлов
Git в файл .cf или .cfu без ручной работы администратора.
- Автоматизированное развертывание обновлений: На финальном этапе можно автоматизировать процесс накатывания обновлений в тестовые и продуктивные базы.
Внедрение CI/CD для 1С позволяет значительно повысить качество и скорость выпуска релизов, а также обеспечить прозрачность процесса внедрения изменений.
-
Соблюдение стандартов разработки и документирование
Независимо от выбранного способа обновления, критически важно грамотно оформлять все доработки. Это не только упрощает работу команды, но и делает процесс обновления более предсказуемым:
- Комментирование изменений: Мы должны комментировать все изменения с указанием автора, даты и сути задачи. Это позволяет быстро понять, зачем был изменен тот или иной участок кода.
- Уникальные префиксы: Используйте уникальные префиксы для новых объектов метаданных (справочников, документов, регистров, реквизитов, форм и т.д.), чтобы отделять их от типового функционала. Например,
АВ_СправочникНовый.
- Сохранение типового кода: При изменении или удалении типового кода мы должны сохранять его исходный вариант в виде комментария. Это позволяет быстро вернуться к оригиналу при необходимости.
Такой подход упрощает процесс сравнения и объединения, помогает понять назначение доработок и минимизирует путаницу.
-
Тщательное тестирование
Перед переносом изменений в рабочую базу мы обязаны провести всестороннее тестирование на тестовой базе. Важно, чтобы конечные пользователи также участвовали в тестировании для выявления потенциальных проблем. Кроме того, создание плана возврата (отката) к предыдущей версии является обязательным на случай возникновения проблем в продуктивной среде.
-
Резервное копирование
Мы настоятельно рекомендуем перед каждым обновлением рабочей базы делать полную резервную копию. Это позволяет восстановить систему в случае непредвиденных ошибок, потери данных или некорректного обновления.
-
Автоматизация рутинных операций
Для сокращения времени и усилий, затрачиваемых на обновление, мы можем использовать специализированные инструменты для автоматизации обновления информационных баз 1С, в том числе нетиповых конфигураций. Такие инструменты могут автоматизировать анализ доработок, сопоставление изменений и само обновление, что особенно актуально для частых релизов.
Заключение и выбор оптимального варианта
Выбор между обновлением через хранилище и формированием поставок для сильно доработанной конфигурации 1С зависит от баланса между скоростью, контролем и ресурсами вашей команды:
- Если скорость критична, а команда высокодисциплинированна и имеет отлаженный процесс тестирования на тестовой базе, то обновление напрямую из хранилища может быть более эффективным. Однако это требует очень строгого соблюдения внутренних правил и высокого качества кода.
- Если приоритет отдается контролю и безопасности, и вы готовы мириться с большими временными затратами, то формирование и накатывание поставки будет более надежным вариантом, так как предоставляет явное окно сравнения и объединения.
В условиях частых обновлений (раз в 5-7 дней) и сильно доработанной конфигурации, мы рекомендуем не ограничиваться только одним из этих подходов, а рассмотреть внедрение комплексной стратегии:
- Максимальное использование расширений конфигурации для всех доработок.
- Переход на внешнюю систему контроля версий типа Git (особенно при работе с 1C:EDT).
- Постепенное внедрение практик CI/CD для автоматизации тестирования и развертывания.
- Строгое документирование и стандартизация кода.
- Обязательное тестирование на тестовой базе с участием пользователей.
- Регулярное резервное копирование перед каждым обновлением.
Такой подход позволит вам не только выбрать оптимальный метод обновления, но и значительно повысить общую эффективность, качество и безопасность разработки и поддержки вашей нетиповой конфигурации 1С.