Свой дистрибутив 1С: платформа, база и настройки за один запуск
Содержание
Установщик 1С собирают из трёх частей: дистрибутив платформы с тихой установкой через msiexec /qn, шаблон базы (.cf или .dt) и командный файл, который вызывает 1cv8.exe CREATEINFOBASE ... /UseTemplate ... /AddInList. Для тиражной конфигурации есть и штатный путь: Конфигуратор умеет собирать комплект поставки с собственным setup.exe.
Типичная ситуация: в офис пришли пять новых ноутбуков, а на каждом нужно поставить платформу нужного релиза, создать базу с настроенными справочниками и завести пользователя. Руками это час на машину и пять разных результатов. Готовый дистрибутив с автонастройкой делает то же за несколько минут и одинаково.
Что положить в дистрибутив и каким способом его упаковать
Сначала соберите исходники в одну папку. Минимальный набор:
- 📦 дистрибутив платформы — папка релиза с
setup.exe, файлом.msiи трансформациями.mst; - 🗂 шаблон базы — файл конфигурации
1Cv8.cf(пустая база) или выгрузка.dt(база с данными и пользователями); - ⚙️ обработка первичной настройки — внешний файл
.epf, если после создания базы нужно что-то заполнить; - 📝 сценарий —
.batили PowerShell, который всё это связывает.
Структура папки, с которой удобно работать дальше:
1C_Setup\
install.bat — главный сценарий
platform\ — содержимое папки релиза платформы
etalon.dt — шаблон базы
init.epf — обработка первичной настройки
common.v8i — общий список баз
Все пути в сценарии стройте от переменной %~dp0 — это папка, из которой запущен .bat. Тогда дистрибутив работает с флешки, из сетевой папки и с диска D: без правки.
Способ упаковки зависит от того, кому вы отдаёте установщик.
| Способ | Когда подходит | Ограничения |
|---|---|---|
Комплект поставки из Конфигуратора (setup.exe + .edf) | Вы разработчик и раздаёте свою конфигурацию клиентам | Ставит только шаблон, платформу и базу не создаёт |
Командный файл .bat / .ps1 | Внутренняя установка в своей организации | Нужен запуск с правами администратора, нет «красивого» мастера |
| Обёртка Inno Setup или NSIS над сценарием | Нужен один .exe с мастером, ярлыками и удалением | Сторонний инструмент, его придётся освоить |
| Групповые политики или SCCM | Десятки машин в домене | Нужен домен и администратор, который этим управляет |
Шаблон .dt удобнее .cf, когда в базе уже должны быть организация, учётная политика, пользователи и права. Пустой .cf годится, если базу каждый клиент заполняет сам.
Лицензию в установщик не встраивают. Программная лицензия активируется на каждом компьютере отдельно пин-кодом, а аппаратный ключ — это физическое устройство. Установщик готовит рабочее место, лицензирование — отдельный шаг.
Шаблон конфигурации и начальные данные
Вариант 1. Готовая выгрузка базы
Подготовьте эталонную базу: заполните реквизиты организации, настройки учёта, справочники, которые нужны всем, создайте пользователей и роли. Затем в Конфигураторе выполните Администрирование → Выгрузить информационную базу и сохраните файл, например etalon.dt.
Перед выгрузкой уберите из эталона всё лишнее: тестовые документы, личные настройки, пароли конкретных людей. Выгрузка переносит базу целиком.
Вариант 2. Шаблон для списка «Создание из шаблона»
Если хотите, чтобы конфигурация появилась в стандартном мастере добавления базы, нужен шаблон в каталоге шаблонов. Порядок в Конфигураторе:
- Откройте свойства корня конфигурации и заполните
ПоставщикиВерсия— без них файлы поставки не создаются. - Выберите
Конфигурация → Поставка конфигурации → Создать файлы поставки и обновления. Получите1Cv8.cf(полная поставка) и при необходимости1Cv8.cfu(обновление с прошлых версий). - Создайте описание комплекта поставки — файл
.edf. В нём указывают, какие файлы входят в шаблон:.cf, демонстрационную.dt, документацию. - Соберите комплект поставки по этому описанию. На выходе — папка с
setup.exe.
Пункты 3 и 4 находятся в том же подменю Поставка конфигурации; точное название команд в разных релизах платформы может немного отличаться.
Запущенный на рабочем месте setup.exe копирует шаблон в каталог шаблонов. По умолчанию это %APPDATA%\1C\1cv8\tmplts. Свой каталог задают в окне запуска: кнопка Настройка → список каталогов шаблонов конфигураций и обновлений.
Комплект поставки не ставит платформу и не создаёт базу. Пользователь после него всё равно открывает окно запуска, нажимает Добавить и выбирает создание базы из шаблона. Для полной автоматики шаблон подключают к сценарию из следующих разделов.
Скрипт тихой установки платформы 1С
Платформа ставится MSI-пакетом, а состав компонентов задают свойствами командной строки. Положите папку релиза рядом со сценарием, например в platform.
@echo off
rem Тихая установка клиента 1С:Предприятия 8.3
set DIST=%~dp0
pushd "%DIST%platform"
msiexec /i "1CEnterprise 8 (x86-64).msi" /qn ^
TRANSFORMS=adminstallrelogon.mst;1049.mst ^
DESIGNERALLCLIENTS=1 THICKCLIENT=1 THINCLIENTFILE=1 THINCLIENT=1 ^
WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=0 ^
LANGUAGES=RU ^
/l*v "%TEMP%\1c_platform_install.log"
set RC=%ERRORLEVEL%
popd
if not "%RC%"=="0" if not "%RC%"=="3010" (
echo Ошибка установки платформы, код %RC%. Смотрите %TEMP%\1c_platform_install.log
exit /b %RC%
)
Что здесь важно:
- 🔹
/qn— установка без окон;/l*v— подробный журнал, без него ошибку не найти; - 🔹
adminstallrelogon.mstи1049.mstлежат в папке релиза; второй отвечает за русский интерфейс установки; - 🔹
1включает компонент,0исключает. Для рабочего места бухгалтера сервер 1С, расширение веб-сервера и хранилище не нужны; - 🔹 имя
.msiсверяйте с папкой релиза: у 32-разрядного и 64-разрядного дистрибутивов оно разное.
Код 3010 означает «установлено, нужна перезагрузка» — это успех. Код 1603 — фатальная ошибка, причина в журнале: обычно не хватило прав или идёт другая установка.
Если кириллица в .bat превращается в кракозябры, сохраните файл в кодировке OEM 866 или в UTF-8 и добавьте в начало chcp 65001 >nul.
Создание и регистрация информационной базы автоматически
После платформы сценарий создаёт файловую базу
из шаблона и добавляет её в список. Путь к 1cv8.exe содержит номер релиза, поэтому вынесите его в переменную.
set VER=8.3.xx.xxxx
set EXE="C:\Program Files\1cv8\%VER%\bin\1cv8.exe"
set BASEDIR=C:\1C_Bases\Buh
if exist "%BASEDIR%\1Cv8.1CD" (
echo База уже существует, создание пропущено
) else (
%EXE% CREATEINFOBASE File="%BASEDIR%" /UseTemplate "%DIST%etalon.dt" ^
/AddInList "Бухгалтерия" /Out "%TEMP%\1c_create_ib.log"
)
/UseTemplate принимает и .cf, и .dt. Проверка на 1Cv8.1CD нужна, чтобы повторный запуск установщика не затёр рабочую базу с данными.
Подвох с /AddInList
Ключ /AddInList дописывает базу в список того пользователя Windows, под которым запущен сценарий. Если установку запускает администратор или система развёртывания под служебной учётной записью, бухгалтер базу в списке не увидит.
Надёжнее общий список баз для всех пользователей компьютера:
- Положите файл со списком, например
C:\1C_Bases\common.v8i. - Создайте
%ProgramData%\1C\1CEStart\1cestart.cfgи добавьте строкуCommonInfoBases=C:\1C_Bases\common.v8i.
Содержимое common.v8i:
[Бухгалтерия]
Connect=File="C:\1C_Bases\Buh";
ID=3f2a9c1e-5b7d-4e8a-9c21-7a6b0d4e1f53
Folder=/
External=0
App=Auto
WA=1
Version=8.3
ID — любой уникальный GUID, его генерирует PowerShell командой [guid]::NewGuid(). Для серверной базы строка подключения выглядит как Connect=Srvr="srv1c";Ref="buh";.
Дайте пользователям право на запись в папку базы. Файловая база требует записи в каталог: без неё 1С не откроет базу даже на чтение.
Права доступа и первичная настройка после установки
В пустой базе из .cf пользователей нет, и первым входит кто угодно. Завести пользователей и заполнить настройки можно внешней обработкой, которую сценарий запускает ключом /Execute.
%EXE% ENTERPRISE /F "%BASEDIR%" /Execute "%DIST%init.epf" ^
/DisableStartupMessages /Out "%TEMP%\1c_init.log"
В обработке создайте управляемую форму, а в её модуле — код, который выполнит работу и закроет программу:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
НастроитьБазуНаСервере();
ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры
&НаСервере
Процедура НастроитьБазуНаСервере()
Если ПользователиИнформационнойБазы.НайтиПоИмени("Администратор") = Неопределено Тогда
Пользователь = ПользователиИнформационнойБазы.СоздатьПользователя();
Пользователь.Имя = "Администратор";
Пользователь.ПолноеИмя = "Администратор";
Пользователь.АутентификацияСтандартная = Истина;
Пользователь.ПоказыватьВСпискеВыбора = Истина;
Пользователь.Роли.Добавить(Метаданные.Роли.ПолныеПрава);
Пользователь.Записать();
КонецЕсли;
КонецПроцедуры
Первым создавайте пользователя с административными правами: платформа не даст записать первого пользователя без них. Роль ПолныеПрава есть в типовых конфигурациях; в своей подставьте имя своей роли.
Типовые конфигурации построены на БСП и ведут собственный справочник пользователей
. В них после первого входа администратора откройте Администрирование → Настройки пользователей и прав → Пользователи и проверьте, что запись появилась и группы доступа назначены. Остальных сотрудников удобнее заводить уже там, а не кодом.
Если база создана из .dt с пользователями, ключи меняются: /N "Администратор" /P "пароль". Пароль в открытом виде в .bat — плохая идея. Задайте эталонному администратору временный пароль и смените его сразу после установки.
Первый запуск типовой конфигурации запускает начальное заполнение и обновление данных. Оно может занять несколько минут — не принимайте паузу за зависание и не прерывайте процесс.
При открытии внешней обработки платформа может показать предупреждение безопасности. Это защита от опасных действий: она включается в свойствах пользователя. Не отключайте её навсегда ради установщика — после настройки предупреждение должно работать.
Порядок шагов в одном сценарии
Соберите фрагменты в install.bat в таком порядке:
- Проверка прав администратора: команда
net session >nul 2>&1вернёт ненулевой код, если сценарий запущен без повышения прав. В этом случае выведите сообщение и завершите работу. - Тихая установка платформы с проверкой кода возврата.
- Создание папки базы и выдача прав группе пользователей:
icacls "C:\1C_Bases" /grant *S-1-5-32-545:(OI)(CI)M. ЗдесьS-1-5-32-545— встроенная группа «Пользователи», её SID одинаков в любой локализации Windows. - Создание базы из шаблона, если её ещё нет.
- Копирование
common.v8iи запись1cestart.cfg. - Запуск обработки первичной настройки.
Каждый шаг пишите так, чтобы его можно было безопасно выполнить повторно. Тогда упавшую на середине установку достаточно запустить ещё раз.
Проверка и отладка установщика
Тестируйте только на чистой машине: виртуальной машине со снимком состояния или «Песочнице Windows». На вашем компьютере уже стоит платформа и лежат шаблоны, поэтому ошибка там не проявится.
Где искать причину, если что-то пошло не так:
| Симптом | Где смотреть | Частая причина |
|---|---|---|
| Платформа не встала, код 1603 | %TEMP%\1c_platform_install.log, ищите Return value 3 | Нет прав администратора, идёт другая установка |
1cv8.exe не найден | Папка C:\Program Files\1cv8\ | В VER не тот номер релиза или стоит 32-разрядная версия в Program Files (x86) |
| База не создалась | Журнал из ключа /Out | Нет прав на папку, путь к шаблону с пробелами без кавычек |
| База создана, но в списке её нет | %APPDATA%\1C\1CEStart\ibases.v8i пользователя | /AddInList сработал под другой учётной записью |
| Обработка не запустилась | Журнал /Out, журнал регистрации базы | Ошибка в коде, предупреждение безопасности, нужен вход с паролем |
Для сценариев удобен ключ /DumpResult <файл>: 1С запишет в файл код завершения, 0 — успех. Его можно проверить в .bat и прервать установку на первом сбое, а не разбираться с последствиями в конце.
Частые вопросы
Можно ли собрать один exe-файл вместо папки?
.exe, распаковывают файлы во временный каталог и запускают ваш .bat с правами администратора.Как обновлять базы, установленные таким способом?
.cfu в Конфигураторе или автоматически через интернет-поддержку типовой конфигурации.Что делать, если на машине уже стоит другой релиз платформы?
Подойдёт ли такой установщик для Linux?
CREATEINFOBASE, общий список баз — переносится. Но пакеты, пути и сценарий будут другими: вместо .bat пишут shell-скрипт под дистрибутив платформы для Linux.Можно ли сразу подключить базу на сервере 1С, а не файловую?
common.v8i указывают строку Srvr=...;Ref=...;. Саму базу на сервере заранее создаёт администратор кластера.