Как автоматически добавить базу в список 1С:Предприятие с помощью скрипта?

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

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

Метод 1. Прямая запись в файл ibases.v8i через BAT-файл

Файл ibases.v8i — это текстовый файл, в котором хранятся настройки списка баз конкретного пользователя. Он располагается в папке профиля %AppData%\1C\1CEStart\. Рассмотрим ситуацию, когда нам нужно добавить новую базу, даже если список изначально пуст.

Проанализируем причину ошибки из сообщения форума: скрипт пытался найти количество строк в существующем файле, и если файл был пуст или отсутствовал, логика поиска (цикл for) работала некорректно. Чтобы скрипт создавал базу «с нуля», мы должны сначала убедиться в наличии директории и самого файла.

Выполним следующие действия в нашем батнике:


@echo off
set "v8i_path=%AppData%\1C\1CEStart"
set "v8i_file=%v8i_path%\ibases.v8i"

if not exist "%v8i_path%" mkdir "%v8i_path%"

if not exist "%v8i_file%" (
    echo [Название информационной базы] > "%v8i_file%"
) else (
    echo. >> "%v8i_file%"
    echo [Название информационной базы] >> "%v8i_file%"
)

echo Connect=Srvr="vm-s2008-08";Ref="do_test"; >> "%v8i_file%"
echo ID=3e2b17f4-5272-430c-939e-d30623a8e999 >> "%v8i_file%"
echo OrderInList=1 >> "%v8i_file%"
echo Folder=/ >> "%v8i_file%"
echo OrderInTree=1 >> "%v8i_file%"
echo External=0 >> "%v8i_file%"
echo ClientConnectionLevel=ThinClient >> "%v8i_file%"
echo App=Auto >> "%v8i_file%"
echo Version=8.3 >> "%v8i_file%"

В данном примере мы используем команду echo для построчной записи параметров. Обратите внимание на параметр ID. Каждая база должна иметь уникальный идентификатор (GUID). Если вы его не укажете, 1С сгенерирует его автоматически при первом запуске, но для стабильности лучше прописать его заранее.

Метод 2. Использование эталонного файла (Шаблона)

Рассмотрим более простой и надежный способ, предложенный в обсуждении. Вместо того чтобы генерировать строки программно, мы можем подготовить один эталонный файл ibases.v8i на сетевом ресурсе и просто копировать его пользователю.

Выясним алгоритм действий:

  1. Настройте список баз на одном компьютере вручную.
  2. Скопируйте полученный файл ibases.v8i в общую сетевую папку.
  3. Напишите батник, который копирует этот файл в профиль пользователя.

@echo off
set "target_dir=%AppData%\1C\1CEStart"
if not exist "%target_dir%" mkdir "%target_dir%"
copy /Y "\\SERVER\Share\1C_Bases\standard_bases.v8i" "%target_dir%\ibases.v8i"

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

Метод 3. Механизм общих списков (CommonInfoBases)

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

Для этого используется файл настроек 1CEStart.cfg. Разберем, как прописать в него путь к общему списку через скрипт:


@echo off
set "cfg_file=%AppData%\1C\1CEStart\1CEStart.cfg"
if not exist "%AppData%\1C\1CEStart" mkdir "%AppData%\1C\1CEStart"

findstr /C:"CommonInfoBases=\\SERVER\Share\common.v8i" "%cfg_file%" >nul
if %errorlevel% neq 0 (
    echo CommonInfoBases=\\SERVER\Share\common.v8i >> "%cfg_file%"
)

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

Метод 4. Решение проблемы пустых списков через PowerShell

Батники (CMD) часто имеют проблемы с кодировкой UTF-8, которую предпочитает 1С. Посмотрим на пример использования PowerShell, который корректно создаст файл даже в пустой директории и обеспечит правильный формат текста. Похожие принципы подготовки конфигурационных данных используются, когда создается обработка для подготовки файла настройки дымовых тестов.


$v8iPath = "$env:APPDATA\1C\1CEStart\ibases.v8i"
$content = @"
[Бухгалтерия Предприятия]
Connect=Srvr="1C-SERVER";Ref="acc_prod";
ID=$( [guid]::NewGuid() )
OrderInList=1
Folder=/
App=Auto
Version=8.3
"@

if (!(Test-Path (Split-Path $v8iPath))) {
    New-Item -ItemType Directory -Path (Split-Path $v8iPath)
}

$content | Out-File -FilePath $v8iPath -Encoding utf8 -Append

Этот скрипт проверяет существование папки, генерирует новый GUID для базы и дописывает блок текста в кодировке UTF-8. Использование -Append позволяет добавлять базу в конец файла, если он уже существует.

Метод 5. Ярлык прямого запуска

Если задача стоит максимально просто — запустить конкретную базу без лишних окон выбора, можно использовать параметры командной строки 1cestart.exe. Это особенно актуально, если вы используете нестандартные окружения, такие как 1С в докере на Linux. Батник для запуска будет выглядеть так:


start "" "C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S "ServerName\BaseName" /N "ИмяПользователя"

Здесь используется ключ /S для указания адреса сервера и имени базы в формате Кластер\ИмяБазы. При таком подходе база вообще не обязана присутствовать в списке ibases.v8i.

Подведем итоги

Для создания надежного инструмента автоматизации мы рекомендуем:

  1. Использовать CommonInfoBases в файле 1CEStart.cfg для постоянных сотрудников.
  2. Использовать PowerShell для разового добавления баз, так как он лучше работает с кодировками и GUID.
  3. Всегда проверять наличие папки %AppData%\1C\1CEStart перед началом любых операций записи.

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

← На главную