1
0
mirror of https://github.com/bia-technologies/bsl-parser.git synced 2024-11-19 20:31:44 +02:00
Парсер конфигурации 1С
Go to file
Maximov Valery 01701f6a45
Merge pull request #12 from sfaqer/bugfix/designerMultilangString
Исправлена ошибка пропуска элемента XML в случае если перед ним читается элемент типа многоязычная строка и при этом сам элемент не заполнен
2024-10-22 05:34:08 +03:00
.vscode обновление файлов для выпуска релиза 2021-09-22 13:41:11 +03:00
src Исправлена ошибка пропуска элемента XML в случае если перед ним читается элемент типа многоязычная строка и при этом сам элемент не заполнен 2024-10-18 11:58:45 +10:00
tasks #ONECICD-148 2019-06-17 12:04:42 +03:00
tests Merge branch 'feature/ONECICD-503' into 'develop' 2021-09-22 14:53:44 +03:00
.gitignore обновление файлов для выпуска релиза 2021-09-22 13:41:11 +03:00
installlocalhost.bat fix 2021-03-29 10:52:05 +03:00
installlocalhost.sh fix 2021-03-29 10:52:05 +03:00
LICENSE Исправление ошибок чтения 2023-05-24 15:03:43 +03:00
package-loader.os #ONECICD-148 2019-06-17 12:04:42 +03:00
packagedef fix 2021-03-29 10:52:05 +03:00
readme.md Update readme.md 2024-06-14 10:05:57 +03:00

Парсер конфигурации 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 - подробные разъяснения лицензий на исходный код продукта и его документации в том числе содержатся внутри файлов исходного кода