Один список информационных баз на весь офис: 1CEStart.cfg, групповая политика и скрипт
Содержание
Чтобы прописать список баз 1С для всех пользователей, положите файл со списком (например, common.v8i) в общую папку и добавьте в общий для компьютера файл C:\ProgramData\1C\1CEStart\1CEStart.cfg строку CommonInfoBases=\\server\1c\common.v8i. После перезапуска окна запуска каждый, кто входит на этот компьютер, увидит базы из общего списка, а свои личные базы у него останутся.
Способов разнести этот файл три. На 3–5 компьютерах проще прописать строку руками. В домене удобнее групповая политика: она сама положит файл на каждую машину. На терминальном сервере хватает одного общего 1CEStart.cfg: он действует сразу на все профили. Скрипт PowerShell закрывает смешанные случаи, когда часть машин вне домена.
Почему у каждого пользователя свой список баз
Окно запуска 1С:Предприятия 8.3 хранит список баз не в реестре и не в папке программы, а в профиле Windows конкретного пользователя:
- 📁
%APPDATA%\1C\1CEStart\ibases.v8i— сам список баз; - ⚙️
%APPDATA%\1C\1CEStart\1CEStart.cfg— личные настройки окна запуска; - 🖥️
%ALLUSERSPROFILE%\1C\1CEStart\1CEStart.cfg(обычноC:\ProgramData\1C\1CEStart\1CEStart.cfg) — настройки, общие для всех пользователей компьютера.
Отсюда типичная картина. Администратор добавил базы под своей учётной записью, а бухгалтер входит под своей и видит пустое окно. Новый сотрудник получает чистый профиль и тоже начинает с нуля. На терминальном сервере 20 пользователей — значит, 20 отдельных файлов ibases.v8i.
Копировать ibases.v8i по профилям — путь тупиковый. Добавили базу, и снова надо обходить всех. Правильная схема другая: одна копия общего списка в сети и ссылка на неё в настройках окна запуска. Ссылку задаёт параметр CommonInfoBases.
Как устроен общий список
Общий список — обычный текстовый файл с расширением .v8i, такого же формата, как личный ibases.v8i. Каждая база — секция с именем в квадратных скобках:
[Бухгалтерия ООО Ромашка]
Connect=Srvr="srv1c";Ref="buh_romashka";
ID=6f1c2a7e-3b4d-4e5f-9a10-1b2c3d4e5f60
Folder=/Бухгалтерия
App=Auto
Version=8.3
[Зарплата ООО Ромашка]
Connect=Srvr="srv1c";Ref="zup_romashka";
ID=0d9e8f7a-6b5c-4d3e-8f21-a0b1c2d3e4f5
Folder=/Кадры
App=Auto
Version=8.3
[Склад (файловая)]
Connect=File="\\fs01\1c\sklad";
ID=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
Folder=/
App=Auto
Version=8.3
Строка Connect бывает трёх видов:
| Тип базы | Пример строки Connect |
|---|---|
| Файловая | File="\\fs01\1c\sklad"; |
| Клиент-серверная | Srvr="srv1c";Ref="buh_romashka"; |
| Веб-публикация | ws="https://1c.firma.ru/buh"; |
Чтобы не набирать файл вручную, соберите эталонный список в окне запуска на своём компьютере. Затем возьмите свой %APPDATA%\1C\1CEStart\ibases.v8i, скопируйте под новым именем и удалите лишние секции. ID у каждой базы должен быть уникальным. Если пишете секцию с нуля, сгенерируйте GUID командой PowerShell [guid]::NewGuid().
Параметр Folder раскладывает базы по папкам в режиме дерева. При 15–20 базах это заметно ускоряет поиск нужной.
Способ 1. Ручная настройка на каждом компьютере
Для небольшого офиса без домена хватит ручной настройки. Сначала подготовьте общую папку.
- На файловом сервере создайте папку, например
D:\1C_Lists, и откройте общий доступ:\\fs01\1c_lists. - Дайте группе пользователей 1С право чтения на папку и в общем доступе, и в NTFS. Право записи — только администратору.
- Положите туда
common.v8i.
Дальше два варианта на каждой машине.
Через окно запуска (для одного пользователя)
- Запустите 1С, в окне выбора базы нажмите Настройка….
- В блоке со списками общих информационных баз нажмите кнопку добавления.
- Укажите путь
\\fs01\1c_lists\common.v8iи нажмите ОК.
Способ работает только для текущей учётной записи. Ссылка попадает в личный 1CEStart.cfg этого пользователя.
Через общий 1CEStart.cfg (для всех пользователей компьютера)
- Откройте Блокнот от имени администратора.
- Откройте
C:\ProgramData\1C\1CEStart\1CEStart.cfg. Если файла нет, создайте его. - Допишите строку:
CommonInfoBases=\\fs01\1c_lists\common.v8i
- Сохраните файл в кодировке UTF-8.
- Закройте все окна 1С и запустите заново.
Строк CommonInfoBases может быть несколько. Например, одна для бухгалтерии, другая для склада:
CommonInfoBases=\\fs01\1c_lists\buh.v8i
CommonInfoBases=\\fs01\1c_lists\sklad.v8i
Бухгалтерам ставите первую строку, кладовщикам — вторую, руководителю — обе.
Почему не реестр
В инструкциях встречается совет «прописать список баз через реестр». Для 8.3 он не работает
: окно запуска не берёт список информационных баз из реестра Windows. Всё управление идёт через файлы .v8i и .cfg. Реестр пригодится разве что групповой политике или скрипту как место, где можно отметить «настройку уже применили». Самой 1С эта отметка не нужна.
Способ 2. Групповая политика в домене
В домене Active Directory удобнее всего разнести общий 1CEStart.cfg через предпочтения групповой политики (Group Policy Preferences). Тогда новый компьютер получит настройку сам при первой загрузке.
- Положите эталонный
1CEStart.cfgсо строкойCommonInfoBasesв папку, доступную компьютерам на чтение. Подойдёт\\домен\NETLOGON\1C\1CEStart.cfg. - Откройте
gpmc.msc, создайте объект групповой политики и привяжите его к подразделению с компьютерами. - В редакторе перейдите:
Конфигурация компьютера → Настройка → Конфигурация Windows → Файлы. - Создайте новый элемент Файл:
- действие — Заменить;
- исходный файл —
\\домен\NETLOGON\1C\1CEStart.cfg; - конечный файл —
C:\ProgramData\1C\1CEStart\1CEStart.cfg.
- На клиенте выполните
gpupdate /forceили перезагрузите его.
Действие «Заменить» перезапишет общий 1CEStart.cfg целиком. Если на машинах в этом файле уже есть другие нужные строки (например, путь установки платформы), внесите их в эталон заранее. Иначе они пропадут.
Политику можно повесить и на пользователей: Конфигурация пользователя → Настройка → Конфигурация Windows → Файлы, конечный путь %AppData%\1C\1CEStart\1CEStart.cfg. Так удобнее, когда разным отделам нужны разные списки. Фильтр по группе безопасности задаётся на вкладке Общие параметры элемента, через нацеливание на уровне элемента.
Если групповая политика доставляет файл .cfg, сам список common.v8i всё равно лежит в одном месте на сервере. Добавили базу в него — у всех она появится при следующем открытии окна запуска. Политику при этом трогать не нужно.
Способ 3. Терминальный сервер (RDS)
На терминальном сервере все пользователи работают на одной машине. Поэтому хватает одного файла C:\ProgramData\1C\1CEStart\1CEStart.cfg со строкой CommonInfoBases. Он действует на каждый профиль, в том числе на те, что появятся позже.
Порядок такой:
- Положите
common.v8iпрямо на сервер, например вC:\1C_Lists\common.v8i. Сетевая папка не нужна, если базы обслуживает только этот сервер. - Дайте группе «Пользователи удалённого рабочего стола» право чтения на
C:\1C_Lists. - Пропишите
CommonInfoBases=C:\1C_Lists\common.v8iв общий1CEStart.cfg. - Если 1С публикуется как RemoteApp, публикуйте
1cestart.exe, а не исполняемый файл конкретной версии платформы. Тогда пользователь увидит окно запуска со списком баз, а версия подберётся по параметруVersion.
На ферме из нескольких серверов RDS положите common.v8i в общую сетевую папку. Иначе после добавления базы придётся обновлять файл на каждом узле.
Тонкий клиент и веб-публикация
Если пользователи подключаются тонким клиентом через веб-сервер, в общем списке укажите строку Connect=ws="https://…";. Общий список при этом можно отдавать и по HTTP: в CommonInfoBases допустим адрес вида https://1c.firma.ru/lists/common.v8i. Это удобно для удалённых сотрудников без доступа к файловым ресурсам офиса.
Скрипт PowerShell: настройка за один запуск
Когда машин много, а домена нет (или часть компьютеров вне домена), выручает скрипт. Он делает три вещи: проверяет, что общий список доступен, создаёт папку настроек и добавляет строку CommonInfoBases, не затирая остальное.
# Запускать от имени администратора
$listPath = '\\fs01\1c_lists\common.v8i'
$cfgDir = Join-Path $env:ProgramData '1C\1CEStart'
$cfgFile = Join-Path $cfgDir '1CEStart.cfg'
$line = "CommonInfoBases=$listPath"
# 1. Исходный файл списка должен быть доступен
if (-not (Test-Path -LiteralPath $listPath)) {
Write-Error "Нет доступа к $listPath — проверьте общий доступ и права"
exit 1
}
# 2. Папка настроек окна запуска
if (-not (Test-Path -LiteralPath $cfgDir)) {
New-Item -ItemType Directory -Path $cfgDir -Force | Out-Null
}
# 3. Добавляем строку, если её ещё нет
$current = @()
if (Test-Path -LiteralPath $cfgFile) {
$current = Get-Content -LiteralPath $cfgFile -Encoding UTF8
}
if ($current -notcontains $line) {
$current += $line
$current | Set-Content -LiteralPath $cfgFile -Encoding UTF8
Write-Output "Строка добавлена в $cfgFile"
} else {
Write-Output "Настройка уже есть, изменений нет"
}
Проверка доступности исходного файла
Первый блок скрипта отсекает частую проблему: строку прописали, а пользователь не видит баз, потому что у компьютера нет доступа к общей папке. Скрипт останавливается с понятным сообщением. На машине без прав он ничего не испортит.
Повторный запуск безопасен
Скрипт сравнивает строки целиком и не дописывает дубль при втором запуске. Значит, его можно ставить в автозагрузку или планировщик заданий и не следить, на каких машинах он уже отработал.
Загрузка готового списка в профиль
Бывает, что общий список не подходит: например, ноутбук часто работает без сети. Тогда скопируйте готовый файл прямо в профиль пользователя:
$src = '\\fs01\1c_lists\common.v8i'
$dst = Join-Path $env:APPDATA '1C\1CEStart\ibases.v8i'
if (Test-Path -LiteralPath $src) {
New-Item -ItemType Directory -Path (Split-Path $dst) -Force | Out-Null
Copy-Item -LiteralPath $src -Destination $dst -Force
}
Этот вариант заменяет личный список пользователя целиком. Базы, которые человек добавлял сам, пропадут. Запускайте его только для новых профилей или после предупреждения. Выполнять скрипт нужно от имени самого пользователя, например сценарием входа, и при закрытом окне 1С.
Linux: тот же принцип, другие пути
В Linux окно запуска хранит настройки в домашнем каталоге:
~/.1C/1cestart/ibases.v8i— список баз;~/.1C/1cestart/1cestart.cfg— настройки окна запуска.
Строка CommonInfoBases работает так же, только путь к общему списку указывается в формате Linux, например к примонтированному ресурсу: CommonInfoBases=/mnt/1c_lists/common.v8i.
Для всех пользователей удобно действовать в два шага:
- Новым пользователям: положите готовый
1cestart.cfgв/etc/skel/.1C/1cestart/. При создании учётной записи он скопируется в домашний каталог. - Существующим: пройдитесь скриптом по домашним каталогам.
#!/bin/bash
LINE='CommonInfoBases=/mnt/1c_lists/common.v8i'
for home in /home/*; do
user=$(basename "$home")
dir="$home/.1C/1cestart"
cfg="$dir/1cestart.cfg"
mkdir -p "$dir"
grep -qxF "$LINE" "$cfg" 2>/dev/null || echo "$LINE" >> "$cfg"
chown -R "$user": "$home/.1C"
done
На тонких клиентах (терминалах без диска с загрузкой по сети) список баз обычно живёт на терминальном сервере. Настраивать нужно его, по способу 3.
Ошибки, из-за которых общий список не появляется
Ещё одна ловушка — секции с одинаковым ID в общем списке. Так бывает, когда секцию копируют и меняют только имя и Connect. Генерируйте новый GUID для каждой базы.