Оформитель исходного кода 1С

23.09.24

Разработка - Инструментарий разработчика

Все мы хотя бы раз работали с конструктором запросов. Результатом его работы является синтаксически верный запрос, оформленный по некоторому стандарту. Нравится - не нравится, а привыкаешь быстро, и на запрос, написанный руками, уже не хочется смотреть... А почему бы не попробовать сделать то же самое с исходным кодом 1С? Ну я и попробовал...

Почему я его написал, чем не устраивал Alt+Shift+F? А я просто захотел себе такой инструмент, мужик захотел - мужик сделал. Вы можете относиться к этому как к развлечению для ума.

Оформитель или bslpretty.

Оформитель представляет собой набор плагинов для парсера встроенного языка 1С и скрипт для запуска из командной строки bslpretty.os. Проект опубликован на GitHub, имеет открытую лицензию MIT.

В качестве киллер-фишки заявляется интеграция с ГИТ. Он может сравнить рабочий каталог репозитория с последним коммитом и оформить только измененные строки.

 

Что Оформитель умеет

  1. Заменять неправильно написанные ключевые слова на правильные. "если" меняет на "Если"
  2. Расставлять пробелы там где они нужны и удалять там где они не нужны
  3. Расставлять отступы. В том числе менять отступы пробелами на отступы символом табуляции

Грубо говоря, он исправляет код:

Для ц=1 по 100500 Цикл
Если ц >= 100500 Тогда
    Сообщить("100500");	
	КонецЕсли;
КонецЦикла;

на код:

Для ц = 1 По 100500 Цикл
	Если ц >= 100500 Тогда
		Сообщить("100500");
	КонецЕсли;
КонецЦикла;

 

На всякий случай подсвечу изменения с помощью программы WinMerge

Есть весьма спорный функционал выравнивания аргументов:

Код

Стр = новый Структура();
Стр.Вставить("Результат1", п);
Стр.Вставить("Резу", п1);
Стр.Вставить("Рез", п2);

Заменяет на код

Стр = новый Структура();
Стр.Вставить("Результат1", п);
Стр.Вставить("Резу",       п1);
Стр.Вставить("Рез",        п2);

Как воспользоваться оформителем кода

Вам понадобиться

  1. oscript и установленная для него библиотека osparser
  2. Если вы хотите использовать Интерактивный режим Оформителя - утилита diff (устанавливается вместе с git) или программа WinMerge

 

И так:

  1. Склонируйте или скачайте репозиторий bslpretty
  2. Откройте в текстовом редакторе файл src\bslpretty.os и посмотрите на функцию Настройки(). Убедитесь, что там правильные пути до утилиты Diff / WinMerge или отключите интерактивный режим. В остальном, надеюсь, там все понятно.
  3. Запустите командную строку windows и перейдите в каталог с корнем bslpretty. У меня так:
 cd c:\git\bslpretty\

 

Оформитель имеет два режима работы. С каталогом исходного кода или с репозиторием git.

Запустите команду, думаю будет все понятно:

oscript src\bslpretty.os

bslpretty.os git путь_к_репозиторию [commit]
  Оформляет измененные стройки по результату сравнения git diff [commit]
  Оформление применяется только к измененным строкам в измененных файлах

bslpretty.os file путь_к_каталогу_с_файлами
  Оформляет все файлы *.bsl и *.os в каталоге

 

Выполните команду

oscript src\bslpretty.os file test_data

Оформитель оформит файл test_data/МодульДляОформления.bsl, а в интерактивном режиме покажет изменения и спросит ваше мнение "Нужно ли применять исправления к файлу"?

 

Или отредактируйте файл test_data/МодульДляОформления.bsl. Измените буквально пару строк, чтобы git заметил изменения.

Запустите команду

oscript src\bslpretty.os git .

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

Заключение

bslpretty - довольно сырой инструмент, имеет список известных проблем, тем не менее он работает.

Ожидаемый эффект от внедрения:

  • Единообразный код вне зависимости от среды разработки: Текстовый редактор, Конфигуратор, EDT
  • Минимум "мусорных коммитов"

Надеюсь, моя работа стоила вашего внимания и вам было интересно. Я старался.

oscript

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    152729    836    398    

846

Инструментарий разработчика Программист Платформа 1С v8.3 Платные (руб)

OneRPA - платформа роботизации рутинных операций, в основе которой лежит платформа 1С:Предприятие. Данная платформа позволяет использовать современные технологии роботизации, не теряя при этом наработки, которые были созданы в ходе автоматизации. При этом платформа роботизации сохраняет все преимущества платформы 1С: гибкость, кроссплатформенность, мобильный и Web доступ, простоту расширения. Ну и конечно же роботы создаются и сопровождаются простыми специалистами 1С, при этом не обязательно программистами. Self hosted версия

300000 руб.

03.03.2021    14272    12    27    

36

Инструментарий разработчика Программист Платформа 1С v8.3 Платформа 1C v8.2 Платформа 1С v8.1 Конфигурации 1cv8 Платные (руб)

Программист - это человек, непрерывно принимающий решения. Написание кода не является процессом принятия решения - это всего лишь трансляция ваших желаний. Если вас периодически тяготит написание сотен строк кода ради решения задач, то прошу обратить внимание. Данный продукт позволит существенно сократить время на рутинные операции при разработке. За счет библиотечной реализации сокращается объём кода, а его читаемость повышается. К библиотеке прилагается документация API и шаблоны кода для наиболее популярных методов.

4200 руб.

16.04.2021    15193    6    10    

18

Инструментарий разработчика Программист Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    20197    8    8    

43

Инструментарий разработчика Перенос данных 1C Программист Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы. Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение для 1С, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    25061    18    15    

35

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Если вашим пользователям нужно вывести в динамический список разные показатели, которые нельзя напрямую получить из таблиц ссылочных объектов, и вы не хотите изменять структуру справочников или документов - тогда эта подсистема для вас. С помощью нее вы сможете в пользовательском режиме создать свой показатель, который будет рассчитываться по формуле или с помощью запроса. Этот показатель вы сможете вывести в динамический список, как любую другую характеристику объекта. Также можно будет настроить отбор или условное оформление с использованием созданного показателя.

2 стартмани

06.03.2021    15185    9    pila86    17    

30

Инструментарий разработчика Программист Платформа 1С v8.3 Бесплатно (free)

Описание файла DBNames таблицы Params и файлов объектов метаданных таблицы Config.

16.02.2021    18586    zhichkin    81    

96

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    20704    33    huxuxuya    11    

38
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Spurk 42 24.09.24 02:35 Сейчас в теме
Выделяешь написанный код.
Нажимаешь Alt+Shift+F.
В результате получишь выравнивание как нужно.
2. scarl1n 24.09.24 10:57 Сейчас в теме
(1) Ага, а еще он регистр исправит и пробелами обособит операторы.
unknown181538; +1 Ответить
3. artbear 1562 24.09.24 11:25 Сейчас в теме
Еще один форматтер кода 1С в копилку форматтеров. Спасибо автору.

Жаль только, что постепенно эти проекты не развиваются и умирают по разным причинам.
4. stopa85 39 24.09.24 14:15 Сейчас в теме
(3) А вам известны какие-нибудь другие? Поделитесь. Я видел только какую-то обработку на 1С. Ну и говорят, что всякие снегопады могут.
unknown181538; +1 Ответить
Оставьте свое сообщение