Свой дистрибутив 1С: платформа, база и настройки за один запуск

· 9 мин

Содержание

Установщик 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. Шаблон для списка «Создание из шаблона»

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

  1. Откройте свойства корня конфигурации и заполните Поставщик и Версия — без них файлы поставки не создаются.
  2. Выберите Конфигурация → Поставка конфигурации → Создать файлы поставки и обновления. Получите 1Cv8.cf (полная поставка) и при необходимости 1Cv8.cfu (обновление с прошлых версий).
  3. Создайте описание комплекта поставки — файл .edf. В нём указывают, какие файлы входят в шаблон: .cf, демонстрационную .dt, документацию.
  4. Соберите комплект поставки по этому описанию. На выходе — папка с 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, под которым запущен сценарий. Если установку запускает администратор или система развёртывания под служебной учётной записью, бухгалтер базу в списке не увидит.

Надёжнее общий список баз для всех пользователей компьютера:

  1. Положите файл со списком, например C:\1C_Bases\common.v8i.
  2. Создайте %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 в таком порядке:

  1. Проверка прав администратора: команда net session >nul 2>&1 вернёт ненулевой код, если сценарий запущен без повышения прав. В этом случае выведите сообщение и завершите работу.
  2. Тихая установка платформы с проверкой кода возврата.
  3. Создание папки базы и выдача прав группе пользователей: icacls "C:\1C_Bases" /grant *S-1-5-32-545:(OI)(CI)M. Здесь S-1-5-32-545 — встроенная группа «Пользователи», её SID одинаков в любой локализации Windows.
  4. Создание базы из шаблона, если её ещё нет.
  5. Копирование common.v8i и запись 1cestart.cfg.
  6. Запуск обработки первичной настройки.

Каждый шаг пишите так, чтобы его можно было безопасно выполнить повторно. Тогда упавшую на середине установку достаточно запустить ещё раз.

Проверка и отладка установщика

Тестируйте только на чистой машине: виртуальной машине со снимком состояния или «Песочнице 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 и прервать установку на первом сбое, а не разбираться с последствиями в конце.

Приёмка установщика на чистой машине
Выполнено: 0 / 7

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

Можно ли собрать один exe-файл вместо папки?
Да. Упакуйте папку со сценарием в Inno Setup или NSIS: они собирают один .exe, распаковывают файлы во временный каталог и запускают ваш .bat с правами администратора.
Как обновлять базы, установленные таким способом?
Сам установщик базу не обновляет. Конфигурацию обновляют обычным способом: файлом .cfu в Конфигураторе или автоматически через интернет-поддержку типовой конфигурации.
Что делать, если на машине уже стоит другой релиз платформы?
Ничего: несколько релизов платформы ставятся рядом в отдельные папки. Окно запуска по умолчанию открывает базу последним установленным релизом, если в списке баз не задана конкретная версия.
Подойдёт ли такой установщик для Linux?
Сам подход — тихая установка платформы, CREATEINFOBASE, общий список баз — переносится. Но пакеты, пути и сценарий будут другими: вместо .bat пишут shell-скрипт под дистрибутив платформы для Linux.
Можно ли сразу подключить базу на сервере 1С, а не файловую?
Да. Шаг создания базы пропускают, а в common.v8i указывают строку Srvr=...;Ref=...;. Саму базу на сервере заранее создаёт администратор кластера.