Список баз 1С: где хранится ibases.v8i и общий список

Дата: 08.10.2026 17:54:53
Администрирование 1С
Список баз
Терминальный сервер
Кластер серверов
PowerShell
Комментарий:
0
Платформа:
8.3
Конфигурация:
Любая
Формы:
Любые

Список баз 1С — это то, что пользователь видит в окне запуска: наименования баз и папки. Сами базы лежат на сервере 1С, на диске или за веб-сервером, а в окне только ссылки на них. Хранятся ссылки в файле ibases.v8i, у каждого пользователя Windows свой. Ниже — где лежат файлы, формат записи, общий список для терминального сервера и рабочих мест и код, который собирает его по базам кластера.

Где хранится список баз 1С

Программа запуска 1cestart.exe (ярлык «1С:Предприятие») работает с двумя видами файлов — списками *.v8i и настройками 1CEStart.cfg. По справке платформы в Windows они лежат так:

ФайлГде лежитЧто в нём
ibases.v8i%APPDATA%\1C\1CEStartличный список; его читают окно запуска, тонкий и толстый клиент
1CEStart.cfg пользователя%APPDATA%\1C\1CEStartнастройки окна запуска, в том числе всё, что меняют через «Настройка…»
1CEStart.cfg для всехC:\ProgramData\1C\1CEStart (%ALLUSERSPROFILE%)общие настройки компьютера; сюда же установщик пишет InstalledLocation и InstallComponents
1CESCmn.cfgкаталог, из которого запущен 1cestart.exeнастройки для запуска из сетевой папки
общий *.v8iгде решит администратор, например \\srv01\1c-listsбазы для всех; подключается параметром CommonInfoBases

%APPDATA% — это C:\Users\<пользователь>\AppData\Roaming, поэтому путь %AppData%\Roaming\1C\1CEStart из некоторых инструкций неверен: Roaming в нём лишний. C:\Users\All Users\1C\1CEStart — ссылка Windows на ту же папку C:\ProgramData\1C\1CEStart. На Linux и macOS список лежит в домашнем каталоге: ~/.1C/1cestart/ibases.v8i.

Формат записи в ibases.v8i

Файл — текст в UTF-8 с BOM. База — секция: в квадратных скобках имя для пользователя, ниже строки «ключ=значение». Пример: папка, две серверные базы, файловая и веб-база.

[Рабочие базы]
ID=01a589cd-0b4d-4d5d-9224-3c90c44d711e
OrderInList=10
Folder=/
OrderInTree=10
External=0
[Торговля]
Connect=Srvr="srv01";Ref="trade";
ID=2288437b-ee70-40e2-bd88-9c260b3150b5
OrderInList=20
Folder=/Рабочие базы
OrderInTree=20
External=0
ClientConnectionSpeed=Normal
App=Auto
WA=1
DefaultVersion=8.3.27.1786
StartupErrorHelpText=Не входит в 1С? Звоните в ИТ, тел. 100
[Торговля (тест)]
Connect=Srvr="srv01:1641";Ref="trade_test";
ID=6e19b293-48cb-499d-b646-6a1caed6603f
OrderInList=30
Folder=/
OrderInTree=30
External=0
ClientConnectionSpeed=Normal
App=ThinClient
WA=0
AppArch=x86_64
[Архив до 2024]
Connect=File="D:\1C\Bases\archive";
ID=8b0776d7-0223-44d6-a39d-ebeb542fa17f
OrderInList=40
Folder=/
OrderInTree=40
External=0
ClientConnectionSpeed=Normal
App=ThickClient
WA=1
Version=8.3
AppArch=x86
[Торговля через интернет]
Connect=ws="https://srv01.example.local/trade";
ID=6267af02-cd6a-4b61-b177-c2a5bff2e865
OrderInList=50
Folder=/
OrderInTree=50
External=0
ClientConnectionSpeed=Low
App=ThinClient
WA=1
  • Connect — строка соединения: Srvr — адрес кластера (порт — если менеджер кластера не на 1541), Ref — имя базы в кластере, не в СУБД; File — каталог файловой базы; ws — адрес публикации.
  • ID — GUID записи: по нему клиент называет папки кэша и настроек в %LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8 (см. статью про кэш 1С). Сменился ID — конфигурация скачается заново. Копируете секцию — ставьте новый GUID, например [guid]::NewGuid() в PowerShell.
  • Folder — папка: / — корень, /Рабочие базы — вложенная; сама папка (в окне запуска — группа) — секция без Connect. Папки видны, если в «Настройка…» окна запуска включён флажок «Отображать в виде дерева».
  • OrderInList, OrderInTree — порядок в списке и в дереве, если сортировка не по наименованию.
  • App — режим запуска: Auto, ThinClient, ThickClient или WebClient; при Auto выбранный клиент платформа запишет в DefaultApp.
  • WA — аутентификация: 1 — «Выбирать автоматически» (сначала вход по учётной записи Windows), 0 — «Запрашивать имя и пароль».
  • ClientConnectionSpeed — Normal, Low (низкая скорость соединения) или OnStartup (выбирать при запуске); External=0 — служебный признак обычной записи, его не трогают.
  • DefaultVersion, Version, AppArch — версия и разрядность платформы, о них ниже.
  • StartupErrorHelpText, StartupErrorHelpURL — с 8.3.21 текст и ссылка в окне ошибки подключения: место для телефона ИТ-отдела.

Общий список для всех пользователей: CommonInfoBases

Общий список баз 1С не требует копировать ibases.v8i по профилям. Параметр CommonInfoBases в 1CEStart.cfg указывает на файл *.v8i; строк может быть несколько, и базы из всех файлов окно запуска показывает вместе с личными. Файл, подключённый через «Настройка…», появится только у текущего пользователя: интерактивные настройки пишутся в личный 1CEStart.cfg. Чтобы список информационных баз получили все пользователи компьютера, строки дописывают в C:\ProgramData\1C\1CEStart\1CEStart.cfg:

CommonInfoBases=\\srv01\1c-lists\cluster.v8i
CommonInfoBases=\\srv01\1c-lists\manual.v8i
DefaultVersion=8.3-8.3.27.1786

Путь вида \\сервер\папка — сетевой (UNC): два обратных слеша в начале обязательны. По справке 1CEStart.cfg — текст в UTF-16LE. CommonInfoBases из общего и личного файлов складываются, а DefaultVersion и UseHWLicenses из личного главнее. Личный ibases.v8i при этом остаётся.

Общий v8i кладите по UNC-пути, а не на букву сетевого диска, которой может не быть в сеансе; пользователям — только чтение, запись — администраторам и учётной записи генератора. Отделу можно дать ярлык с ключом /RunShortcut — окно запуска откроется со списком баз из указанного файла:

"C:\Program Files\1cv8\common\1cestart.exe" /RunShortcut "\\srv01\1c-lists\sklad.v8i"

При запуске 1cestart.exe из сетевой папки CommonInfoBases кладут в 1CESCmn.cfg рядом с ним — вместе с DistributiveLocation, каталогом дистрибутивов, из которого программа запуска сама ставит новые версии.

Список с веб-сервера: InternetService

Для удалённых сотрудников без доступа к шаре в 1CEStart.cfg задают адреса веб-сервисов: InternetService — список баз и дистрибутив тонкого клиента, WebCommonInfoBases — только список, WebDistributiveLocation — только дистрибутив. Сервис пишут сами, например Web-сервисом небольшой конфигурации: программа запуска методом CheckInfoBases спрашивает, менялся ли список, а с 8.3.2 метод может перенаправить её на другой сервис. Интерфейс и пример — в «Руководстве администратора», приложение 6, публикация — в статье про веб-сервер.

Раздача на терминальный сервер и рабочие места

На одном сервере строку можно дописать Блокнотом от администратора: при обычном сохранении он оставит UTF-16LE. Для парка машин удобнее скрипт: добавляет CommonInfoBases, не трогая остальное и не задваивая строку, делает копию с датой и пишет файл в UTF-16LE, даже если его пересохранили в другой кодировке.

# add-1c-common-list.ps1 - подключает общий список баз 1С строкой CommonInfoBases.
# По умолчанию правит 1CEStart.cfg для всех пользователей компьютера,
# с ключом -CurrentUser - файл текущего пользователя в %APPDATA%.
# Сохраните скрипт в UTF-8 с BOM. Запуск от администратора или сценарием GPO:
#   powershell.exe -ExecutionPolicy Bypass -File add-1c-common-list.ps1 -ListPath "\\srv01\1c-lists\cluster.v8i"
param(
    [Parameter(Mandatory = $true)]
    [string[]]$ListPath,
    [switch]$CurrentUser
)

$root = if ($CurrentUser) { $env:APPDATA } else { $env:ALLUSERSPROFILE }
$dir = Join-Path $root '1C\1CEStart'
$cfg = Join-Path $dir '1CEStart.cfg'
New-Item -ItemType Directory -Path $dir -Force | Out-Null

$lines = @()
$isUtf16 = $true
if (Test-Path -LiteralPath $cfg) {
    # По справке платформы файл в UTF-16LE (BOM FF FE); другую кодировку читаем как UTF-8
    $bytes = [System.IO.File]::ReadAllBytes($cfg)
    $isUtf16 = ($bytes.Length -ge 2) -and ($bytes[0] -eq 0xFF) -and ($bytes[1] -eq 0xFE)
    $encoding = if ($isUtf16) { 'Unicode' } else { 'UTF8' }
    $lines = @(Get-Content -LiteralPath $cfg -Encoding $encoding)
}

$added = @()
foreach ($path in $ListPath) {
    $line = 'CommonInfoBases=' + $path.Trim()
    # -notcontains сравнивает без учета регистра: повторный запуск строку не задвоит
    if ($lines -notcontains $line) {
        $lines += $line
        $added += $line
    }
}

if (($added.Count -eq 0) -and $isUtf16) {
    Write-Output "Без изменений: $cfg"
    exit 0
}

if (Test-Path -LiteralPath $cfg) {
    $backup = '{0}.{1:yyyyMMdd-HHmmss}.bak' -f $cfg, (Get-Date)
    Copy-Item -LiteralPath $cfg -Destination $backup
}
# Пишем в UTF-16LE с BOM - в этой кодировке файл ждет программа запуска
Set-Content -LiteralPath $cfg -Value $lines -Encoding Unicode
Write-Output "Записан $cfg"
$added | ForEach-Object { Write-Output "  добавлено: $_" }

В домене скрипт назначают компьютерам: «Конфигурация компьютера → Политики → Конфигурация Windows → Сценарии (запуск/завершение) → Автозагрузка», вкладка «Сценарии PowerShell», в параметрах — -ListPath с UNC-путём. Сценарий автозагрузки выполняется от SYSTEM, права на C:\ProgramData у него есть. Для группы пользователей — ключ -CurrentUser и сценарий входа: «Конфигурация пользователя → Политики → Конфигурация Windows → Сценарии (вход/выход из системы) → Вход в систему».

Не заменяйте 1CEStart.cfg готовым файлом, например элементом «Файлы» в настройках групповой политики: пропадут InstalledLocation и InstallComponents от установщика, и программа запуска может не найти версии, установленные не в C:\Program Files\1cv8, — скажем, 32-разрядные.

Версия и разрядность платформы для базы

Версию, выбранную в свойствах базы (поле «Версия 1С:Предприятия»), платформа пишет в запись ключом DefaultVersion. Ключ Version — маска вроде 8.3, к которой применяется закрепление из 1CEStart.cfg; если версии в записи нет, берётся версия по умолчанию. Неполный номер означает самую свежую подходящую версию из установленных или доступных для установки, полный — ровно эту сборку. Если её нет и поставить неоткуда, программа запуска (с 8.3.8) пробует открыть базу самой свежей установленной версией, а серверная база с клиентом другой версии отвечает «Различаются версии клиента и сервера». Чтобы базы с версией 8.3 на терминальном сервере не уехали на только что установленную сборку, закрепите за ними нужную в 1CEStart.cfg: DefaultVersion=8.3-8.3.27.1786 — по справке базы с версией 8.3 тогда запускаются на 8.3.27.1786.

Разрядность (с 8.3.12, на 64-разрядной Windows) хранится в ключе AppArch: x86, x86_64 или x86_prt / x86_64_prt — самая свежая версия, а из двух разрядностей указанная. 32-разрядный клиент оставляют базам с 32-битными внешними компонентами и COM-объектами. Разрядность по умолчанию задают в «Настройка…» окна запуска, в таблице «Используемые версии»; она хранится в строке DefaultVersion файла 1CEStart.cfg.

Сборка v8i по списку баз кластера

Ручной список отстаёт от кластера. Код ниже берёт перечень баз через ras и объект АдминистрированиеСервера (8.3.14+, версия сервера — с 8.3.16), без COM-коннектора, и пишет \\srv01\1c-lists\cluster.v8i. Файловые и веб-базы держите в manual.v8i со своей строкой CommonInfoBases.

Код — для модуля формы внешней обработки, выполняется на сервере 1С: учётной записи службы (по умолчанию USR1CV8) нужна запись в папку списка, ras должен быть доступен с сервера. Запуск ras — в статье про консоль кластера, расписание — в статье про регламентное задание для обработки.

// Модуль формы внешней обработки «Общий список баз». Платформа 8.3.16 и новее,
// на сервере 1С запущен ras (сервер администрирования, порт по умолчанию 1545).
// Для регламентного задания перенесите функции в общий модуль с флажком «Сервер»
// и уберите директивы компиляции.

&НаСервереБезКонтекста
Функция НастройкиСписка()

	Настройки = Новый Структура;
	Настройки.Вставить("СерверRAS", "srv01");
	Настройки.Вставить("ПортRAS", 1545);
	Настройки.Вставить("ПортКластера", 1541);
	// Администраторы кластера и центрального сервера, если они заведены.
	// Пароли не храните в коде: передайте из формы или из безопасного хранилища
	Настройки.Вставить("Администратор", "");
	Настройки.Вставить("Пароль", "");
	Настройки.Вставить("АдминистраторАгента", "");
	Настройки.Вставить("ПарольАгента", "");
	Настройки.Вставить("АдресДляКлиентов", ""); // пусто - имя компьютера из реестра кластера
	Настройки.Вставить("Папка", "Сервер srv01"); // одно имя без "/"; пусто - базы в корне
	Настройки.Вставить("Версия", ""); // пусто - точная версия сервера 1С, иначе полный номер сборки
	Настройки.Вставить("ТекстПомощи", "Не входит в 1С? Звоните в ИТ, тел. 100"); // 8.3.21+
	Настройки.Вставить("ИмяФайла", "\\srv01\1c-lists\cluster.v8i");
	Возврат Настройки;

КонецФункции

// Текст файла *.v8i: по секции на каждую базу кластера, по алфавиту, в одной папке.
&НаСервереБезКонтекста
Функция ТекстСпискаБазКластера(Знач Настройки)

	Агент = Новый АдминистрированиеСервера(Настройки.СерверRAS, Настройки.ПортRAS);
	Если ЗначениеЗаполнено(Настройки.АдминистраторАгента) Тогда
		// У агента порядок параметров обратный: сначала пароль, потом имя
		Агент.ВыполнитьАутентификацию(Настройки.ПарольАгента, Настройки.АдминистраторАгента);
	КонецЕсли;
	Версия = ?(ПустаяСтрока(Настройки.Версия), Агент.ПолучитьВерсию(), Настройки.Версия);

	Кластер = Неопределено;
	Для Каждого Элемент Из Агент.ПолучитьКластеры() Цикл
		Если Элемент.Порт = Настройки.ПортКластера Тогда
			Кластер = Элемент;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	Если Кластер = Неопределено Тогда
		ВызватьИсключение СтрШаблон("На %1 нет кластера с портом %2",
			Настройки.СерверRAS, Формат(Настройки.ПортКластера, "ЧГ=0"));
	КонецЕсли;
	Кластер.ВыполнитьАутентификацию(Настройки.Администратор, Настройки.Пароль);

	// Srvr в строке соединения - менеджер кластера; порт пишем, если он не 1541
	АдресКластера = ?(ПустаяСтрока(Настройки.АдресДляКлиентов), Кластер.ИмяКомпьютера,
		Настройки.АдресДляКлиентов);
	Если Кластер.Порт <> 1541 Тогда
		АдресКластера = АдресКластера + ":" + Формат(Кластер.Порт, "ЧГ=0");
	КонецЕсли;

	Базы = Новый ТаблицаЗначений;
	Базы.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
	Базы.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка"));
	Базы.Колонки.Добавить("ID", Новый ОписаниеТипов("Строка"));
	Для Каждого База Из Кластер.ПолучитьИнформационныеБазы() Цикл
		Запись = Базы.Добавить();
		Запись.Имя = База.Имя;
		// Пользователю показываем описание базы из кластера, если оно заполнено
		Запись.Наименование = ?(ПустаяСтрока(База.Описание), База.Имя, СокрЛП(База.Описание));
		// ID берем из кластера: при пересборке списка он не меняется
		Запись.ID = Строка(База.ИдентификаторИнформационнойБазы);
	КонецЦикла;
	Базы.Сортировать("Наименование");

	ИмяПапки = ИмяСекции(Настройки.Папка);
	Текст = Новый ТекстовыйДокумент;
	Если ЗначениеЗаполнено(ИмяПапки) Тогда
		ДобавитьПапку(Текст, ИмяПапки);
	КонецЕсли;
	Порядок = 0;
	Для Каждого Запись Из Базы Цикл
		Порядок = Порядок + 10;
		ДобавитьБазу(Текст, Запись, АдресКластера, "/" + ИмяПапки, Порядок, Версия,
			Настройки.ТекстПомощи);
	КонецЦикла;

	Возврат Текст.ПолучитьТекст();

КонецФункции

Секции базы и папки; ID папки — из MD5 её имени, тоже постоянный.

// Секция серверной базы в формате *.v8i
&НаСервереБезКонтекста
Процедура ДобавитьБазу(Текст, Знач База, Знач АдресКластера, Знач Папка, Знач Порядок,
	Знач Версия, Знач ТекстПомощи)

	Текст.ДобавитьСтроку("[" + ИмяСекции(База.Наименование) + "]");
	Текст.ДобавитьСтроку(СтрШаблон("Connect=Srvr=""%1"";Ref=""%2"";", АдресКластера, База.Имя));
	Текст.ДобавитьСтроку("ID=" + База.ID);
	Текст.ДобавитьСтроку("OrderInList=" + Формат(Порядок, "ЧГ=0"));
	Текст.ДобавитьСтроку("Folder=" + Папка);
	Текст.ДобавитьСтроку("OrderInTree=" + Формат(Порядок, "ЧГ=0"));
	Текст.ДобавитьСтроку("External=0");
	Текст.ДобавитьСтроку("ClientConnectionSpeed=Normal");
	Текст.ДобавитьСтроку("App=Auto");
	Текст.ДобавитьСтроку("WA=1");
	Текст.ДобавитьСтроку("DefaultVersion=" + Версия); // так платформа хранит версию из свойств базы
	Если ЗначениеЗаполнено(ТекстПомощи) Тогда
		Текст.ДобавитьСтроку("StartupErrorHelpText=" + ТекстПомощи);
	КонецЕсли;

КонецПроцедуры

// Секция папки: без Connect, сама лежит в корне дерева
&НаСервереБезКонтекста
Процедура ДобавитьПапку(Текст, Знач ИмяПапки)

	Текст.ДобавитьСтроку("[" + ИмяПапки + "]");
	Текст.ДобавитьСтроку("ID=" + СтабильныйID("folder:" + НРег(ИмяПапки)));
	Текст.ДобавитьСтроку("OrderInList=0");
	Текст.ДобавитьСтроку("Folder=/");
	Текст.ДобавитьСтроку("OrderInTree=0");
	Текст.ДобавитьСтроку("External=0");

КонецПроцедуры

// Квадратные скобки в имени заменяем на круглые, чтобы не путать разбор секций
&НаСервереБезКонтекста
Функция ИмяСекции(Знач Наименование)

	Возврат СтрЗаменить(СтрЗаменить(СокрЛП(Наименование), "[", "("), "]", ")");

КонецФункции

// GUID из MD5 ключа: один и тот же ключ дает один и тот же ID при каждой пересборке
&НаСервереБезКонтекста
Функция СтабильныйID(Знач Ключ)

	Хеширование = Новый ХешированиеДанных(ХешФункция.MD5);
	Хеширование.Добавить(Ключ);
	Хекс = НРег(ПолучитьHexСтрокуИзДвоичныхДанных(Хеширование.ХешСумма));
	Возврат СтрШаблон("%1-%2-%3-%4-%5", Лев(Хекс, 8), Сред(Хекс, 9, 4), Сред(Хекс, 13, 4),
		Сред(Хекс, 17, 4), Сред(Хекс, 21, 12));

КонецФункции

Запись файла и команда формы. Неизменившийся файл не перезаписывается, пустым списком не затирается.

// Пишет список во временный файл, прежний сохраняет в .bak и подменяет его.
// Возвращает Истина, если файл изменился. Список без баз не пишет:
// если ras вернул пустой ответ, у пользователей остается вчерашний файл.
&НаСервереБезКонтекста
Функция ЗаписатьСписокБаз(Знач ИмяФайла, Знач ТекстСписка)

	Если СтрНайти(ТекстСписка, "Connect=") = 0 Тогда
		ВызватьИсключение СтрШаблон("В списке нет ни одной базы, файл %1 не изменен", ИмяФайла);
	КонецЕсли;

	Файл = Новый Файл(ИмяФайла);
	Если Файл.Существует() Тогда
		Прежний = Новый ТекстовыйДокумент;
		Прежний.Прочитать(ИмяФайла, КодировкаТекста.UTF8);
		Если Прежний.ПолучитьТекст() = ТекстСписка Тогда
			Возврат Ложь; // базы не менялись - файл не трогаем
		КонецЕсли;
		КопироватьФайл(ИмяФайла, ИмяФайла + ".bak");
	КонецЕсли;

	// UTF-8 с BOM, как пишет список сама платформа
	ВременныйФайл = ИмяФайла + ".tmp";
	Запись = Новый ЗаписьТекста(ВременныйФайл, КодировкаТекста.UTF8);
	Запись.Записать(ТекстСписка);
	Запись.Закрыть();
	КопироватьФайл(ВременныйФайл, ИмяФайла);
	УдалитьФайлы(ВременныйФайл);
	Возврат Истина;

КонецФункции

// Команда формы «Обновить общий список»
&НаКлиенте
Процедура ОбновитьОбщийСписок(Команда)

	Результат = ОбновитьСписокНаСервере();
	ПоказатьОповещениеПользователя(?(Результат.Изменен, "Список баз обновлен", "Список баз не изменился"),
		, Результат.ИмяФайла);
	Для Каждого Замечание Из Результат.Замечания Цикл
		Сообщить(Замечание);
	КонецЦикла;

КонецПроцедуры

&НаСервереБезКонтекста
Функция ОбновитьСписокНаСервере()

	Настройки = НастройкиСписка();
	Результат = Новый Структура("ИмяФайла, Изменен, Замечания", Настройки.ИмяФайла);
	Результат.Изменен = ЗаписатьСписокБаз(Настройки.ИмяФайла, ТекстСпискаБазКластера(Настройки));
	Результат.Замечания = ЗамечанияКСпискуБаз(Настройки.ИмяФайла);
	Возврат Результат;

КонецФункции

Проверка готового файла, в том числе ручного manual.v8i:

// Разбирает файл *.v8i в массив структур: Наименование и Параметры (ключи в нижнем регистре).
&НаСервереБезКонтекста
Функция СекцииСпискаБаз(Знач ИмяФайла)

	Секции = Новый Массив;
	Текст = Новый ТекстовыйДокумент;
	Текст.Прочитать(ИмяФайла, КодировкаТекста.UTF8);
	Текущая = Неопределено;

	Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
		СтрокаФайла = СокрЛП(Текст.ПолучитьСтроку(НомерСтроки));
		Если СтрНачинаетсяС(СтрокаФайла, "[") И СтрЗаканчиваетсяНа(СтрокаФайла, "]") Тогда
			Текущая = Новый Структура("Наименование, Параметры",
				Сред(СтрокаФайла, 2, СтрДлина(СтрокаФайла) - 2), Новый Соответствие);
			Секции.Добавить(Текущая);
			Продолжить;
		КонецЕсли;
		Позиция = СтрНайти(СтрокаФайла, "=");
		Если Текущая = Неопределено Или Позиция = 0 Тогда
			Продолжить; // пустые строки и текст до первой секции
		КонецЕсли;
		// Делим по первому "=": в значении Connect их несколько
		Текущая.Параметры.Вставить(НРег(СокрЛП(Лев(СтрокаФайла, Позиция - 1))),
			СокрЛП(Сред(СтрокаФайла, Позиция + 1)));
	КонецЦикла;

	Возврат Секции;

КонецФункции

// Замечания к списку: записи без ID, повторы ID, повторы имен баз
// (базу с повторяющимся именем не запустить ярлыком с /IBName).
&НаСервереБезКонтекста
Функция ЗамечанияКСпискуБаз(Знач ИмяФайла)

	Замечания = Новый Массив;
	ПоID = Новый Соответствие;
	ПоИмени = Новый Соответствие;

	Для Каждого Секция Из СекцииСпискаБаз(ИмяФайла) Цикл
		Наименование = Секция.Наименование;
		ID = Секция.Параметры.Получить("id");
		Если ID = Неопределено Тогда
			Замечания.Добавить(СтрШаблон("«%1»: нет ID", Наименование));
		ИначеЕсли ПоID.Получить(НРег(ID)) <> Неопределено Тогда
			Замечания.Добавить(СтрШаблон("«%1» и «%2»: одинаковый ID %3",
				ПоID.Получить(НРег(ID)), Наименование, ID));
		Иначе
			ПоID.Вставить(НРег(ID), Наименование);
		КонецЕсли;

		Если Секция.Параметры.Получить("connect") = Неопределено Тогда
			Продолжить; // секция без Connect - папка
		КонецЕсли;
		Если ПоИмени.Получить(НРег(Наименование)) = Неопределено Тогда
			ПоИмени.Вставить(НРег(Наименование), Истина);
		Иначе
			Замечания.Добавить(СтрШаблон("«%1»: имя повторяется, запуск с /IBName выдаст ошибку",
				Наименование));
		КонецЕсли;
	КонецЦикла;

	Возврат Замечания;

КонецФункции

Разбор ключевых строк

  • Новый АдминистрированиеСервера(...) — подключение к ras (по умолчанию порт 1545), а не к агенту на 1540. До 8.3.14 остаётся COM: V83.COMConnector, ConnectAgent("tcp://srv01:1540"), GetClusters(), Authenticate(), GetInfoBases() — только Windows и коннектор той же версии и разрядности, что сервер; незарегистрированный даёт «Недопустимая строка с указанием класса».
  • Агент.ВыполнитьАутентификацию(...) нужна, только если заведены администраторы центрального сервера, и первым в ней идёт пароль. Кластер.ВыполнитьАутентификацию(...) — всегда: без неё ПолучитьИнформационныеБазы() не работает, а без администраторов подходят пустые строки.
  • Агент.ПолучитьВерсию() — точная версия сервера: генератор пишет её ключом DefaultVersion, как платформа хранит версию из свойств базы, и программа запуска сразу берёт нужный клиент. На 8.3.14–8.3.15 метода нет: впишите в Версия номер сборки сервера.
  • Кластер.ИмяКомпьютера — имя из реестра кластера. Если клиенты знают сервер под другим именем, заполните АдресДляКлиентов.
  • ИдентификаторИнформационнойБазы — постоянный GUID базы в кластере, поэтому кэш пользователей переживает пересборку списка.
  • КопироватьФайл(ВременныйФайл, ИмяФайла) — если оборвётся запись временного файла (сеть, права), рабочий список останется целым; прежний к тому же лежит в .bak.

Типичные ошибки

  • Правят не тот файл. Путь %AppData%\Roaming\…, conf.cfg платформы вместо 1CEStart.cfg, личный файл администратора вместо общего. Для всех пользователей — только C:\ProgramData\1C\1CEStart\1CEStart.cfg.
  • Общий список не появился. Буква сетевого диска, нет прав на чтение, опечатка: откройте путь из CommonInfoBases в Проводнике под учётной записью пользователя. Если 1CEStart.cfg пересохраняли в другой кодировке, верните UTF-16LE, как требует справка, — скрипт выше делает это сам.
  • База в списке дважды. Она есть и в личном ibases.v8i, и в общем. Уберите личную копию. Одинаковые имена ломают и ярлыки с /IBName: по справке при нескольких базах с таким именем запуск выдаёт ошибку.
  • «Различаются версии клиента и сервера». В DefaultVersion записи старая сборка или её нет на компьютере, либо закрепление DefaultVersion в 1CEStart.cfg держит старую. Поставьте клиент версии сервера и поправьте версию в свойствах базы или в 1CEStart.cfg; общий список обновит генератор.
  • «Администратор кластера не аутентифицирован». В кластере заведены администраторы, а в НастройкиСписка пустые Администратор и Пароль.
  • Генератор не пишет файл. Права на папку нужны учётной записи службы 1С, а не вашей. «В списке нет ни одной базы» — кластер пуст или указан не тот ras; рабочий файл не тронут.
  • Скопировали секцию и не сменили ID. Две записи с одним GUID — ЗамечанияКСпискуБаз покажет такие пары.

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

Пропал список баз — базы удалились?

Нет, пропал только ibases.v8i, например при пересоздании профиля Windows. Поищите файл в старом профиле или в предыдущих версиях папки %APPDATA%\1C\1CEStart. Серверные базы вернёт генератор выше, файловые — «Добавить…» → «Добавление в список существующей информационной базы».

Как перенести список баз на другой компьютер?

Скопируйте ibases.v8i при закрытом окне запуска в %APPDATA%\1C\1CEStart нового ПК; если там уже есть свой список, перенесите нужные секции. Пути файловых баз должны существовать, кэш клиент создаст сам.

Можно ли сделать разные списки для отделов?

Да: общий файл плюс файл отдела, который групповая политика подключает нужной группе (скрипт с -CurrentUser на вход в систему). Внутри файла базы раскладывают по папкам через Folder.

Когда проще заказать

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

По теме

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.


1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.