Skip to content

vanessa-opensource/bsl-parser

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Парсер конфигурации 1С

Информация

Скрипты данной библиотеки используются для разбора конфигурации 1С выгруженной в исходные файлы.

Под словом конфигурация понимается как конфигурация 1С, так и расширение.

Установка

  1. Склонировать репозиторий
  2. Выполнить скрипт installlocalhost.bat

Использование

Библиотека содержит в себе большое количество модулей и классов, часть из них может дорабатываться в процессе развития продукта. Поэтому рекомендуется использовать только методы модулей входящие в API (модули лежащие в корневом каталоге) для них будет сохранятся обратная совместимость.

API

Для работы с файлами выгрузки используются модуль-фабрика:

  • РазборКонфигураций - модуль содержит методы-конструкторы для инициализации объектов. Это базовый модуль, основная точка входа API. Он создает объекты позволяющие читать, писать и изменять исходники. Модуль содержит следующие методы:
    • ЗагрузитьКонфигурацию() - создает объект для чтения конфигурации
    • ЗагрузитьРасширение() - создает объект для чтения расширения
    • СоздатьНовуюКонфигурацию() - Создает объект для генерации описания конфигурации с нуля.
    • СоздатьНовоеРасширение() - Создает объект для генерации описания расширения с нуля.
    • СоздатьОбъектКонфигурации() - Создает описание объекта конфигурации
  • Конфигурация - класс, реализует API для работы с конфигураций
  • Расширение - класс, реализует API для работы с расширением
  • ДанныеКонфигурации - класс, хранит данные описания конфигурации, список объектов, модулей и тд
  • СтруктураКаталоговКонфигурации - класс, для навигации по каталогам выгрузки исходников. Учитывает различия хранения для различных версий.
  • Перечисления.* - предопределенные константы.
    • ТипыОбъектовКонфигурации - содержит методы для работы с типами
    • ФорматыВыгрузки - значения поддерживаемых форматов выгрузки
    • ТипыМодуля - значения типов модулей (общий, модуль формы, модуль объекта...)
    • ТипыБлоковМодуля - значения типов блоков модуля (Заголовок функции, комментарий, текст...)
    • ТипыОбласти - значения обязательных областей модуля
  • РедакторОписания - класс-помощник, содержит дополнительные методы редактирования описаний

Пример, выводит имена всех объектов конфигурации и имена всех методов

    #Использовать bsl-parser

    Парсер = РазборКонфигураций.ЗагрузитьКонфигурацию(КаталогИсходников); // Создаем парсер
    Конфигурация = Парсер.ОписаниеКонфигурации();

    Для Каждого Объект Из Конфигурация.ОбъектыКонфигурации Цикл // Обрабатываем объекты

        // Обработаем объекты
        Сообщить(Объект.Тип + "." + Объект.Наименование);

    КонецЕсли;

    Парсер.НайтиМодулиКонфигурации(); // Находим все модули объектов

    Для Каждого Модуль Из Конфигурация.ОбъектыКонфигурации Цикл

        Для Каждого Блок Из Модуль.БлокиМодуля Цикл

            Если Блок.ТипБлока = ТипыБлоковМодуля.ЗаголовокПроцедуры ИЛИ Блок.ТипБлока = ТипыБлоковМодуля.ЗаголовокФункции Тогда

                Сообщить(ОписаниеБлока.ИмяМетода);

            КонецЕсли;

        КонецЦикла;

    КонецЦикла;

Пример включения всех объектов в расширение:

    #Использовать bsl-parser

    Расширение = РазборКонфигураций.СоздатьНовоеРасширение(КаталогРасширения, ФорматыВыгрузки.Конфигуратор_8_3_10);
    Конфигурация = РазборКонфигураций.ЗагрузитьКонфигурацию(КаталогКонфигурации);

    СвойстваРасширения = Расширение.ОписаниеКонфигурации().СвойстваКонфигурации;

    СвойстваРасширения.Наименование = "Simple";
    СвойстваРасширения.Синоним = "Простое расширение";
    СвойстваРасширения.ПрефиксИмен = "smpl_";

    Для Каждого Объект Из Конфигурация.ОписаниеКонфигурации().ОбъектыКонфигурации Цикл

        Расширение.ДобавитьОбъектВРасширение(Объект);

    КонецЦикла;

    Расширение.Зафиксировать();

Пример добавления нового объекта в конфигурацию:

    #Использовать bsl-parser

    Конфигурация = РазборКонфигураций.ЗагрузитьКонфигурацию(КаталогКонфигурации);

    НовыйОбъект = РазборКонфигураций.СоздатьОбъектКонфигурации("Справочник", "ТестовыйСправочник");
    Конфигурация.ДобавитьОбъект("Справочник", НовыйОбъект);

    Конфигурация.Зафиксировать();

Пример поиск регистров сведений подчиненных регистратору:

    #Использовать bsl-parser

    Конфигурация = РазборКонфигураций.ЗагрузитьКонфигурацию(КаталогКонфигурации);
    КонфигурацияОбъекты = Конфигурация.ОписаниеКонфигурации();

    Для Каждого Регистр Из КонфигурацияОбъекты.НайтиОбъектыПоТипу("РегистрСведений") Цикл

        ЧтениеКонфигурации.ПрочитатьОписание(Регистр);

        Если Регистр.Описание.РежимЗаписи = "RecorderSubordinate" Тогда

            Сообщить(Регистр.ПолноеНаименование);

        КонецЕсли;

    КонецЦикла;

Лицензии и права

  • основная лицензия исходного кода продукта - MIT
  • лицензии стороннего кода - BSDv3, Apache License, Freeware, etc - подробные разъяснения лицензий на исходный код продукта и его документации в том числе содержатся внутри файлов исходного кода

About

Парсер конфигурации 1С

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • 1C Enterprise 99.9%
  • Batchfile 0.1%