Когда в распоряжении системного администратора или программиста находится более 80 информационных баз, ручной учет их параметров превращается в трудоемкую и неэффективную задачу. Возникает необходимость автоматизированного сбора данных о наименовании баз, занимаемом объеме памяти и версиях конфигураций. В рамках этой статьи мы рассмотрим основные методы решения этой задачи: от использования штатных инструментов платформы до написания собственных скриптов и прямых запросов к серверу баз данных.
Для начала проанализируем стандартные возможности платформы «1С:Предприятие». Наиболее корректным способом программного получения списка всех информационных баз, зарегистрированных в кластере, является использование сервера администрирования RAS (Remote Administration Service) и консольной утилиты RAC (Remote Administration Client).
Разберем, как это работает по шагам:
ras.exe. Обычно он работает на порту 1545.rac infobase summary list мы можем получить список всех баз кластера.rac, парсить вывод и сохранять его в таблицу.Этот метод позволяет получить идентификаторы баз, их описания и настройки, не заходя в саму «1С» и не создавая лишних сеансов пользователей.
Для решения задачи по определению объема памяти, занимаемого базами, посмотрим на возможности SQL-сервера. Выполнять эту задачу средствами самой «1С» не всегда эффективно, так как размер базы данных на диске проще получить через системные представления SQL.
Рассмотрим пример SQL-запроса, который соберет информацию о размере всех баз данных на сервере:
SELECT
d.name AS [Database Name],
CAST(SUM(f.size) * 8 / 1024.0 AS DECIMAL(10,2)) AS [Size MB]
FROM sys.databases d
JOIN sys.master_files f ON d.database_id = f.database_id
GROUP BY d.name;
Проанализируем этот код: мы обращаемся к системному представлению sys.master_files, суммируем размер всех файлов (данных и логов транзакций) и переводим их из страниц в мегабайты. Полученную таблицу можно легко экспортировать в Excel или использовать как источник данных для централизованной базы мониторинга.
Самым сложным моментом является получение версии конфигурации, так как эта информация хранится внутри информационной базы. Выясним причину, по которой это сложно: «1С» хранит данные о конфигурации в сжатом бинарном виде в таблице Config.
Одним из наиболее стабильных и современных способов является создание в каждой базе небольшого расширения с HTTP-сервисом. Разберем алгоритм реализации:
Monitoring.
Функция ВерсияКонфигурации(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки(Метаданные.Версия);
Возврат Ответ;
КонецФункции
Этот путь является легальным, безопасным и не требует использования устаревших COM-соединений, которые часто вызывают проблемы с разрядностью систем и утечками памяти.
Если количество баз исчисляется сотнями, рекомендуется обратить внимание на готовые решения от фирмы «1С». В состав продукта «1С:Корпоративный инструментальный пакет» (КИП) входит 1С:Центр контроля качества.
Это мощный инструмент, который в автоматическом режиме собирает:
Такой подход избавляет от необходимости писать собственные скрипты, предоставляя готовый интерфейс для мониторинга всей ИТ-инфраструктуры.
Существует также способ получения версии конфигурации без запуска «1С». Рассмотрим подробнее структуру таблицы Config. Информация о версии часто содержится в строке с именем version или в метаданных корневого объекта конфигурации.
Однако данные там сжаты алгоритмом deflate. Опытные администраторы используют скрипты на C# или PowerShell, которые:
BinaryData таблицы Config.Этот метод чрезвычайно быстр, так как позволяет опросить 80 баз за несколько секунд, но он требует глубоких технических знаний и понимания структуры хранения данных «1С» на уровне СУБД.
Подводя итоги, проанализируем ситуацию и выберем оптимальный путь. Если вам нужно разовое решение для формирования отчета, проще всего использовать SQL-запросы для получения размера баз и RAC для получения списка имен.
Для постоянного мониторинга идеальным вариантом будет создание собственной базы-диспетчера, которая будет опрашивать целевые информационные базы через HTTP-сервисы или использовать REST API платформы (доступно в новых версиях 8.3.24+). Это позволит не только видеть текущие версии и объемы, но и контролировать наличие бэкапов, даты последних обновлений и даже переводить неиспользуемые базы в спящий режим.