Почему в терминальном режиме пропадает список баз 1С при запуске через ярлык v8i?

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

При работе в терминальной среде на базе Windows Server пользователи часто сталкиваются с неприятной ситуацией: после обновления платформы 1С или изменения настроек профиля при запуске базы через ярлык .v8i программа выдает сообщение "Список информационных баз пуст". Это происходит даже в том случае, если в самом файле ярлыка путь к базе прописан корректно. Проблема особенно актуальна для версий платформы, начиная с 8.2.15.х и выше, включая современные релизы 8.3.

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

Выясняем причины: как работает стартер 1С

Для начала проанализируем механизм работы программы запуска 1cestart.exe. Когда пользователь открывает файл с расширением .v8i, стартер пытается выполнить синхронизацию данных. Он не просто считывает путь из ярлыка, но и проверяет наличие локального файла настроек пользователя ibases.v8i, который обычно располагается по пути %AppData%\Roaming\1C\1CEStart\.

Если в системе установлены разные версии платформы в разные папки (например, 8.2.14 и 8.2.15), бинарные файлы могут конфликтовать. Основные причины «опустения» списка:

  1. Отсутствие прав доступа: Пользователь не имеет прав на создание или изменение файлов в папке AppData.
  2. Ошибка синхронизации: Стартер не может корректно объединить параметры из ярлыка с основным списком баз пользователя.
  3. Особенности VirtualStore: В Windows Server 2008 R2 и выше система может перенаправлять запись файлов в виртуальное хранилище, из-за чего 1С «видит» пустой файл вместо реального.
  4. Задержки при поиске ключа: Если в сети долго ищется лицензия, окно выбора баз может отрисоваться пустым до момента получения ответа от менеджера лицензий.

Решение №1: Централизованное управление через 1CEStart.cfg

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

Разберем по шагам, как настроить общие базы:

  1. Перейдем в каталог установки платформы. Обычно это C:\Program Files (x86)\1cv82\conf или C:\Program Files\1cv8\conf.
  2. Найдем (или создадим) файл 1CEStart.cfg.
  3. Добавим в него параметр CommonInfoBases, указывающий на эталонный файл со списком баз.

Пример содержимого файла 1CEStart.cfg:


CommonInfoBases=C:\1C_Bases\all_bases.v8i
UseHwLicenses=1
InstallComponents=DESIGNERALLCLIENTS=0 THINCLIENT=1 THICKCLIENT=1

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

Решение №2: Автоматизация через VBS-скрипт при входе в систему

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

Создадим файл copy_bases.vbs и пропишем в нем следующий код:


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")

' Определяем путь к папке настроек 1С в профиле пользователя
appDataPath = objShell.ExpandEnvironmentStrings("%AppData%") & "\1C\1CEStart\"
sourceFile = "C:\1C_Setup\ibases.v8i" ' Путь к эталонному файлу

' Проверяем существование целевой папки, если нет — создаем
If Not objFSO.FolderExists(appDataPath) Then
    ' Создаем дерево папок рекурсивно или по очереди
    On Error Resume Next
    objFSO.CreateFolder(objShell.ExpandEnvironmentStrings("%AppData%") & "\1C")
    objFSO.CreateFolder(appDataPath)
    On Error GoTo 0
End If

' Копируем файл с перезаписью
objFSO.CopyFile sourceFile, appDataPath, True

Этот скрипт необходимо назначить в групповых политиках (GPO) через gpedit.msc в раздел Конфигурация пользователя -> Конфигурация Windows -> Сценарии -> Вход в систему. Таким образом, при каждом открытии терминальной сессии у пользователя будет актуальный список информационных баз. Для централизованного обновления или массовой модификации списков подключений в домене подойдёт скрипт для изменения параметров в файле ibases.v8i через GPO.

Решение №3: Ручная настройка общего списка в окне запуска

Проанализируем ситуацию, когда баз немного и пользователей тоже. Мы можем настроить «Список общих информационных баз» непосредственно через интерфейс 1С. Это исключит проблему очистки локального файла ibases.v8i.

  1. Запустим 1С:Предприятие.
  2. Нажмем кнопку Настройка... в окне выбора баз.
  3. В разделе "Списки общих информационных баз" нажмем кнопку "Добавить" (плюс).
  4. Укажем путь к файлу .v8i, который лежит в сетевой папке или на локальном диске сервера, доступном для всех на чтение.

После этой манипуляции 1С пропишет путь к этому файлу в 1CEStart.cfg текущего пользователя, и базы будут отображаться всегда, даже если основной файл ibases.v8i будет поврежден или удален.

Решение №4: Устранение проблем с правами и антивирусом

Иногда список баз слетает из-за того, что антивирусное ПО или служба теневого копирования блокируют файл ibases.v8i в момент закрытия программы. В этот момент файл может обнулиться (стать размером 0 байт).

Чтобы этого избежать, рекомендуем выполнить следующие действия:

Подводя итог, можно сказать, что самым надежным способом для терминального сервера является использование параметра CommonInfoBases в файле 1CEStart.cfg. Это гарантирует единообразие списка баз у всех сотрудников и сводит к минимуму обращения в техническую поддержку по поводу «пропавших баз».

← На главную