Данная библиотека - Реализация объекта для чтения информации о захваченных объектах хранилища.
Позволяет читать таблицу захваченных объектов в хранилище. Хранилище должно быть доступно локально или по сети! Под капотом работает библиотека с утилитой чтения файловых баз данных tool1cd от awa
Скачиваем пакет из релизов этого репо и устанавливаем через opm
opm install -f .\storagereader-1.0.0.ospx
opm install storagereader
#Использовать storagereader
После подключения библиотеки доступно создание объекта ЧтениеХранилища. Затем нужно вызвать метод объекта ЧтениеХранилища - ПрочитатьХранилище().
ЧтениеХранилища = Новый ЧтениеХранилища(Хранилище, ВыгрузкаКонфигурации);
ЧтениеХранилища.ПрочитатьХранилище();
Создавать объект можно со следующими параметрами:
- Хранилище - тут нужно указать каталог хранилища 1С
- ВыгрузкаКонфигурации - тут можно указать каталог выгрузки конфигурации в исходный код
ПрочитатьХранилище() считывает переданные параметры, проверяет их, и формирует таблицу значений, в которой содержатся данные о захваченных объектах.
Если вызвать метод объекта ЧтениеХранилища ТаблицаЗахватов() вернется эта таблица значений.
ТаблицаЗахватов = ЧтениеХранилища.ТаблицаЗахватов();
Колонки у этой таблицы значений следующие:
- Метаданные - Строка - описание объекта метаданных
- Пользователь - Строка - Пользователь, как он задан в хранилище
- ДатаЗахвата - Дата - Дата захвата объекта
Если не передавать второй параметр при создании ЧтениеХранилища, метаданные вернутся в следующем виде (примерно так они выглядят в БД хранилища):
- Конфигурация.СуперФорма - общая форма с именем СуперФорма
- Конфигурация - корень конфигурации
- Конфигурация.Справочник1.ФормаЭлемента - форма справочника Справочник1
- Конфигурация.Справочник1 - сам справочник Справочник1
Немного непривычно, поэтому специально для того, чтобы было более похоже на данные выгрузки в исходный код, я добавил обработку параметра ВыгрузкаКонфигурации, если он заполнен - метаданные берутся оттуда и выглядят так:
- CommonForm.СуперФорма - общая форма с именем СуперФорма
- Configuration.ТестоваяКонфигурация - корень конфигурации
- Catalog.Справочник1.Form.ФормаЭлемента - форма справочника Справочник1
- Catalog.Справочник1;Администратор - сам справочник Справочник1
Единственная сложность - каталог с исходниками должен быть актуальным, так как если в хранилище добавили новый объект, идентификаторов которого нет в каталоге с исходниками, метаданные этого объекта будут пустыми. Так как скрипты с использованием этой библиотеки крутятся на сервере, на котором выгружаются исходники, каталоги с исходниками у меня всегда актуальны.
Также у ЧтениеХранилища есть метод КореньЗахвачен(), который возвращает структуру с информацией о захвате корня хранилища.
ДанныеОЗахватеКорня = ЧтениеХранилища.КореньЗахвачен();
Поля у этой структуры следующие:
- Захвачен - Булево
- Длительность - Число - Количество секунд, прошедшее с момента захвата в хранилище корня
- Пользователь - Строка - Пользователь, как он задан в хранилище
#Использовать storagereader
ЧтениеХранилища = Новый ЧтениеХранилища(ПутьКХранилищу);
ЧтениеХранилища.ПрочитатьХранилище();
ТаблицаЗахватов = ЧтениеХрана.ТаблицаЗахватов();
ЗаписатьТаблицуНаДиск(ТаблицаЗахватов, ИмяФайла);
ДанныеОЗахватеКорня = ЧтениеХранилища.КореньЗахвачен();
Если ДанныеОЗахватеКорня.Захвачен И ДанныеОЗахватеКорня.Длительность > 7200 Тогда
ТекстСообщения = СтрШаблон("Корень захвачен %1 часов назад пользователем %2",
Окр(ДанныеОЗахватеКорня.Длительность / 3600),
ДанныеОЗахватеКорня.Пользователь);
ОтправитьУведомлениеТелеграмОДолгомЗахватеКорня(ТекстСообщения);
КонецЕсли;
Также смотрите код в каталоге example и tests