https://github.com/bia-technologies/bsl-parser
Парсер конфигурации 1С
https://github.com/bia-technologies/bsl-parser
1script bsl onescript oscript-lib oscript-package
Last synced: 7 months ago
JSON representation
Парсер конфигурации 1С
- Host: GitHub
- URL: https://github.com/bia-technologies/bsl-parser
- Owner: bia-technologies
- License: mit
- Created: 2020-05-19T05:12:21.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-10-22T02:34:09.000Z (12 months ago)
- Last Synced: 2024-10-23T03:48:16.887Z (12 months ago)
- Topics: 1script, bsl, onescript, oscript-lib, oscript-package
- Language: 1C Enterprise
- Size: 307 KB
- Stars: 40
- Watchers: 9
- Forks: 17
- Open Issues: 8
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Парсер конфигурации 1С
## Информация
Скрипты данной библиотеки используются для разбора конфигурации 1С выгруженной в исходные файлы.
*Под словом **конфигурация** понимается как конфигурация 1С, так и расширение.*
## Установка
1. Склонировать репозиторий
2. Выполнить скрипт `installlocalhost.bat`## Использование
Библиотека содержит в себе большое количество модулей и классов, часть из них может дорабатываться в процессе развития продукта.
Поэтому рекомендуется использовать только методы модулей входящие в API (модули лежащие в корневом каталоге) для них будет сохранятся обратная совместимость.### API
Для работы с файлами выгрузки используются модуль-фабрика:
* [РазборКонфигураций](src/Модули/РазборКонфигураций.os) - модуль содержит методы-конструкторы для инициализации объектов.
Это базовый модуль, основная точка входа API. Он создает объекты позволяющие читать, писать и изменять исходники.
Модуль содержит следующие методы:
* ЗагрузитьКонфигурацию() - создает объект для чтения конфигурации
* ЗагрузитьРасширение() - создает объект для чтения расширения
* СоздатьНовуюКонфигурацию() - Создает объект для генерации описания конфигурации с нуля.
* СоздатьНовоеРасширение() - Создает объект для генерации описания расширения с нуля.
* СоздатьОбъектКонфигурации() - Создает описание объекта конфигурации
* [Конфигурация](src/Классы/Конфигурация.os) - класс, реализует API для работы с конфигураций
* [Расширение](src/Классы/Расширение.os) - класс, реализует API для работы с расширением
* [ДанныеКонфигурации](src/Классы/ДанныеКонфигурации.os) - класс, хранит данные описания конфигурации, список объектов, модулей и тд
* [СтруктураКаталоговКонфигурации](src/Классы/СтруктураКаталоговКонфигурации.os) - класс, для навигации по каталогам выгрузки исходников. Учитывает различия хранения для различных версий.
* Перечисления.* - предопределенные константы.
* ТипыОбъектовКонфигурации - содержит методы для работы с типами
* ФорматыВыгрузки - значения поддерживаемых форматов выгрузки
* ТипыМодуля - значения типов модулей (общий, модуль формы, модуль объекта...)
* ТипыБлоковМодуля - значения типов блоков модуля (Заголовок функции, комментарий, текст...)
* ТипыОбласти - значения обязательных областей модуля
* [РедакторОписания](src/Классы/РедакторОписания.os) - класс-помощник, содержит дополнительные методы редактирования описанийПример, выводит имена всех объектов конфигурации и имена всех методов
```bsl
#Использовать bsl-parserПарсер = РазборКонфигураций.ЗагрузитьКонфигурацию(КаталогИсходников); // Создаем парсер
Конфигурация = Парсер.ОписаниеКонфигурации();Для Каждого Объект Из Конфигурация.ОбъектыКонфигурации Цикл // Обрабатываем объекты
// Обработаем объекты
Сообщить(Объект.Тип + "." + Объект.Наименование);КонецЦикла;
Парсер.НайтиМодулиКонфигурации(); // Находим все модули объектов
Для Каждого Модуль Из Конфигурация.ОбъектыКонфигурации Цикл
Для Каждого Блок Из Модуль.БлокиМодуля Цикл
Если Блок.ТипБлока = ТипыБлоковМодуля.ЗаголовокПроцедуры ИЛИ Блок.ТипБлока = ТипыБлоковМодуля.ЗаголовокФункции Тогда
Сообщить(ОписаниеБлока.ИмяМетода);
КонецЕсли;
КонецЦикла;
КонецЦикла;
```Пример включения всех объектов в расширение:
```bsl
#Использовать bsl-parserРасширение = РазборКонфигураций.СоздатьНовоеРасширение(КаталогРасширения, ФорматыВыгрузки.Конфигуратор_8_3_10);
Конфигурация = РазборКонфигураций.ЗагрузитьКонфигурацию(КаталогКонфигурации);СвойстваРасширения = Расширение.ОписаниеКонфигурации().СвойстваКонфигурации;
СвойстваРасширения.Наименование = "Simple";
СвойстваРасширения.Синоним = "Простое расширение";
СвойстваРасширения.ПрефиксИмен = "smpl_";Для Каждого Объект Из Конфигурация.ОписаниеКонфигурации().ОбъектыКонфигурации Цикл
Расширение.ДобавитьОбъектВРасширение(Объект);
КонецЦикла;
Расширение.Зафиксировать();
```
Пример добавления нового объекта в конфигурацию:
```bsl
#Использовать bsl-parserКонфигурация = РазборКонфигураций.ЗагрузитьКонфигурацию(КаталогКонфигурации);
НовыйОбъект = РазборКонфигураций.СоздатьОбъектКонфигурации("Справочник", "ТестовыйСправочник");
Конфигурация.ДобавитьОбъект("Справочник", НовыйОбъект);Конфигурация.Зафиксировать();
```
Пример поиск регистров сведений подчиненных регистратору:
```bsl
#Использовать bsl-parserКонфигурация = РазборКонфигураций.ЗагрузитьКонфигурацию(КаталогКонфигурации);
КонфигурацияОбъекты = Конфигурация.ОписаниеКонфигурации();Для Каждого Регистр Из КонфигурацияОбъекты.НайтиОбъектыПоТипу("РегистрСведений") Цикл
ЧтениеКонфигурации.ПрочитатьОписание(Регистр);
Если Регистр.Описание.РежимЗаписи = "RecorderSubordinate" Тогда
Сообщить(Регистр.ПолноеНаименование);
КонецЕсли;
КонецЦикла;
```
## Лицензии и права
* основная лицензия исходного кода продукта - [MIT](LICENSE)
* лицензии стороннего кода - BSDv3, Apache License, Freeware, etc - подробные разъяснения лицензий на исходный код продукта и его документации в том числе содержатся внутри файлов исходного кода