Как правильно обновить типовую конфигурацию 1С, подключенную к хранилищу

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Обновление типовых конфигураций 1С, находящихся под управлением хранилища, — это процедура, требующая строгого соблюдения последовательности действий. Основные сложности возникают из-за механизмов блокировки объектов (захвата) и необходимости синхронизации конфигурации поставщика между всеми участниками разработки. Разберем детально, как выполнить эту задачу эффективно и без потери данных.

Метод 1: Прямое обновление с захватом корня конфигурации

Рассмотрим стандартный сценарий, когда мы работаем непосредственно в базе, подключенной к хранилищу. Основная проблема здесь — заблокированные объекты. Если мы попытаемся запустить обновление без предварительной подготовки, система выдаст ошибку доступа.

Проанализируем шаги, которые необходимо выполнить:

  1. Захват всей конфигурации. Чтобы обновить типовое решение, нам нужно внести изменения во множество объектов метаданных. В окне конфигурации выделим самый верхний элемент (корень конфигурации), нажмем правую кнопку мыши и выберем пункт «Захватить в хранилище». Важный нюанс: в появившемся диалоговом окне обязательно установим флаг «Включать подчиненные объекты». Это позволит нам заблокировать не только настройки самой конфигурации, но и все справочники, документы и прочие объекты, которые затронет обновление.
  2. Запуск процедуры обновления. Перейдем в меню «Конфигурация» — «Поддержка» — «Обновить конфигурацию». Выберем файл обновления (.cfu) или полный файл конфигурации (.cf).
  3. Сравнение и объединение. После того как система проанализирует изменения, откроется окно сравнения. На этом этапе мы можем выполнить стандартную настройку правил объединения, сохраняя свои доработки.
  4. Помещение изменений в хранилище. После завершения объединения и проверки работоспособности, нам необходимо поместить все изменения обратно. Выбираем корень конфигурации и нажимаем «Поместить в хранилище». Вместе со структурой метаданных в хранилище уйдет и обновленная конфигурация поставщика.

Выясним причину, почему иногда кажется, что конфигурация поставщика не обновилась. Это происходит, если при обновлении не был захвачен корень или если другие разработчики не выполнили команду «Обновить конфигурацию из хранилища» в своих локальных базах.

Метод 2: Обновление через «Буферную» базу (Рекомендуемый подход)

Для крупных проектов (например, на базе ERP или «Комплексной автоматизации») блокировка всех объектов в хранилище на длительное время может парализовать работу всей команды. В такой ситуации мы рекомендуем использовать «буферную» базу.

Разберем этот процесс по шагам:

  1. Создадим копию текущей базы, но отключим ее от хранилища.
  2. В этой базе выполним стандартное обновление через поддержку, перенесем все доработки и проведем тестирование.
  3. Выгрузим финальный результат в файл .cf (Конфигурация — Сохранить конфигурацию в файл).
  4. Вернемся в основную базу, подключенную к хранилищу. Захватим в ней корень конфигурации с подчиненными объектами.
  5. Выполним команду «Конфигурация — Загрузить конфигурацию из файла», указав наш подготовленный .cf.
  6. Сразу после загрузки поместим изменения в хранилище.

Такой подход минимизирует время, в течение которого объекты в хранилище остаются захваченными одним пользователем. Проанализируем преимущество: пока вы три часа вручную объединяете формы в буферной базе, другие программисты могут продолжать работать в хранилище над своими задачами.

Особенности обновления конфигурации поставщика

Часто возникает вопрос: как обновить только «движок» поддержки, не меняя основную конфигурацию базы данных немедленно? Посмотрим на ситуацию, описанную опытными разработчиками. Можно запустить процесс обновления через поддержку, а в окне сравнения и объединения снять галочку с корня конфигурации. После нажатия кнопки «Выполнить» система предложит обновить только конфигурацию поставщика. Это полезно, когда нужно актуализировать информацию о версии, но сами изменения в метаданные планируется внедрять позже.

Важно помнить, что хранилище транслирует изменения конфигурации поставщика всем пользователям автоматически, но только при условии помещения в него корня конфигурации Configuration.

Оптимизация и решение типичных проблем

При работе с хранилищем мы можем столкнуться с так называемыми «призрачными» изменениями. Если мы захватили все объекты «за компанию», но не меняли их, в истории хранилища могут появиться пустые версии. Чтобы этого избежать, перед финальным помещением объектов в хранилище воспользуемся функцией «Снять захват с неизмененных объектов».

Также рассмотрим ситуацию с кэшем. Если после обновления из хранилища вы видите странные ошибки или неверную версию в окне «О программе», попробуйте очистить локальный кэш хранилища, который находится в папке ConfigSave в профиле пользователя. Это часто решает проблемы рассинхронизации метаданных.

Для автоматизации рутинных операций можно использовать параметры командной строки. Например, команда для обновления из хранилища выглядит так:


"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F "ПутьКБазе" /N "Логин" /P "Пароль" /ConfigurationRepositoryF "ПутьКХранилищу" /ConfigurationRepositoryN "ЛогинХранилища" /ConfigurationRepositoryP "ПарольХранилища" /ConfigurationRepositoryUpdateConfig -force

Однако помните, что полная загрузка файла .cf в базу с хранилищем через пакетный режим требует предварительного программного захвата всех объектов, что реализуется через специализированные скрипты автоматизации (например, на языке OneScript).

В заключение отметим: никогда не удаляйте старое хранилище и не создавайте новое только ради обновления. Это лишает вас истории разработки. Следуя описанным выше методикам захвата корня и использования буферных баз, вы сможете поддерживать конфигурацию в актуальном состоянии, сохраняя целостность всех механизмов 1С.

← На главную