Skip to content

Оформлятор модулей 1С — инструмент для автоматизации работы с исходным кодом 1С как с данными.

License

Notifications You must be signed in to change notification settings

vladimir-kharin/1c_formatter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Оформлятор модулей 1С

Оформлятор модулей 1С — расширяемый форматтер структуры модулей 1С с ИИ. Он позволяет:

  • Форматировать код, расставлять области (можно расширять форматтер под ваши регламенты, стандарты 1С и т.д.).
  • Документировать методы при помощи LLM (вам остается проверить, поправить при необходимости).
  • Анализировать код (в том числе строить граф вызовов, находить используемые поля и пр.).
  • Перетаскивать функционал из других конфигураций, переводить язык синтаксиса и решать иные «точечные» задачи автоматизации. Но для этого нужно разрабатывать свои дополнительные компоненты (под ваши конерктные задачи).

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

Публикация на Инфостарт

Возможности

Что есть уже сейчас:

  • Расстановка стандартных областей в модуле и автоматическое распределение по ним методов.
  • Документирование методов с использованием LLM (есть режим где не нужен ключ API, но ограниченный - не более 15 тыс. символов в одном запросе и ограничения по количеству запросов в минуту).
  • Форматирование кода методов с использованием LLM по настраиваемым правилам: возможность задавать собственные правила форматирования кода с автоматическим применением через ИИ.
  • Формирование текста модуля на основании структуры данных (дерева) модуля.
  • Парсинг кода в структуры нескольких уровней абстракции:
    • Токенизация.
    • Построение абстрактного синтаксического дерева (АСД).
    • Формирование структуры модуля (области, переменные, сигнатуры методов с информацией из документации в комментарии над методом). Это основное представление для дальнейших операций.
    • Анализ связей в коде (например, вызовы методов, используемые поля и т.д.).

Типовой сценарий использования

Наиболее распространённый процесс «оформления» модуля выглядит так:

  1. Копирование модуля из Конфигуратора 1С: открыть нужный модуль, Ctrl + A, затем Ctrl + C.
  2. Разбор модуля в «Оформляторе»:
    • В инструменте выбрать «Добавить модуль» → «Из текста».
    • Вставить скопированный текст (Ctrl + V).
    • Нажать «Разобрать».
  3. Расстановка областей: меню «Действия» → «Расстановка областей».
  4. Генерация документации для методов (если требуется):
    • Клик правой кнопкой на области «ПрограммныйИнтерфейс» → «Документирование (с настройкой)...» → «Генерировать описание».
    • Проверить описание, при необходимости внести правки и сохранить.
  5. Формирование итогового текста модуля: «Действия» → «Сформировать тексты модулей...».
  6. Копирование результата обратно в Конфигуратор.

Видеодемонстрация, где в частности рассматривается внутреннее устройство и добавление компонент к решению.

Demo GIF

Компоненты форматирования

Расстановка областей

Компонент для автоматической расстановки стандартных областей в модуле и распределения методов по этим областям на основе правил и соглашений. Поддерживает как русский, так и английский синтаксис (#Region/#Область).

Документирование методов

Инструмент для автоматического создания документации методов с использованием LLM. Позволяет описывать назначение методов, их параметры, возвращаемые значения и другую информацию в формате комментариев к коду. Доступны два варианта использования: бесплатный сервис с ограничениями по объёму текста и количеству запросов, либо подключение через собственные ключи API для функционала без ограничений.

Оформление тела методов

Компонент для форматирования кода внутри методов с применением произвольных правил оформления, описываемых текстом. Использует LLM для анализа и реформатирования кода согласно заданным правилам. По умолчанию контролируется, что логика кода после оформления в точности совпадает с той, что была до изменения.

Сортировка методов

Позволяет упорядочить методы внутри модуля или области по алфавиту. Улучшает структурную организацию кода и облегчает навигацию.

Встатка завершающего комментария

Компонент, добавляющий к завершающим инструкциям процедур и функций (КонецПроцедуры, КонецФункции) комментарии с указанием имени метода (улучшает читаемость кода, особенно при наличии длинных методов).

Установка инструкций препроцессора

Добавляет стандартные инструкции на весь модуль (Сервер, ТолстыйКлиентОбычноеПриложение, ВнешнееСоединение).

Генерация текстов модулей

Компонент для формирования итогового текста модуля на основе его внутренней структуры после всех манипуляций форматирования. Объединяет области, комментарии, методы и другие элементы в оформленный текст модуля.

Анализ модуля

Инструмент для разбора и анализа кода модуля. Позволяет выявлять зависимости между методами, находить используемые переменные и поля, анализировать создаваемые объекты. Обеспечивает глубокое понимание структуры и взаимосвязей в коде. Модуль полезен при разработке инструментария работы с кодом (например, переноса части функционала со всеми связями из одной конфигурации в другую).

Структура репозитория и установка

  • build/ — содержит готовый файл расширения (.cfe).
    Скачайте этот файл и подключите его в свою конфигурацию 1С (начиная с платформы 8.3.14 и выше).
  • src/ — содержит исходники в формате XML (выгрузка 1С).

Если вам достаточно пользоваться готовым функционалом, просто используйте .cfe из папки build.

Архитектура и принцип работы

Основные модули и компоненты «Оформлятора»:

  • ОМ_Парсер_* — обработки для токенизации и разбора модуля в АСД.
    Основаны на проекте bsparser (автор, если не ошибаюсь: tsukanov-as).
    В моём форке добавлена поддержка современных конструкций встроенного языка 1С, таких как Асинх, Ждать и др.

  • ОМ_ОформляторМодулей — основная интерфейсная форма, к которой подключаются остальные обработки. В модуле менеджера находится программный интерфейс для разбора, анализа и формирования структур данных модуля.

  • ОМ_Компонент_* — вспомогательные компоненты, вызываемые из основной формы. Реализуют логику расстановки областей, формирования итогового текста, документирования методов и другие функции.

Совместимость

  • Минимальная версия платформы 1С: 8.3.14.

Как внести вклад (Contributing)

Проект открыт для вкладов сообщества. Будем рады вашим идеям и исправлениям:

  1. Ознакомьтесь с CONTRIBUTING.md.
  2. Создайте Issue в GitHub с предложением или проблемой.
  3. Оформляйте Pull Request с доработками — мы обязательно посмотрим и обсудим.

Если у вас возникли вопросы или предложения, смело пишите в GitHub Issues.

Контакты

Лицензия

Проект распространяется по лицензии MIT. Подробности см. в файле LICENSE.

About

Оформлятор модулей 1С — инструмент для автоматизации работы с исходным кодом 1С как с данными.

Topics

Resources

License

Stars

Watchers

Forks