Получаем изменения из хранилища конфигурации 1С 8.3 вручную и по расписанию
Содержание
Чтобы обновить конфигурацию
1С из хранилища, откройте базу в Конфигураторе и выберите Конфигурация → Хранилище конфигурации → Обновить конфигурацию из хранилища. Платформа заберёт последнюю версию в основную конфигурацию. Затем примените её к данным: Конфигурация → Обновить конфигурацию базы данных (F7). Без второго шага пользователи изменений не увидят.
Типичная ситуация: программист поместил в хранилище исправленную печатную форму, бухгалтер просит «уже обновить базу », а в рабочей базе всё по-старому. Почти всегда причина одна: изменения получили в конфигурацию, но не применили к базе данных. Или не получили вовсе, потому что база не подключена к хранилищу. Разберём весь путь: от создания хранилища до ночного обновления по расписанию.
Механизм общий для платформы 8.3 и не зависит от конфигурации. Бухгалтерия, ЗУП, УТ или своя разработка обновляются из хранилища одинаково.
1. Что подготовить до подключения к хранилищу
Хранилище конфигурации — это отдельная база версий. В ней лежит история изменений конфигурации, кто и когда что поменял. Работать с ним можно тремя способами.
| Вариант | Адрес подключения | Когда подходит |
|---|---|---|
| Файловое хранилище | путь к каталогу, например \\srv\repo\buh | 1–3 разработчика в одной локальной сети |
Сервер хранилища crserver | tcp://srv-repo/buh | команда, удалённые разработчики, нужна стабильность |
| Через веб-сервер | http://srv-web/repo/repo.1ccr | доступ через интернет без открытия порта сервера хранилища |
📌 Что проверить заранее:
- 🖥 Версия платформы. Сервер хранилища и клиент должны работать на одной версии платформы. Если разработчики на 8.3.24, а
crserverна 8.3.22, подключения не будет. - 🔌 Порт. Сервер хранилища по умолчанию слушает порт
1542. Его нужно открыть в брандмауэре сервера. - 📁 Права на каталог. Для файлового варианта у всех пользователей Windows, которые подключаются к хранилищу, должны быть права на чтение и запись в папку.
- 👤 Учётная запись хранилища. Пользователи хранилища не связаны с пользователями информационной базы. Их заводит администратор хранилища.
Создание хранилища
- Откройте эталонную базу с нужной конфигурацией в Конфигураторе.
- Выберите
Конфигурация → Хранилище конфигурации → Создать хранилище. - Укажите адрес: каталог или
tcp://…. - Задайте имя и пароль администратора хранилища.
- Платформа поместит текущую конфигурацию в хранилище как первую версию, а базу подключит к нему.
Дальше администратор открывает Конфигурация → Хранилище конфигурации → Администрирование и заводит пользователей. Каждому выдаются права: захват объектов, изменение состава версий, административные функции. Для базы, которая только получает изменения, достаточно пользователя без права захвата.
Для рабочей базы заведите отдельного пользователя хранилища, например prod-update. Так в истории сразу видно, что рабочая база ничего не помещала, а только получала.
2. Где настраивается подключение: Конфигуратор, а не режим Предприятия
Частый вопрос: можно ли подключиться к
хранилищу из пользовательского режима. Нельзя. Подключение, получение изменений и обновление структуры базы выполняются только в Конфигураторе или пакетной командой 1cv8 DESIGNER. В режиме 1С:Предприятие хранилища «не видно».
Из Предприятия на этапе обновления нужно одно: заблокировать работу пользователей, если обновление требует монопольного доступа. В типовых конфигурациях на БСП это делается в разделе Администрирование, в группе команд обслуживания, через блокировку работы пользователей. Там же задаётся код разрешения, который потом передаётся в пакетную команду через ключ /UC.
Подключение базы к хранилищу
- Откройте базу в Конфигураторе под пользователем с административными правами.
- Выберите
Конфигурация → Хранилище конфигурации → Подключиться к хранилищу. - Укажите адрес хранилища, имя и пароль пользователя хранилища.
- Если конфигурация базы отличается от конфигурации в хранилище, платформа предупредит: основная конфигурация будет заменена конфигурацией хранилища. Соглашайтесь, только если это ожидаемо.
- После подключения в дереве метаданных у объектов появятся значки состояния (захвачен вами, захвачен другим, свободен).
Подключение рабочей базы с доработками, которых нет в хранилище, сотрёт эти доработки в основной конфигурации. Перед первым подключением выгрузите конфигурацию в файл: Конфигурация → Сохранить конфигурацию в файл.
Один пользователь хранилища одновременно может быть подключён только из одной информационной базы. Если та же учётная запись уже привязана к базе разработчика, для рабочей базы нужна другая.
3. Как получить изменения из хранилища и применить их к базе
Процесс всегда двухэтапный. Сначала изменения попадают в основную конфигурацию, потом — в конфигурацию базы данных, с которой работают пользователи.
Шаг 1. Получение изменений
- Конфигуратор →
Конфигурация → Хранилище конфигурации → Обновить конфигурацию из хранилища. - Платформа покажет, какие объекты изменятся, добавятся или удалятся. Просмотрите список.
- Подтвердите. Основная конфигурация станет равна последней версии хранилища.
Если нужны только отдельные объекты, щёлкните по ним правой кнопкой в дереве метаданных и выберите Хранилище → Получить из хранилища. Это удобно, когда коллега ещё не закончил другие правки, а исправление печатной формы нужно сегодня.
Шаг 2. Обновление конфигурации базы данных
- Нажмите F7 или выберите
Конфигурация → Обновить конфигурацию базы данных. - Если меняется структура данных (новые реквизиты, регистры, табличные части), платформа покажет список реструктуризации. Прочитайте его: удаление реквизита означает потерю данных в нём.
- Нажмите «Принять».
Монопольный режим нужен только тогда, когда меняется структура хранения. Правка модуля или макета обычно применяется и при открытых сеансах. Платформа в этом случае предложит динамическое обновление.
Динамическое обновление в рабочей базе — компромисс. Сеансы, открытые до обновления, продолжают работать на старой версии, пока пользователь не перезапустит программу. Ошибки, которые вы исправили, у них останутся. Лучше обновляться в нерабочее время.
4. Версии хранилища: откат, метки, сравнение
Каждое помещение в хранилище создаёт новую версию с номером, датой, автором и комментарием. Посмотреть их можно через Конфигурация → Хранилище конфигурации → История хранилища.
Что можно сделать с версией:
- 🔍 Сравнить две версии или версию с текущей конфигурацией. Так проверяют, что именно придёт в рабочую базу.
- 🏷 Установить метку, например
Релиз 2.4 — в прод. По меткам удобно фильтровать историю, если версий сотни. - 💾 Сохранить версию в файл
.cf. Это готовый дистрибутив конкретной сборки. - 📄 Отчёт по версиям — список изменённых объектов с комментариями за период.
Как обновить рабочую базу не до последней, а до нужной версии
Последняя версия хранилища не всегда готова к выпуску. Есть два рабочих подхода.
- Пакетная команда с номером версии. Ключ
-vу/ConfigurationRepositoryUpdateCfgполучает конкретную версию (пример ниже). - Через файл. Сохраните нужную версию из истории в
.cf, отключите рабочую базу от хранилища или держите её неподключённой и загрузите файл черезКонфигурация → Загрузить конфигурацию из файлалибо черезСравнить, объединить.
| Подход | Плюс | Минус |
|---|---|---|
| Рабочая база подключена к хранилищу | обновление одной командой | легко случайно получить незавершённые правки |
Рабочая база не подключена, обновление из .cf | в прод попадает только проверенная сборка | лишний шаг с файлом |
| Получение по номеру версии | точный контроль без файла | номер нужно записывать перед каждым выпуском |
Договоритесь в команде: каждую версию, которая уходит в рабочую базу, помечать меткой. Тогда номер для команды -v берётся из истории за секунды, а откат к прошлому выпуску понятен любому.
5. Автоматическое обновление из хранилища по расписанию
Регламентные задания 1С здесь не помогут: они работают в режиме Предприятия, а получение изменений возможно только в режиме Конфигуратора. Автоматизация строится на пакетном запуске 1cv8.exe DESIGNER и планировщике заданий Windows или cron в Linux.
Пример bat-файла для серверной базы:
@echo off
set V8="C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe"
set LOG=D:\1c-update\log_%date:~-4%%date:~3,2%%date:~0,2%.txt
%V8% DESIGNER /S "srv-1c\buh" /N "Администратор" /P "pass" ^
/UC "КодРазрешения" ^
/ConfigurationRepositoryF "tcp://srv-repo/buh" ^
/ConfigurationRepositoryN "prod-update" ^
/ConfigurationRepositoryP "repo-pass" ^
/ConfigurationRepositoryUpdateCfg -force ^
/UpdateDBCfg ^
/DisableStartupDialogs /DisableStartupMessages ^
/Out %LOG%
Что делают ключи:
/ConfigurationRepositoryF,N,P— адрес хранилища, пользователь и пароль хранилища./ConfigurationRepositoryUpdateCfg— получить изменения в основную конфигурацию.-force— подтверждение, что можно добавлять новые и удалять существующие объекты. Без него пакетное обновление остановится, если в версии есть такие изменения.-v 125— получить версию 125 вместо последней (добавляется после/ConfigurationRepositoryUpdateCfg)./UpdateDBCfg— сразу применить изменения к базе данных./UC— код разрешения запуска при установленной блокировке сеансов./Out— файл журнала. Без него о сбое ночью вы не узнаете.
Для файловой базы вместо /S "srv-1c\buh" укажите /F "D:\Bases\buh".
Порядок ночного обновления
- Установить блокировку сеансов с кодом разрешения (вручную в Предприятии или средствами администрирования кластера).
- Сделать резервную копию базы
: выгрузку
.dtили бэкап средствами СУБД. - Запустить bat-файл из планировщика под учётной записью, у которой есть доступ к хранилищу и к пути с платформой.
- Проверить журнал
/Outи код возврата. - Снять блокировку.
Блокировка сеансов и завершение активных соединений оборвут работу пользователей с несохранёнными документами. Ставьте задание на время, когда в базе никого нет, и предупреждайте заранее.
6. Ошибки при обновлении из хранилища и как их устранить
Если в рабочей базе есть локальные доработки
Иногда в рабочую базу правили модуль напрямую, мимо хранилища. При обновлении из хранилища эти правки будут перезаписаны версией из хранилища. Порядок спасения:
- Сохраните текущую конфигурацию в
.cf. - Выполните
Конфигурация → Сравнить конфигурациимежду основной конфигурацией и конфигурацией хранилища. - Перенесите нужные правки в базу разработчика, захватите объекты и поместите их в хранилище.
- Только потом обновляйте рабочую базу.
Если хранилище повреждено
Сообщения о нарушении целостности или ошибки чтения файла хранилища — повод сначала сделать копию каталога хранилища целиком. Сервер хранилища на время копирования лучше остановить, предупредив разработчиков. Дальше восстанавливайте каталог из резервной копии. Резервное копирование самого хранилища настройте так же, как бэкап рабочих баз: это такая же база, и её потеря стоит всей истории разработки.