Yabr.os
Чтение скобочного формата файлов 1С (oscript)
Install / Use
/learn @arkuznetsov/Yabr.osREADME
<a href="https://checkbsl.org"><img alt="Checked by Silver Bulleters SonarQube BSL plugin" src="https://web-files.do.bit-erp.ru/sonar/b_t.png" align="right" style="width:400px"/></a>
Yet another brace reader (os): Чтение "скобкофайлов" 1С (yabr.os)
Приложение oscript для чтения скобочных файлов 1С, аналог обработок 1С (yabr.1c).
Общие сведения
- Чтение и обработка данных выполняется последовательно (построчно)
- Это эксперимент по реализации конвейерной обработки данных (pipeline), т.е. каждая порция данных, полученная в текущей обработке передается в указанный(-ные) в настройках обработчик(-и) для последующе обработки
- Настройки описываются в формате JSON (см. Файл настроек)
- разработка ведется в формате EDT
Обрабатываемые форматы
- Журнал регистрации 1С (LGP) и словарь журнала регистрации (LGF)
- Настройки информационных баз из файла настроек кластера 1С (1CV8Clst.lst)
- Список версий хранилища из отчета по версиям хранилища (MXL)
- Результаты замера производительности (PFF)
Команды
- process (p) - выполняет обработку данных настройкам из файла (.json)
- <Путь> - путь к файлу настроек (по умолчанию ./ybrsettings.json)
- --work-dir <путь к рабочему каталогу (по умолчанию: текущий каталог)>
- test (t) - выполняет чтение указанного файла в скобочном формате 1С, выводит результаты в консоль (возможен замер времени)
- <Путь> - путь к файлу в скобочном формате 1С
- --start-row <начальная строка для чтения (по умолчанию 1)>
- --mesure-rate <частота замера скорости выполнения (по умолчанию 100)>
Управляющие обработки
МенеджерОбработкиДанных.os
Управляющая обработка-менеджер, читает настройки, запускает и управляет обработкой данных.
yabr.os
Обработка для интерактивного указания файла настроек и запуска обработки данных.
<a id="api"></a> Стандартный программный интерфейс обработки
Функция ПринимаетДанные() - признак возможности обработки, принимать входящие данные
Функция ВозвращаетДанные() - признак возможности обработки, возвращать обработанные данные
Функция ОписаниеПараметров() - возвращает структуру с описанием параметров обработки
Функция МенеджерОбработкиДанных() - возвращает ссылку на вызывающую/управляющую обработку - менеджер обработки данных
Процедура УстановитьМенеджерОбработкиДанных(Знач НовыйМенеджерОбработкиДанных) - устанавливает ссылку на вызывающую/управляющую обработку - менеджер обработки данных
Функция Идентификатор() - возвращает идентификатор обработки, установленный при инициализации в менеджере обработки данных
Процедура УстановитьИдентификатор(Знач НовыйИдентификатор) - устанавливает идентификатор обработки, вызывается при инициализации в менеджере обработки данных
Функция ПараметрыОбработкиДанных() - возвращает значения параметров обработки данных
Процедура УстановитьПараметрыОбработкиДанных(Знач НовыеПараметры) - устанавливает значения параметров обработки данных
Функция ПараметрОбработкиДанных(Знач ИмяПараметра) - возвращает значение указанного параметра обработки данных
Процедура УстановитьПараметрОбработкиДанных(Знач ИмяПараметра, Знач Значение) - устанавливает значение указанного параметра обработки
Процедура УстановитьДанные(Знач ВходящиеДанные) - устанавливает данные для обработки
Процедура ОбработатьДанные() - выполняет обработку данных
Функция РезультатОбработки() - возвращает результаты обработки данных
Процедура ЗавершениеОбработкиДанных() - выполняет действия при окончании обработки данных и оповещает обработку-менеджер о завершении обработки данных
Обработчики данных
ПоискНастроекКластера.os
Ищет в стандартном расположении или в указанных каталогах файлы настроек кластера серверов 1С (1cv8lst.lst) и передает найденные файлы далее на обработку.
Параметры
- ОписанияКластеров - массив путей к каталогам, в которых будет выполняться поиск файлов настроек кластеров 1С. Если не указан, то выполняется поиск в стандартных расположениях (%ProgramFiles%\1Cv8\srvinfo).
ЧтениеКаталога.os
Читает список файлов из указанного каталога по указанной маске и передает для дальнейшей обработки по одному.
Параметры
-
Путь - Путь к каталогу для файлов для обработки. Значение по умолчанию: <каталог запуска обработки>;
-
МаскиФайлов - Маски поиска файлов, разделенные "";". Значение по умолчанию: ".";
-
ИскатьВПодкаталогах - Флаг поиска в подкаталогах. Значение по умолчанию: Ложь;
-
ПорядокСортировкиПоИмени - Указывает порядок сортровки найденных в каталоге файлов для дальнейшей обработки:
- asc - файлы сортируются по возрастанию имени
- desc - файлы сортируются по убыванию имени
- <прочее> (по умолчанию) - сортировка не выполняется
сортировка выполняется в пределах каждой указанной маски файлов.
ЧтениеСкобкоФайла.os
Читает скобочный файл в иерархию структур и массивов:
- чтение выполняется последовательно по строкам
- ошибки формата файла не проверяются и игнорируются, что сможет прочитать. то и получится
- элементы простых типов (число/строка) записываются в массив текущего уровня как есть
- элементы - массивы (ограниченные "{...}") "оборачиваются" в структуру вида:
|-> Элемент
| |- Родитель - родительский элемент (Неопределено - для корневого элемента)
|______|________|
| |- Уровень - уровень элемента в иерархии (0 - корневой элемент)
| |- Индекс - индекс элемента в родительском элементе
| |- НачСтрока - номер начальной строки диапазона, на основании которому создан текущий и подчиненные элементы
| |- КонСтрока - номер конечной строки диапазона, на основании которому создан текущий и подчиненные элементы
| |- Значения - массив дочерних элементов
|_______________|
- Для закрывающихся скобок ("}") выполняется обратный вызов МенеджерОбработкиДанных.ПродолжениеОбработкиДанных (МенеджерОбработкиДанных.os) для передачи прочитанных данных на дальнейшую обработку
Параметры
- ПутьКФайлу - (обязательный, если обработчик стоит первым в цепочке) Имя файла, файл, поток данных для чтения;
- УровниЗаписей - Массив уровней записей (по вложенности), которые будут переданы на дальнейшую обработку. Значение по умолчанию: [1];
- НачальнаяСтрока - Номер строки входящих данных с которой будет начато чтение. Значение по умолчанию: 1;
- КаталогПозицийЧтения - Путь к каталогу для сохранения позиций начала чтения. Если не указан, то позиции чтения сохраняться не будут;
- ЧастотаЗамераСкоростиВыполнения - Количество прочитанных записей для которых будет выполнен расчет скорости чтения данных. Если указан 0, то расчет скорости выполняться не будет. Значение по умолчанию: 0.
ЧтениеСпискаИБ.os
Принимает на вход данные в том виде как их возвращает обработка чтения "скобкофайлов" и обрабатывает элементы данных как запись настройки информационной базы в файле настроек кластера 1С.
Параметры
- УровеньЭлементов - (служебный, не требует установки) Номер уровня вложенности элементов в структуре данных, прочитанной из скобкофайла, которые будут прочитаны и обработаны. Значение: 3;
- ИндексЭлементаРодителя - (служебный, не требует установки) Индекс родительского элемента в структуре данных, подчиненные элементы которого будут прочитаны и обработаны. Значение: 2;
- ПутьКФайлу - Путь к файлу списка ИБ кластера 1С. Требуется для вывода информации о каталоге кластера 1С.
ЧтениеСловаряЖР.os
Принимает на вход данные в том виде как их возвращает обработка чтения "скобкофайлов" и обрабатывает каждый элемент данных как запись словаря текстового журнала регистрации.
Параметры
- УровеньЭлементов - (служебный, не требует установки) Номер уровня вложенности элементов в структуре данных, прочитанной из скобкофайла, которые будут прочитаны и обработаны. Значение: 1;
- ИндексЭлементаРодителя - (служебный, не требует установки) Индекс родительского элемента в структуре данных, подчиненные элементы которого будут прочитаны и обработаны. Значение: 0;
ЧтениеЖР.os
Принимает на вход данные в том виде как их возвращает обработка чтения "скобкофайлов" и обрабатывает каждый элемент данных как запись текстового журнала регистрации.
Параметры
- УровеньЭлементов - (служебный, не требует установки) Номер уровня вложенности элементов в структуре данных, прочитанной из скобкофайла, которые будут прочитаны и обработаны. Значение: 1;
- ИндексЭлементаРодителя - (служебный, не требует установки) Индекс родительского элемента в структуре данных, подчиненные элементы которого будут прочитаны и обработаны. Значение: 0;
- Словари - (обязательный) Словари данных журнала регистрации 1С. Задается в виде структуры <имя словаря>:[<ключ элемента>:<значение элемента>];
- **ВыгружатьК
