Как удаленно добавить новую информационную базу 1С пользователям в домене Active Directory и не затереть существующие?

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

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

В этой статье мы подробно разберем, как устроена архитектура конфигурационных файлов запуска 1С, и рассмотрим несколько надежных способов удаленного добавления баз в домене Active Directory (AD). Мы научимся подключать общие списки, использовать групповые политики (GPO), автоматизировать процесс с помощью скриптов PowerShell, а также раздавать списки по протоколу HTTP без необходимости приобретения дорогостоящих КОРП-лицензий.

Понимаем архитектуру конфигурационных файлов 1С

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

  1. ibases.v8i — текстовый файл, в котором хранятся описания информационных баз (их имена, адреса серверов или пути к каталогам, параметры запуска и сортировки). По умолчанию личный файл пользователя располагается по пути: %AppData%\1C\1CEStart\ibases.v8i.
  2. 1cestart.cfg — файл конфигурации программы запуска (стартера). Он указывает стартеру, где искать платформу, какие версии использовать и откуда подгружать общие списки баз.

Платформа 1С использует иерархическую модель считывания настроек. При запуске программы стартер сначала считывает общий (глобальный) файл конфигурации, который расположен в папке %ProgramData%\1C\1CEStart\1cestart.cfg (для всех пользователей данного компьютера), а затем — личный файл из профиля пользователя %AppData%\1C\1CEStart\1cestart.cfg.

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

Способ №1: Подключение общего списка через GPO (Самый надежный метод)

Рассмотрим по шагам классический способ публикации баз через групповые политики Active Directory с использованием общего сетевого ресурса. Этот метод идеально подходит для локальной сети организации.

Шаг 1. Создание общего файла баз (.v8i)

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

Откроем его в текстовом редакторе и оставим только те базы, которые мы хотим распространить. Структура описания базы выглядит следующим образом:


[Бухгалтерия предприятия (общая)]
Connect=Srvr="1c-server";Ref="buh_prod";
ID=a5b6c7d8-e9f0-1234-5678-9abcdef01234
OrderInList=16384
Folder=/
OrderInTree=16384
App=Auto
WA=1

Выложим файл common.v8i на сетевой ресурс, доступный всем пользователям домена на чтение (например, \\domain.local\DFS\1C\common.v8i).

Шаг 2. Создание глобального конфигурационного файла стартера

Создадим на своем рабочем столе текстовый файл и назовем его 1cestart.cfg. Запишем в него одну единственную строку, указывающую на наш сетевой файл:

CommonInfoBases=\\domain.local\DFS\1C\common.v8i

Шаг 3. Настройка групповой политики (GPO)

Теперь настроим автоматическое копирование файла 1cestart.cfg на все компьютеры домена. Поскольку путь %ProgramData% одинаков для всех современных версий ОС Windows (начиная с Windows 7 и заканчивая Windows 11 / Server 2022), нам не придется беспокоиться о различных именах пользователей в путях к профилям.

  1. Откроем консоль управления групповыми политиками gpmc.msc.
  2. Создадим новый объект GPO (например, "1C_Common_Bases") и свяжем его с подразделением (OU), содержащим компьютеры пользователей.
  3. Перейдем в режим редактирования политики: Конфигурация компьютера -> Настройки (Preferences) -> Конфигурация Windows -> Файлы (Files).
  4. Создадим новый элемент "Файл" (New -> File) со следующими параметрами:
    • Действие (Action): Создать (Create) или Заменить (Replace).
    • Исходный файл (Source file): путь к нашему подготовленному шаблону 1cestart.cfg на сетевом ресурсе.
    • Целевой файл (Destination File): %ProgramData%\1C\1CEStart\1cestart.cfg.

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

Способ №2: Использование HTTP-сервера для раздачи списка (ПРОФ-лицензии и удаленщики)

В обсуждениях часто упоминается веб-сервис списка информационных баз. Официальный «Интернет-сервис списков баз» (WebCommonInfoBases) действительно требует наличия дорогостоящих КОРП-лицензий. Однако существует прекрасная альтернатива, которая отлично работает на обычных ПРОФ-лицензиях.

Мало кто знает, что параметр CommonInfoBases в файле конфигурации стартера умеет работать не только с UNC-путями локальной сети, но и со стандартными протоколами HTTP и HTTPS! Это идеальное решение для удаленных сотрудников, работающих без VPN.

Алгоритм настройки:

  1. Выложим подготовленный файл common.v8i на любой имеющийся веб-сервер внутри организации (это может быть IIS, Apache или Nginx). Например, по адресу https://web.company.ru/1c/common.v8i.
  2. В файле конфигурации 1cestart.cfg пропишем эту веб-ссылку: CommonInfoBases=https://web.company.ru/1c/common.v8i
  3. Распространим этот конфигурационный файл на компьютеры пользователей через GPO (как описано в Способе №1) или любым другим доступным способом (например, через систему SCCM или при развертывании образа ОС).

При запуске стартер 1С выполнит обычный HTTP-запрос, скачает файл списка баз во временный кэш компьютера и отобразит эти базы пользователю. Лицензия КОРП для этого не требуется, так как платформа не использует специализированный веб-сервис 1С, а просто скачивает статический текстовый файл.

Способ №3: Динамическое разделение баз по группам Active Directory

Часто возникает ситуация, когда разным отделам требуются разные наборы баз: бухгалтерии — регламентированный учет, отделу продаж — управление торговлей. Мы можем гибко настроить раздачу баз с помощью механизма нацеливания на уровень элемента (Item-Level Targeting) в GPP.

Выясним, как это реализовать:

  1. Создадим в домене группы безопасности, например: 1C_Buh_Users и 1C_Sales_Users. Добавим в них соответствующих пользователей.
  2. На сетевом ресурсе создадим два файла списков баз: buh.v8i и sales.v8i.
  3. В групповой политике настроим копирование файлов конфигурации стартера на уровне пользователей: Конфигурация пользователя -> Настройки -> Конфигурация Windows -> Файлы.
  4. Создадим правило для копирования конфигурационного файла 1cestart.cfg, но в параметрах укажем целевой путь к профилю пользователя: %AppData%\1C\1CEStart\1cestart.cfg.
  5. В свойствах элемента перейдем на вкладку Общие (Common), отметим галочкой Нацеливание на уровень элемента (Item-Level Targeting) и нажмем кнопку Нацеливание (Targeting).
  6. Добавим новое условие: Соответствие группе безопасности (Security Group) и укажем группу 1C_Buh_Users. Для этого правила исходным файлом укажем конфигурационный файл, ссылающийся на buh.v8i.
  7. Создадим аналогичное правило для менеджеров по продажам, нацелив его на группу 1C_Sales_Users и указав файл, ссылающийся на sales.v8i.

В результате пользователи получат только те списки баз, которые соответствуют их ролям в Active Directory.

Способ №4: Автоматизация через PowerShell (Добавление записи напрямую в файл пользователя)

Если нам необходимо разово добавить конкретную базу непосредственно в личные файлы ibases.v8i пользователей (например, на сервере терминалов RDS, где работают десятки пользователей, и мы не хотим использовать механизм общих списков), мы можем применить скрипт PowerShell.

Проанализируем скрипт, который находит профили всех пользователей на сервере, проверяет наличие файла ibases.v8i и безопасно дописывает параметры новой базы в самый конец файла, если этой базы там еще нет.


# Шаблон параметров новой базы для добавления
$NewBaseBlock = @"

[Новая Управленческая База]
Connect=Srvr="1c-srv";Ref="management_prod";
ID=e1b2c3d4-5678-90ab-cdef-1234567890fe
OrderInList=16384
Folder=/
OrderInTree=16384
App=Auto
WA=1
"@

# Получаем список всех папок пользователей на диске C:
$UserProfiles = Get-ChildItem -Path "C:\Users" -Directory

foreach ($Profile in $UserProfiles) {
    $v8iPath = Join-Path $Profile.FullName "AppData\Roaming\1C\1CEStart\ibases.v8i"
    
    # Проверяем, существует ли файл списков баз у данного пользователя
    if (Test-Path $v8iPath) {
        $Content = Get-Content -Path $v8iPath -Raw
        
        # Проверяем, не была ли эта база добавлена ранее по ее уникальному ID или имени
        if ($Content -notmatch "management_prod") {
            # Дописываем блок в конец файла с добавлением новой строки
            Add-Content -Path $v8iPath -Value $NewBaseBlock -Encoding UTF8
            Write-Host "База успешно добавлена в профиль: $($Profile.Name)" -ForegroundColor Green
        } else {
            Write-Host "База уже присутствует у пользователя: $($Profile.Name)" -ForegroundColor Yellow
        }
    }
}

Этот скрипт можно запускать как задачу планировщика Windows от имени администратора (SYSTEM) при запуске сервера или выполнять его разово во время проведения регламентных работ.

Способ №5: Быстрый запуск через ярлыки на рабочем столе

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

  1. В групповой политике перейдем в раздел Конфигурация пользователя -> Настройки -> Конфигурация Windows -> Ярлыки (Shortcuts).
  2. Создадим новый ярлык со следующими параметрами:
    • Расположение: Рабочий стол (Desktop).
    • Целевой объект (Target path): "C:\Program Files\1cv8\common\1cestart.exe" (путь к общему стартеру платформы).
    • Аргументы (Arguments): ENTERPRISE /S "1c-server\buh_prod" (для клиент-серверного варианта) или ENTERPRISE /F "C:\1C_Bases\Buh" (для файлового варианта).

Пользователю не потребуется открывать окно выбора баз — при клике на ярлык платформа сразу запустит нужную информационную базу под его доменными учетными данными (если настроена сквозная Windows-авторизация WA=1).

Резюме и рекомендации

Мы рассмотрели различные варианты решения задачи. Какой из них выбрать?

← На главную