Как получить имя информационной базы из окна запуска в 1С

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

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

Особенности платформы и почему встроенный метод не дает имя из списка

Стандартная функция встроенного языка 1С СтрокаСоединенияИнформационнойБазы() возвращает технические параметры подключения:

  1. Для файлового варианта: строку вида File="C:\Bases\Trade";.
  2. Для клиент-серверного варианта: строку вида Srvr="ServerName";Ref="BaseName";.

Штатного метода, который вернул бы пользовательский заголовок из окна запуска, в платформе 1С не существует. Это обусловлено архитектурой программы: наименование в списке запуска является свойством ярлыка в стартере 1С (1cestart), а не самой базы данных. Один и тот же каталог или серверная база у разных пользователей может называться по-разному (например, «Бухгалтерия», «Наша Бухгалтерия» или «Тестовая БП»).

Информация о списке баз хранится в локальном файле профиля пользователя ibases.v8i (в ОС Windows путь по умолчанию: %APPDATA%\1C\1CEStart\ibases.v8i).

Рассмотрим практические способы решения этой задачи.

Способ 1. Использование внутренних настроек информационной базы (рекомендуемый подход)

Чтобы формирование отчетов и работа фоновых заданий не зависели от того, как отдельный пользователь переименовал ярлык в своем окне запуска, правильнее хранить понятное наименование внутри самой базы данных.

Проанализируем варианты реализации этого подхода:

  1. Использование константы или заголовка системы: в конфигурации создается константа (например, НаименованиеБазыДляОтчетов) или используется стандартный механизм ЗаголовокСистемы(). Администратор задает в ней официальное название базы.
  2. Проверка каталога подключения: при вызове отчета код запрашивает СтрокаСоединенияИнформационнойБазы() и сравнивает полученный путь с эталонным значением из константы. Если пути совпадают, выводится официальное название, если нет — система считает базу копией (например, для тестирования) и выводит пометку «ТЕСТОВАЯ БАЗА».

Посмотрим на пример работы с параметрами подключения и заголовком:


СтрокаПодключения = СтрокаСоединенияИнформационнойБазы();
ИмяДляОтчета = ЗаголовокСистемы();

Если Не ЗначениеЗаполнено(ИмяДляОтчета) Тогда
    ИмяДляОтчета = СтрокаПодключения;
КонецЕсли;

Способ 2. Передача наименования через параметр командной строки

Если запуск баз выполняется автоматически по расписанию через скрипты или пакетный файл, наименование можно передать напрямую при старте с помощью ключа /C.

Рассмотрим порядок действий:

  1. В строке запуска или скрипте указывается параметр: 1cv8.exe enterprise /F "C:\Bases\Trade" /C "Бухгалтерия Главная".
  2. В коде 1С значение параметра считывается с помощью функции ПараметрыЗапуска().

Пример получения значения в коде:


ПереданноеИмя = ПараметрыЗапуска();
Если ЗначениеЗаполнено(ПереданноеИмя) Тогда
    // Используем переданное имя в отчете
    НаименованиеБазы = ПереданноеИмя;
КонецЕсли;

Способ 3. Парсинг файла списка информационных баз ibases.v8i

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

Разберем алгоритм выполнения этой операции:

  1. На стороне тонкого или толстого клиента определяется путь к файлу ibases.v8i в каталоге %APPDATA%\1C\1CEStart\.
  2. Файл считывается как текстовый документ формата INI.
  3. Выполняется поиск секции, у которой параметр Connect= совпадает со значением, возвращаемым функцией СтрокаСоединенияИнформационнойБазы().
  4. Название найденной секции (заголовок в квадратных скобках) будет соответствовать имени базы в стартере.

Важное ограничение: данный способ работает только на тонком или толстом клиенте при наличии прав на чтение локальной файловой системы. Он не сработает в веб-клиенте, режиме внешнего соединения, через web-сервисы или при прямом запуске исполняемого файла 1cv8.exe без использования окна стартера.

Резюме

Для надежной работы отчетов и сервисных механизмов наиболее оптимальным решением является использование внутренних настроек конфигурации (констант или заголовка системы) либо ориентация на уникальный каталог/параметры подключения, получаемые через СтрокаСоединенияИнформационнойБазы().

← На главную