Получение изменений из хранилища конфигурации и обновление структуры базы
Содержание
Чтобы обновить базу
1С из хранилища, откройте её в Конфигураторе, выберите Конфигурация → Хранилище конфигурации → Обновить конфигурацию из хранилища, а затем примените изменения к данным через Конфигурация → Обновить конфигурацию базы данных (клавиша F7). Первая команда меняет только основную конфигурацию, вторая переносит изменения в саму базу. Пока не выполнен второй шаг, пользователи работают по-старому.
Типичная ситуация: разработчик поместил в хранилище новую печатную форму и пишет в чат «забирайте». Бухгалтер открывает базу — формы нет. Причина почти всегда одна: изменения получили, а структуру базы не обновили. Или наоборот, базу вообще не подключали к хранилищу. Разберём весь путь по порядку для платформы 8.3: от подключения до пакетного обновления по расписанию.
Что проверить до получения изменений
Хранилище конфигурации — общее место, где команда разработчиков хранит версии конфигурации. Каждая база, подключённая к нему, имеет свою копию конфигурации и подтягивает свежие версии по команде.
Перед обновлением пройдитесь по короткому списку:
- 💾 Резервная копия. Выгрузите базу в
.dt(Администрирование → Выгрузить информационную базу) или сделайте бэкап средствами СУБД. Если новая версия окажется с ошибкой, откат займёт минуты. - 🔑 Учётные данные хранилища. Нужны адрес, имя пользователя хранилища и пароль. Это отдельные учётки, они не совпадают с пользователями базы.
- 🧩 Версия платформы. При работе по TCP версия платформы на вашем компьютере должна совпадать с версией сервера хранилища (
crserver). Разные сборки 8.3 — частая причина отказа в подключении. - 👥 Окно для обновления. Получить изменения можно при работающих пользователях. А вот обновление структуры базы с реструктуризацией таблиц потребует монопольного доступа.
- 📝 Свои незавершённые правки. Если вы сами захватывали объекты и не поместили их обратно, решите заранее: помещаете их или отменяете захват.
Рабочую базу компании обычно не подключают к хранилищу напрямую под учёткой разработчика. Для неё заводят отдельного пользователя хранилища с правом только на чтение. Так никто случайно не захватит объект в «боевой» базе.
Подключение базы к хранилищу конфигурации
Если база уже подключена, у объектов в дереве конфигурации видны значки хранилища, а в меню Конфигурация → Хранилище конфигурации активны команды захвата и обновления. Тогда переходите к следующему разделу.
Если не подключена, сделайте так:
- Запустите базу в режиме Конфигуратор под пользователем с правами администратора.
- Откройте конфигурацию:
Конфигурация → Открыть конфигурацию. - Выберите
Конфигурация → Хранилище конфигурации → Подключиться к хранилищу. - Укажите путь к хранилищу, имя и пароль пользователя хранилища.
- Подтвердите замену конфигурации. Платформа предупредит, что текущая конфигурация будет заменена содержимым хранилища, и загрузит последнюю версию.
Адрес хранилища бывает трёх видов:
| Вариант размещения | Как выглядит путь | Когда применяют |
|---|---|---|
| Файловый каталог | D:\Repo\Buh или \\srv\Repo\Buh | Один-два разработчика в локальной сети |
| Сервер хранилища по TCP | tcp://srv-1c/Buh или tcp://srv-1c:1542/Buh | Команда, работа через сеть |
| Публикация через веб-сервер | http://srv-1c/repo/repository.1ccr | Удалённые разработчики, доступ через интернет |
Порт сервера хранилища по умолчанию — 1542. Если сервер запущен на другом порту, его указывают в адресе явно.
При подключении текущая конфигурация базы заменяется конфигурацией из хранилища. Если в базе были доработки, которых нет в хранилище, они пропадут. Сохраните их заранее в файл .cf через Конфигурация → Сохранить конфигурацию в файл.
После подключения нужно сразу выполнить F7, иначе структура данных не будет соответствовать полученной конфигурации.
Получаем изменения из хранилища: пошагово
Обновить всё до последней версии
Основной сценарий — забрать в базу всё, что коллеги поместили в хранилище.
- В Конфигураторе выберите
Конфигурация → Хранилище конфигурации → Обновить конфигурацию из хранилища. - Если запросит — введите пароль пользователя хранилища.
- Платформа сравнит локальную конфигурацию с последней версией и получит изменённые объекты.
- Если у вас есть захваченные объекты, откроется диалог со списком. В нём отмечают, какие объекты получить из хранилища поверх ваших правок, а какие оставить как есть.
- Дождитесь окончания. В строке состояния или в окне сообщений появится итог.
Флажок рядом с захваченным объектом решает его судьбу. Отмеченный объект перезапишется версией из хранилища, и ваши несохранённые правки в нём пропадут. Неотмеченный останется в вашей редакции.
Получить отдельные объекты
Иногда нужен один исправленный отчёт, а не вся пачка изменений:
- Откройте окно хранилища:
Конфигурация → Хранилище конфигурации → Хранилище. - Найдите объект в дереве, выделите его.
- Вызовите команду «Получить» в контекстном меню или на панели окна.
- В диалоге оставьте флажки только на нужных объектах.
Будьте аккуратны: объект может зависеть от других. Например, новый реквизит документа ссылается на новый справочник. Если получить документ без справочника, конфигурация не пройдёт проверку при обновлении базы.
Откатиться или получить конкретную версию
История лежит в Конфигурация → Хранилище конфигурации → История хранилища. Там видно номер версии, автора, дату и комментарий. Из истории можно сравнить версию с текущей конфигурацией, сохранить её в файл .cf или получить в базу.
Полезный приём для проверки: сохраните интересующую версию в .cf и загрузите её в отдельную тестовую базу. Рабочая база при этом не трогается.
Объединение и конфликты версий
Внутри хранилища конфликтов в привычном смысле меньше, чем в системах вроде Git. Причина — захват. Пока объект захвачен одним разработчиком, остальные не могут его изменить. Два человека не правят один модуль одновременно.
Конфликты появляются в других сценариях:
- 🔀 База отключалась от хранилища и дорабатывалась отдельно. При повторном подключении платформа предложит заменить конфигурацию
. Свои правки сохраните в
.cf, подключитесь, захватите нужные объекты и перенесите изменения черезКонфигурация → Сравнить, объединить с конфигурацией из файла. - 📦 Поставщик выпустил новый релиз типовой. Обновление типовой конфигурации выполняют в одной базе разработки, подключённой к хранилищу. Захватывают корень конфигурации и объекты рекурсивно, обновляют поставку через сравнение-объединение, проверяют и помещают результат в хранилище. Остальные базы потом просто получают новую версию.
- ✋ Вы захватили объект, а коллега успел поместить связанные изменения. Перед помещением своих правок обновитесь из хранилища, проверьте конфигурацию (
Конфигурация → Проверка конфигурации) и только потом помещайте.
В окне сравнения-объединения для каждого объекта выбирают режим: взять из основной конфигурации, из файла или объединить. Для модулей доступно построчное объединение с приоритетом одной из сторон. Спорные места модулей лучше просматривать вручную: автоматический результат синтаксически корректен, но логику он не проверяет.
Комментарий при помещении в хранилище — ваш главный инструмент при разборе конфликтов. «Исправление» ничего не скажет через полгода. «Задача 1452: добавлен реквизит “Проект” в Поступление услуг» сэкономит час поиска нужной версии.
Обновление конфигурации базы данных
После получения изменений основная конфигурация новая, а база данных — старая. Признак: в заголовке дерева конфигурации стоит звёздочка или платформа подсказывает, что конфигурация базы данных отличается от основной.
Выполните Конфигурация → Обновить конфигурацию базы данных (F7). Дальше возможны три исхода:
| Что показала платформа | Что это значит | Что делать |
|---|---|---|
| Обновление прошло без вопросов | Изменения не затронули структуру таблиц | Пользователям достаточно перезапустить сеанс |
| Окно «Реорганизация информации» со списком изменений | Меняется структура хранения данных | Проверьте список, нажмите «Принять». Нужен монопольный доступ |
| Предложение динамического обновления | В базе есть активные сеансы | Динамическое обновление допустимо для небольших изменений; при реструктуризации надёжнее выгнать пользователей |
Окно реорганизации стоит прочитать, а не пролистать. Если в списке есть удаление реквизита или табличной части, данные в нём исчезнут. Это бывает нормально, но должно быть ожидаемо.
Для реструктуризации все пользователи должны выйти из базы. Если завершаете их сеансы принудительно через консоль кластера, предупредите людей заранее: несохранённые документы пропадут. Делайте это в обеденный перерыв или после рабочего дня.
После F7 запустите базу в режиме 1С:Предприятие. Если в релизе есть обработчики обновления, они выполнятся при первом запуске под администратором.
Пакетное обновление из командной строки
Ручной проход по Конфигуратору неудобен, когда баз несколько или обновлять нужно ночью. Платформа умеет выполнить оба шага в пакетном режиме.
Пример .bat для файловой базы:
@echo off
set V8="C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe"
%V8% DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "pass" ^
/ConfigurationRepositoryF "tcp://srv-1c/Buh" ^
/ConfigurationRepositoryN "prod_reader" ^
/ConfigurationRepositoryP "repo_pass" ^
/ConfigurationRepositoryUpdateCfg -force ^
/UpdateDBCfg ^
/DisableStartupDialogs ^
/Out "D:\Logs\repo_update.log"
Что делают ключи:
/ConfigurationRepositoryF,/ConfigurationRepositoryN,/ConfigurationRepositoryP— адрес хранилища, пользователь и пароль хранилища;/ConfigurationRepositoryUpdateCfg— получить изменения из хранилища;-force— не задавать вопросов о составе получаемых объектов;-v <номер>вместо-forceили вместе с ним — получить конкретную версию хранилища;/UpdateDBCfg— обновить конфигурацию базы данных;/Out— записать сообщения в журнал, чтобы утром было видно, чем закончилось.
Для серверной базы вместо /F указывают /S "srv-1c\buh". Номер сборки в пути к 1cv8.exe подставьте свой.
Пароли в открытом виде в .bat — риск. Храните скрипт в каталоге, доступ к которому есть только у администратора, а учётке prod_reader дайте в хранилище только право чтения.
Код возврата и журнал /Out проверяйте после каждого запуска. Пакетный режим не покажет окно с ошибкой: если структура не обновилась, это будет видно только в журнале.
Ошибки при обновлении из хранилища
Ниже собраны ситуации, которые чаще всего останавливают обновление, и порядок проверки.
Ещё один частый сюрприз — «пропала» доработка после обновления. Почти всегда это объект, который был отмечен в диалоге получения и перезаписался версией из хранилища. Если правки не успели попасть в хранилище, восстановить их можно только из резервной копии базы или сохранённого .cf.
Частые вопросы
Можно ли получить изменения из хранилища, пока пользователи работают?
Нужно ли подключать рабочую базу к хранилищу?
.cf и обновляют рабочую базу через сравнение-объединение. Первый вариант быстрее, второй даёт больше контроля.