Сборка конфигурации 1С: от выгрузки cf до готовой поставки

· 9 мин

Содержание

Сборка в 1С — это получение из рабочей конфигурации файла, который можно перенести на другую базу: .cf с полной конфигурацией, .cfe с расширением или комплект поставки с .cf и .cfu. Делается в Конфигураторе: меню Конфигурация → Сохранить конфигурацию в файл. Если сборку надо повторять каждую неделю, ту же операцию запускают из командной строки одной командой 1cv8.exe DESIGNER /DumpCfg.

Ниже по порядку: как подготовить базу, выгрузить конфигурацию мышкой, автоматизировать это, собрать расширение, объединить две конфигурации и не споткнуться на типичных ошибках.

Что нужно сделать до выгрузки конфигурации

Выгрузка «как есть» часто даёт файл, который на другой базе не загружается или тянет за собой лишнее. Проверьте четыре вещи.

  1. Конфигурация сохранена. Если в Конфигураторе есть несохранённые изменения, нажмите F7 (или кнопку «Сохранить конфигурацию ») и дождитесь окончания. Выгрузка берёт то, что уже записано в конфигурацию, а не то, что открыто в окне модуля.
  2. Конфигурация обновлена в базе. Команда Конфигурация → Обновить конфигурацию базы данных (F7 после правок) приводит структуру базы к тому, что вы собираетесь отдать. Иначе на выходе будет конфигурация, которую вы сами ни разу не запускали.
  3. Понятно, что именно собираем. Это основная конфигурация (типовая с доработками) или конфигурация поставщика? Если база стоит на поддержке, посмотрите режим: Конфигурация → Поддержка → Настройка поддержки. От него зависит, можно ли потом объединять.
  4. Есть права. Для Конфигуратора нужна роль с правом «Администрирование» и доступом к режиму конфигуратора. Под обычным пользователем пункты меню будут серыми.

Если база файловая и в ней работают пользователи, выгрузка конфигурации не требует монопольного доступа. А вот обновление структуры базы, загрузка .dt и некоторые операции с конфигурацией — требуют. Перед ними предупредите людей и попросите выйти.

Для серверной базы удобно сначала сделать копию: либо выгрузить информационную базу в .dt (Администрирование → Выгрузить информационную базу), либо снять резервную копию средствами СУБД. Один раз перед первой сборкой, дальше достаточно регулярных копий.

Как выгрузить конфигурацию в файл через интерфейс

Это основной способ для разовой сборки. Запустите базу в режиме Конфигуратора и действуйте по шагам.

  1. Откройте базу с пометкой «Конфигуратор» в списке баз 1С.
  2. Откройте конфигурацию: Конфигурация → Открыть конфигурацию (дерево метаданных слева).
  3. Выберите Конфигурация → Сохранить конфигурацию в файл….
  4. Укажите имя и папку. Расширение будет .cf. Лучше сразу включить в имя дату и версию, например БП_3.0.155.cf.
  5. Нажмите «Сохранить» и дождитесь закрытия окна прогресса. Типовая конфигурация весит десятки мегабайт.

Так выгружается вся основная конфигурация целиком, вместе с модулями, формами, макетами и ролями. Данных (документов, справочников) в файле нет — только структура и код.

Загрузка файла на другую базу

На целевой базе меню Конфигурация → Загрузить конфигурацию из файла…, выбираете .cf. Если конфигурация на поддержке, программа спросит, включить ли возможность изменения. Для переноса готовой сборки без дальнейшей разработки отвечайте «Нет», для продолжения доработки — «Да».

После загрузки обязательно обновите конфигурацию базы данных (F7). Без этого шага изменения в структуре не применятся и пользователи увидят старое поведение или ошибку при запуске.

Что выбрать: cf, cfu или dt

ФайлЧто внутриКогда нужен
.cfВся конфигурацияПеренос на пустую или существующую базу, архив версии
.cfuФайл обновления (разница между версиями)Раздача обновления многим базам
.cfeРасширение конфигурацииДоработка без правки типовой конфигурации
.dtКонфигурация и данные базыПеренос самой базы целиком

Частая путаница: .dt называют «сборкой», хотя это выгрузка базы с данными. Для передачи кода коллегам он не подходит: тяжёлый и тащит за собой данные, которые отдавать нельзя.

Автоматическая сборка через командную строку

Когда сборку нужно делать по расписанию или в рамках цепочки «разработчик → тест → прод», ручной режим не годится. Конфигуратор умеет работать в пакетном режиме без окон.

Базовая команда выгрузки основной конфигурации файловой базы:

"C:\Program Files\1cv8\8.3.25.1445\bin\1cv8.exe" DESIGNER /F "D:\bases\dev" /N "Сборщик" /P "пароль" /DisableStartupDialogs /DumpCfg "D:\build\config.cf" /Out "D:\build\log.txt"

Что здесь что:

  • DESIGNER — запуск в режиме Конфигуратора;
  • /F — путь к файловой базе (для серверной вместо него /S "сервер\база");
  • /N и /P — пользователь и пароль;
  • /DisableStartupDialogs — не показывать диалоги, иначе скрипт повиснет на вопросе;
  • /DumpCfg — выгрузить конфигурацию в указанный файл;
  • /Out — журнал результата. Без него вы не узнаете, почему сборка упала.

Версию платформы в пути подставьте свою: она лежит в C:\Program Files\1cv8\ в папке с номером релиза.

Остальные пакетные команды, которые пригодятся

  • /LoadCfg файл.cf — загрузить конфигурацию из файла ;
  • /UpdateDBCfg — обновить конфигурацию базы данных;
  • /DumpConfigToFiles каталог — выгрузить конфигурацию в набор файлов (удобно для хранения в Git и сравнения изменений построчно);
  • /LoadConfigFromFiles каталог — собрать конфигурацию обратно из файлов;
  • /CreateDistributionFiles — создать комплект поставки (параметры -cffile и -cfufile задают имена файлов).

Типичная цепочка: загрузили .cf командой /LoadCfg, следом тем же вызовом добавили /UpdateDBCfg, посмотрели код возврата.

"%V8%" DESIGNER /F "D:\bases\test" /N "Сборщик" /P "пароль" /DisableStartupDialogs /LoadCfg "D:\build\config.cf" /UpdateDBCfg /Out "D:\build\load.txt"
if errorlevel 1 (
  echo Ошибка загрузки, смотрите load.txt
  exit /b 1
)

Переменную V8 задайте выше по скрипту с полным путём к 1cv8.exe.

Храните пароль не в самом .bat, а в переменной среды или в отдельном файле с ограниченными правами. Если скрипт попадёт в общую папку, пароль уйдёт вместе с ним.

Сборка из файлов, а не из базы

Если конфигурация лежит в репозитории в виде каталога файлов, сборка делается без «живой» базы-источника. Создаёте пустую служебную базу, загружаете в неё каталог командой /LoadConfigFromFiles, обновляете конфигурацию БД и выгружаете .cf через /DumpCfg. Служебную базу можно пересоздавать на каждую сборку: она нужна только как «станок».

Расширения: как собрать и перенести .cfe

Расширение — это отдельный объект, который лежит рядом с основной конфигурацией и не меняет её. Для него своя выгрузка. Появились расширения в платформе 8.3.6, на старых релизах пункта нет.

Через интерфейс: Конфигурация → Расширения конфигурации, выделить нужное расширение и в командной панели выбрать выгрузку в файл. Получится .cfe.

Через командную строку та же команда /DumpCfg, но с параметром -Extension и именем расширения:

"%V8%" DESIGNER /F "D:\bases\dev" /N "Сборщик" /P "пароль" /DisableStartupDialogs /DumpCfg "D:\build\MyExt.cfe" -Extension "МоёРасширение" /Out "D:\build\ext.txt"

Загрузка — /LoadCfg файл.cfe -Extension "МоёРасширение", потом /UpdateDBCfg. Это два отдельных шага: загрузили расширение, затем применили его к базе. Если пропустить второй, расширение в списке есть, а его код не работает .

Отдельный момент: расширение привязано к конфигурации, для которой его писали. Поменялась основная конфигурация после обновления — часть объектов могла исчезнуть или сменить структуру. Тогда в списке расширений у расширения появится предупреждение, а запуск базы может сопровождаться ошибкой. Перед выкладкой сборки на прод прогоните её на копии.

Как объединить конфигурации при сборке

Задача такая: есть типовая конфигурация, есть ваша доработанная, и нужно получить итоговую сборку с изменениями с обеих сторон. Для этого в Конфигураторе служит режим сравнения и объединения.

  1. Откройте конфигурацию, в которую будете переносить изменения (основную).
  2. Выберите Конфигурация → Поддержка → Обновить конфигурацию…, если вы ставите новый релиз поставщика поверх доработанной конфигурации. Платформа сама предложит вариант объединения.
  3. Для произвольного сравнения двух конфигураций используйте Конфигурация → Сравнить, объединить с конфигурацией из файла…. Дальше откроется окно со списком отличий.
  4. По каждому объекту укажите, что оставить: версию из основной, версию из файла или объединить. Для модулей есть построчное сравнение.
  5. Подтвердите объединение и сохраните результат.

Правило одно: сначала сравнение, потом решения. Не нажимайте «взять всё из файла» на отличиях, которые не понимаете. Модуль, в который вы добавили свой код, при таком выборе тихо потеряет правки.

Перед объединением выгрузите текущую конфигурацию в .cf. Откатить результат объединения штатно нельзя, а резервная копия вернёт всё за пару минут.

СитуацияЧто выбрать
Пришёл новый релиз типовой, свои доработки естьОбновление с поддержки: платформа объединит сама, вы разберёте конфликты
Нужно перенести пару объектов между базамиСравнение с файлом, выбор отдельных объектов
Хочется не трогать типовуюРасширение вместо правки конфигурации

Типичные ошибки при сборке и как их устранить

Ниже — то, что реально встречается, с точными текстами сообщений там, где они стабильны.

Выгрузка падает или зависает в пакетном режиме. Чаще всего скрипт упёрся в диалог, которого вы не видите. Добавьте /DisableStartupDialogs, а в /Out смотрите, на каком шаге остановка. Ещё одна причина: база открыта в Конфигураторе у другого пользователя, и пакетный запуск не получил доступ.

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

Не загружается файл: версия формата новее платформы. .cf выгружен более свежей платформой, чем стоит на целевой базе. Сравните номера релизов платформы на обеих сторонах: на целевой он должен быть не ниже, чем на той, где собирали. Обновляйте платформу, а не пытайтесь править файл.

После загрузки конфигурации ошибки при запуске. Забыли обновить конфигурацию базы данных. Выполните /UpdateDBCfg или в интерфейсе F7. Если выдаёт сообщение о необходимости монопольного доступа, закройте все сеансы и повторите.

Расширение загружено, но не работает. Не применён второй шаг (обновление конфигурации БД) либо расширение выключено в списке (Конфигурация → Расширения конфигурации, флажок активности). Проверьте оба условия.

Объединение не даёт перенести объект. На конфигурации стоит замок поддержки. В Конфигурация → Поддержка → Настройка поддержки включите возможность изменения для нужного объекта или для всей конфигурации. Учтите, что после этого обновление от поставщика потребует ручного разбора конфликтов.

Сборка проходит, а на тесте иное поведение. Различаются исходные данные: константы, настройки, регистры сведений с параметрами. Конфигурация этого не несёт, это данные базы. Перенесите настройки отдельно или через обработку.

Если ошибка не из списка, найдите её текст в /Out-журнале, он точнее окна. Оттуда берите сообщение для поиска, а не пересказ.

Перед передачей сборки заказчику
Выполнено: 0 / 6

Частые вопросы

Чем сборка отличается от обновления?
Сборка — это подготовка файла (.cf, .cfe, поставки). Обновление — применение такого файла на базе. Первое делает разработчик, второе — администратор.
Можно ли выгрузить конфигурацию, если в базе работают люди?
Да, выгрузка читает конфигурацию и не требует монопольного режима для файловой и серверной базы. Загрузка с обновлением структуры базы — требует.
Что лучше хранить: cf или каталог файлов?
Для истории версий и сравнения построчно удобнее каталог (/DumpConfigToFiles), его можно вести в Git. Для передачи заказчику — готовый .cf.
Как узнать, какая платформа нужна для моего cf?
Смотрите номер релиза платформы, на которой собирали. На целевой базе номер должен быть не ниже. Узнать свой можно в окне «О программе» Конфигуратора.
Можно ли собрать конфигурацию без Конфигуратора?
Выгрузить и загрузить — нет, нужен 1cv8.exe в режиме DESIGNER. Но окно можно не открывать: пакетный режим работает без участия человека.
Входит ли в cf информация о пользователях и данных?
Нет. Роли как объекты конфигурации в файл входят, а пользователи и данные хранятся в базе и в .cf не попадают.