Сборка конфигурации 1С: от выгрузки cf до готовой поставки
Содержание
Сборка в 1С — это получение из рабочей конфигурации файла, который можно перенести на другую базу: .cf с полной конфигурацией, .cfe с расширением или комплект поставки с .cf и .cfu. Делается в Конфигураторе: меню Конфигурация → Сохранить конфигурацию в файл. Если сборку надо повторять каждую неделю, ту же операцию запускают из командной строки одной командой 1cv8.exe DESIGNER /DumpCfg.
Ниже по порядку: как подготовить базу, выгрузить конфигурацию мышкой, автоматизировать это, собрать расширение, объединить две конфигурации и не споткнуться на типичных ошибках.
Что нужно сделать до выгрузки конфигурации
Выгрузка «как есть» часто даёт файл, который на другой базе не загружается или тянет за собой лишнее. Проверьте четыре вещи.
- Конфигурация сохранена. Если в Конфигураторе есть несохранённые изменения, нажмите
F7(или кнопку «Сохранить конфигурацию ») и дождитесь окончания. Выгрузка берёт то, что уже записано в конфигурацию, а не то, что открыто в окне модуля. - Конфигурация обновлена в базе. Команда
Конфигурация → Обновить конфигурацию базы данных(F7после правок) приводит структуру базы к тому, что вы собираетесь отдать. Иначе на выходе будет конфигурация, которую вы сами ни разу не запускали. - Понятно, что именно собираем. Это основная конфигурация (типовая с доработками) или конфигурация поставщика? Если база стоит на поддержке, посмотрите режим:
Конфигурация → Поддержка → Настройка поддержки. От него зависит, можно ли потом объединять. - Есть права. Для Конфигуратора нужна роль с правом «Администрирование» и доступом к режиму конфигуратора. Под обычным пользователем пункты меню будут серыми.
Если база файловая и в ней работают пользователи, выгрузка конфигурации не требует монопольного доступа. А вот обновление структуры базы, загрузка .dt и некоторые операции с конфигурацией — требуют. Перед ними предупредите людей и попросите выйти.
Для серверной базы удобно сначала сделать копию: либо выгрузить информационную базу в .dt (Администрирование → Выгрузить информационную базу), либо снять резервную копию средствами СУБД. Один раз перед первой сборкой, дальше достаточно регулярных копий.
Как выгрузить конфигурацию в файл через интерфейс
Это основной способ для разовой сборки. Запустите базу в режиме Конфигуратора и действуйте по шагам.
- Откройте базу с пометкой «Конфигуратор» в списке баз 1С.
- Откройте конфигурацию:
Конфигурация → Открыть конфигурацию(дерево метаданных слева). - Выберите
Конфигурация → Сохранить конфигурацию в файл…. - Укажите имя и папку. Расширение будет
.cf. Лучше сразу включить в имя дату и версию, напримерБП_3.0.155.cf. - Нажмите «Сохранить» и дождитесь закрытия окна прогресса. Типовая конфигурация весит десятки мегабайт.
Так выгружается вся основная конфигурация целиком, вместе с модулями, формами, макетами и ролями. Данных (документов, справочников) в файле нет — только структура и код.
Загрузка файла на другую базу
На целевой базе меню Конфигурация → Загрузить конфигурацию из файла…, выбираете .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. Это два отдельных шага: загрузили расширение, затем применили его к базе. Если пропустить второй, расширение в списке есть, а его код не работает
.
Отдельный момент: расширение привязано к конфигурации, для которой его писали. Поменялась основная конфигурация после обновления — часть объектов могла исчезнуть или сменить структуру. Тогда в списке расширений у расширения появится предупреждение, а запуск базы может сопровождаться ошибкой. Перед выкладкой сборки на прод прогоните её на копии.
Как объединить конфигурации при сборке
Задача такая: есть типовая конфигурация, есть ваша доработанная, и нужно получить итоговую сборку с изменениями с обеих сторон. Для этого в Конфигураторе служит режим сравнения и объединения.
- Откройте конфигурацию, в которую будете переносить изменения (основную).
- Выберите
Конфигурация → Поддержка → Обновить конфигурацию…, если вы ставите новый релиз поставщика поверх доработанной конфигурации. Платформа сама предложит вариант объединения. - Для произвольного сравнения двух конфигураций используйте
Конфигурация → Сравнить, объединить с конфигурацией из файла…. Дальше откроется окно со списком отличий. - По каждому объекту укажите, что оставить: версию из основной, версию из файла или объединить. Для модулей есть построчное сравнение.
- Подтвердите объединение и сохраните результат.
Правило одно: сначала сравнение, потом решения. Не нажимайте «взять всё из файла» на отличиях, которые не понимаете. Модуль, в который вы добавили свой код, при таком выборе тихо потеряет правки.
Перед объединением выгрузите текущую конфигурацию в .cf. Откатить результат объединения штатно нельзя, а резервная копия вернёт всё за пару минут.
| Ситуация | Что выбрать |
|---|---|
| Пришёл новый релиз типовой, свои доработки есть | Обновление с поддержки: платформа объединит сама, вы разберёте конфликты |
| Нужно перенести пару объектов между базами | Сравнение с файлом, выбор отдельных объектов |
| Хочется не трогать типовую | Расширение вместо правки конфигурации |
Типичные ошибки при сборке и как их устранить
Ниже — то, что реально встречается, с точными текстами сообщений там, где они стабильны.
Выгрузка падает или зависает в пакетном режиме. Чаще всего скрипт упёрся в диалог, которого вы не видите. Добавьте /DisableStartupDialogs, а в /Out смотрите, на каком шаге остановка. Ещё одна причина: база открыта в Конфигураторе у другого пользователя, и пакетный запуск не получил доступ.
Пустой файл журнала или файл .cf нулевого размера. Проверьте пути: если в них есть пробелы или кириллица, весь путь берётся в двойные кавычки. Проверьте права на папку: служба или планировщик может работать под учётной записью, у которой нет записи в D:\build.
Не загружается файл: версия формата новее платформы. .cf выгружен более свежей платформой, чем стоит на целевой базе. Сравните номера релизов платформы на обеих сторонах: на целевой он должен быть не ниже, чем на той, где собирали. Обновляйте платформу, а не пытайтесь править файл.
После загрузки конфигурации ошибки при запуске. Забыли обновить конфигурацию базы данных. Выполните /UpdateDBCfg или в интерфейсе F7. Если выдаёт сообщение о необходимости монопольного доступа, закройте все сеансы и повторите.
Расширение загружено, но не работает. Не применён второй шаг (обновление конфигурации
БД) либо расширение выключено в списке (Конфигурация → Расширения конфигурации, флажок активности). Проверьте оба условия.
Объединение не даёт перенести объект. На конфигурации стоит замок поддержки. В Конфигурация → Поддержка → Настройка поддержки включите возможность изменения для нужного объекта или для всей конфигурации. Учтите, что после этого обновление от поставщика потребует ручного разбора конфликтов.
Сборка проходит, а на тесте иное поведение. Различаются исходные данные: константы, настройки, регистры сведений с параметрами. Конфигурация этого не несёт, это данные базы. Перенесите настройки отдельно или через обработку.
Если ошибка не из списка, найдите её текст в /Out-журнале, он точнее окна. Оттуда берите сообщение для поиска, а не пересказ.
Частые вопросы
Чем сборка отличается от обновления?
.cf, .cfe, поставки). Обновление — применение такого файла на базе. Первое делает разработчик, второе — администратор.Можно ли выгрузить конфигурацию, если в базе работают люди?
Что лучше хранить: cf или каталог файлов?
/DumpConfigToFiles), его можно вести в Git. Для передачи заказчику — готовый .cf.Как узнать, какая платформа нужна для моего cf?
Можно ли собрать конфигурацию без Конфигуратора?
1cv8.exe в режиме DESIGNER. Но окно можно не открывать: пакетный режим работает без участия человека.Входит ли в cf информация о пользователях и данных?
.cf не попадают.