Автоформатирование кода

10.01.13

Разработка - Рефакторинг и качество кода

Как часто приходится работать в режиме аврала, когда на оформление кода не хватает времени?
И как лениво порой бывает, возвращаться к уже рабочему коду, что бы отформатировать его и привести в порядок.
Данная обработка позволяет автоматически форматировать текст кода, в соответствии с настройками пользователя.
Это позволит привести ваш код, как уже написанный так и будущий к единому оформлению.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ФорматированиеТекста.epf
.epf 66,91Kb
193
193 Скачать (1 SM) Купить за 1 850 руб.

Что это?

Это внешняя обработка, написанная на управляемых формах (то есть работает только под 8.2).

Как с этим работать?

Работа предполагается в режиме тонкого или толстого клиента. Копируется блок кода (можно кусочком, можно модуль целиком) и помещается в левую часть экрана, нажимается волшебная кнопка и вправой части - появляется отформатированный код.

После чего его можно скопипастить в текст модуля.

А что она может:

  1. Все строчки а-ля Переменная=4; Переменна2=5; будут оформленны в две строки;
  2. Все двойные пробелы "  " будут заменены на один " ";
  3. Все двойные пустые строчки будут заменены на одинарные;
  4. Все что есть в списке "Регулярных выражений" будет приведено к одному регистру;
  5. Будут настроены отступы, в соотвествии с установленными правилами;
  6. Количество пробелов перед и после арифметических действий станет одинаковым, в соответствии с настройками пользователя (+,-,*,/,=);
  7. Можно будет выровнять знаки равенства при  последовательной установке значений (если между ними нет пустых строк);
  8. Можно настроить перед какими выражениями и после каких выражений обязательно нужна пустая строка;
  9. Можно настроить между какими выражениями не должно быть пустой строки;
  10. Система автоматически способна определить необходимость комментария к процедуре или функции и вставить шаблон комментария. Пропишет передаваемые параметры.

А как быть с комментариями и переменными?

Все что есть в комментариях и в переменных останется неизменным!

Что за пользовательские настройки и где их брать?

Система имеет настройку "По умолчанию" Хранит в макетах и можно будет начать работать с обработкой сразу.

Так же можно сохранять настройки как в стандартном хранилище настроек (возможности платформы), так и выгружать и загружать настройк в/из файла с расширением *.xml


См. также

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

Расширяемый форматтер структуры модулей 1С. Умеет автоматически расставлять стандартные области и раскидывать по ним процедуры и функции модуля, оформлять стандартные комментарии к методам с помощью ИИ. Также умеет анализировать модуль - извлекать структуру вызовов, используемые поля и т.д. Реализован в виде расширения (.cfe). Можно использовать как платформу для обработки кода в своих задачах автоматизации разработки.

12.02.2025    6278    407    wonderboy    42    

117

Linux Рефакторинг и качество кода Программист Платформа 1С v8.3 Бесплатно (free)

В третьей статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, обсудим подходы к рефакторингу платформеннозависимого кода

11.02.2025    936    it-expertise    0    

3

Рефакторинг и качество кода Linux Программист Платформа 1С v8.3 Бесплатно (free)

Во второй статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, поговорим об особенностях анализа конфигурации 1С на наличие платформеннозависимого кода.

31.01.2025    1603    it-expertise    1    

7

Рефакторинг и качество кода Обновление 1С Программист Платформа 1С v8.3 Бесплатно (free)

В практике нашей специальной команды по проектам сложных обновлений 1С прошел один из самых объёмных проектов: необходимо было обновить «1С: Бухгалтерия предприятия КОРП 3.0 + БИТ.ФИНАНС». Конфигурация содержала доработки практически по всем типам объектов метаданных. Длительность проекта составила 1 год и 2 месяца и обеспечила полной загрузкой 4 разработчиков на 6 месяцев.

31.01.2025    1140    1c-izh    3    

5

Рефакторинг и качество кода Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

В последнее время термин «чистый код» стал очень популярным. Появились даже курсы по данной тематике. Так что же это такое?

16.09.2024    17424    markbraer    66    

43

Рефакторинг и качество кода Программист Бесплатно (free)

В статье рассматривается отказ от использования процедур и унификация формата ответа функций. Способ описывается на примере развития абстрактной информационной системы, работающей с PDF файлами.

10.09.2024    1389    acces969    4    

6

Рефакторинг и качество кода Бесплатно (free)

Для быстродействия большой базы данных важно не только оптимизировать запросы, но и соблюдать стандарты при разработке подписок на события, обработок для массового изменения данных, в реализации обработчиков обновления, расширений, регламентных заданий и в архитектуре СКД-отчетов. Расскажем о нюансах разработки компонентов большой системы.

28.08.2024    1919    Chernazem    3    

6

Рефакторинг и качество кода Программист Бесплатно (free)

SOLID – принципы проектирования программных структур (модулей). Акроним S.O.L.I.D. образован из первой буквы пяти принципов. Эти принципы делают код более гибким, упрощают разработку. Принято считать, что принципы SOLID применимы только в объектно-ориентированном программировании. Но их можно успешно использовать и в 1С. Расскажем о том, как разобраться в принципах SOLID и начать применять их при работе в 1С.

22.08.2024    12576    alex_sayan    41    

57
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. serega3333 19.12.12 17:26 Сейчас в теме
так автоформатирование как таковое не вкручено? хочется закрывать конфигуратор - открывать предприятие - нажимать кнопку в обработке - она парсит и обрабатывает...а тут копипаст туда сюда получается?
3. Sibars 406 19.12.12 19:22 Сейчас в теме
(1) serega3333,
Пока поддерживается только копипаст. В следующей версии предполагается выгрузка текстов модулей из режима предприятия и/или выбор уже выгруженных в файлы и их форматирование с сохранением в текстовые файлы.
Также предполагается запустить орфографическую проверку на наименование метаданных и переменных в модулях. Естественно с учетом правил именования объектов состоящих из нескольких слов.
2. pumbaE 19.12.12 18:41 Сейчас в теме
Вверху страницы баннер, там можно даже не закрывать конфигуратор.
Конечно не все там есть из перечисленного но можно и добавить.

p.s: в принципе, эту обработку думаю можно портировать для работы прямо из снегопата.
boggonzikov; +1 Ответить
5. Sibars 406 19.12.12 19:33 Сейчас в теме
(2) pumbaE,
Сам пользуюсь СНЕГОПАТОМ. Вещь с правильной пометкой "must have"!
Можно попробовать реализовать функционал и на скриптах, но стоит ли игра свеч, если учесть, что для всех фломастеры на вкус разные и надо учесть возможность настройки форматирования.
...
Если есть желание, могу предложить такой вариант:
Пишется скрипт для СНЕГОПАТА (сам пока не разбирался с написанием), который по хоткею, копирует выделенный фрагмент текста или весь модуль целиком и помещает его в текстовый файл.
Параллельно запущена моя обработка, которая определяет наличие этого файла, обрабатывает его и кладет новый файл с форматированным кодом рядом. Скрипту СНЕГОПАТА останется только получить текст из нового файла и заменить его на старый.
...
Автору такого скрипта с такой логикой или более удачной - в подарок эта обработка.
...
В будущем предполагается развитие данной обработки и наращивание функционала.
В целом это должно вылиться в небольшую конфигурацию, которая будет контролировать корректность написания кода по оформлению, орфографии, повторяемости процедур и функций, наличие циклов в циклах, запросов в циклах и тому подобное.
8. pumbaE 19.12.12 19:49 Сейчас в теме
(5) зачем же так сложно. Если есть обычная форма, то можно отделаться 5 строчками кода. Например для портирования обработки анализа цикломатической сложности кода, я добавил в модуль такие строки:
Процедура МакросАнализЦикломатическойСложностиТекущегоМодуля() Экспорт
	ТекстовоеОкно = Конфигуратор.snegopat.activeTextWindow();
	
	Если ТекстовоеОкно = Неопределено Тогда
		глВывестиСообщение("Не найдено текстовое окно!");
		Возврат;
	КонецЕсли;
	
	ИсходныйКод = ТекстовоеОкно.text;
	ТекстМодуля = ИсходныйКод;
	
	Форма = ПолучитьФорму("Форма");
	ВычислитьСложностьТекстаМодуля();
	Форма.ЭлементыФормы.Панель1.ТекущаяСтраница = Форма.ЭлементыФормы.Панель1.Страницы.СтраницаРезультаты;
	Форма.ОткрытьМодально();
	
КонецПроцедуры
Показать
и у меня теперь прям из конфигуратора работает данная обработка Пример

Так, что если у вас весь разбор делается в модуле и сильно не завязано на управляемые формы, то можно легко и просто добавить вызов данной обработки прям из конфигуратора.

Посмотрите на скрипт spellchecker.js , там тоже есть проверка как word так и libreoffice.
10. Sibars 406 19.12.12 19:55 Сейчас в теме
(8) pumbaE,
Интересно. Спасибо.
Все форматирование происходит в модуле объекта. на формах реализованы только выбор настроек и вывод результата.
Еще бы придумать как настройки легко менять и будет вообще все в ажуре.
В принципе если заодно передать настройки в строке в формате XML можно для основного форматирования вообще обойтись без интерфейса.
А обработку использовать для создания настроек :)
Готовы взяться за сопряжение со СНЕГОПАТОМ?
12. pumbaE 19.12.12 20:07 Сейчас в теме
(10) готов. Пишите на мыло. Мой профиль Сосна Евгений e-mail в скриптах думаю найдете :)
13. Sibars 406 19.12.12 20:10 Сейчас в теме
(12) pumbaE,
Отлично! Завтра Вам напишу.
14. Модератор раздела 20.12.12 11:10 Сейчас в теме
Обработка полезна, но денежек жалко.
Сопряжение со Снегопатом платной разработки?
(12) Жень, неужели будешь работать с платной? или сделаешь интеграцию со Снегопатом, а автор снимет платность? :)
15. Sibars 406 20.12.12 11:30 Сейчас в теме
(14) artbear,
Если обработка не полезна, то ей нет места ни в платном разделе, ни в бесплатном.
...
Посмотрим как это получится объединить со СНЕГОПАТОМ.
...
Возможно эта обработка через некоторое время станет продуктом лайт (то есть демкой, то бишь бесплатной).
А платной станет конфигурация, с большим функционалом.
Вопрос только сколько будет стоить эта конфигурация :)
Поэтому есть смысл купить обработку сейчас, что бы потом не платить больше.
Равно как и есть смысл подождать, когда обработка станет бесплатной.
Решение за вами!
4. pumbaE 19.12.12 19:27 Сейчас в теме
Какой движок будете использовать для проверки орфографии?
совет: не забудьте добавить правила для исключений префиксов и суффиксов при проверке.
6. Sibars 406 19.12.12 19:35 Сейчас в теме
(4) pumbaE,
Для орфографии будем использовать старый добрый Word.
C предложениями по вариантам замены, словарем исключений.
За совет спасибо. Префиксы и суффиксы постараемся учесть.
7. Sibars 406 19.12.12 19:38 Сейчас в теме
Вообще идея такого автоформатирования родилась тогда, когда в отделе разработчики стали высказывать друг другу свои соображения по поводу как правильно надо оформлять код и что чужой код читать невыносимо.
Идея этой обработки заключается в том, что не надо переучиваться под единый стандарт, если привести к общему знаменателю можно набором достаточно нехитрых алгоритмов.
9. w-divin 19.12.12 19:53 Сейчас в теме
прикольненько, но жаба давит...
а по поводу снегопата (юзверем которого также являюсь) там есть подобный механизм: format.js Функционал конечно послабее, но для халявного варианта хватает...
11. Sibars 406 19.12.12 20:00 Сейчас в теме
(9) w-divin,
Жаба она такая :)
А функционал будем наращивать! Планов - громадье)
И, надеюсь, задавим Вашу жабу объемом возможностей!
16. tormozit 7269 20.12.12 11:55 Сейчас в теме
17. _also 490 20.12.12 23:42 Сейчас в теме
мне кажется актуально только со снегопатом, а pumbaE пора Снегопат store открывать ))). Скрипты по 99 центов будут разлетаться только в путь))
Dimon93dimon; w-divin; Sibars; +3 Ответить
18. Sibars 406 09.01.13 18:20 Сейчас в теме
Решил выложить в общий доступ.
Работа по интегрированию в снегопат ведется.
Надеюсь у Евгения хватит терпения общаться с таким невеждой в JS как я и допилить функционал до рабочей версии.)
20. Модератор раздела 10.01.13 12:12 Сейчас в теме
(18) Молодец, спасибо.
Ждем скрипт для снегопата.
Готов помогать в его тестировании и добавлении хотелок
21. Sibars 406 10.01.13 12:16 Сейчас в теме
(20) artbear, Возражений никаких нет, только приветствую).
А то из меня тестировщик не очень получается - то уеду, то подключить библиотеку не могу.
Если Евгений aka pumbaE не возражает, то милости просим)
19. dyak84 09.01.13 18:51 Сейчас в теме
Судя по скрин шотам вещь довольно интересная и нужная (автоматические ошибки бывает проскакивают что есть то есть). Появятся деньги обязательно скачаю. Автору спасибо
22. Модератор раздела 10.01.13 12:27 Сейчас в теме
(22) Вряд ли Женя будет возражать, он меня знает :)
Женя, пиши в Гугл+ или гмейл напрямую.
23. WKBAPKA 215 10.01.13 13:36 Сейчас в теме
а я немного покритикую... даже работая в режиме аврала я код оформляю как следует... единственное, чего я не делаю, так это не документирую, чего иногда не хватает...
а тем кто пишет как попало, вообще головы поотрывал бы... когда читаешь их код, думаешь, что они курили... я не в плане алгоритма, а в плане оформления, что бы удобно было читать... но за работу плюс
24. Sibars 406 10.01.13 13:43 Сейчас в теме
(23) WKBAPKA, Это не критика, а повсеместная действительность )))
Именно из-за этого данная работа и была проделана.
1. Когда видишь такой код - спокойно его форматируешь, и читаешь уже более привычном формате.
2. Когда одну конфу пишут несколько человек, что бы не заставлять и не переучивать людей к единообразному оформлению. перед сдачей прогоняешь через обработку и получаешь единообразный код.
25. WKBAPKA 215 10.01.13 13:47 Сейчас в теме
(24)
если с этой точки зрения, когда пишут несколько человек, согласен, нужная вещь... вот интересно, а форматирует код под один шаблон, или можно под себя настраивать? а то не очень хорошо получается, пишут несколько человек, а код форматируется под одного человека ;)
26. Sibars 406 10.01.13 13:50 Сейчас в теме
(25) WKBAPKA, Можно хранить неограниченное количество настроек.
Мы у себя в отделе за основу приняли стандарты оформления изложенные на диске ИТС + оптимизировали под себя.
Форматироваться код должен не под одного человека, а с точки зрения правил принятых между разработчиками -участниками.
27. pumbaE 10.01.13 14:24 Сейчас в теме
Добавлю от себя, к моему сожалению от говнокода данная обработка не спасет, даже если нормально отформатирует. Эх...
35. AlexO 136 21.01.13 11:32 Сейчас в теме
(27) pumbaE,
к моему сожалению от говнокода данная обработка не спасет, даже если нормально отформатирует.

по-моему, такие обработки еще больше всего напихают в код, чего там и не нужно вовсе было, и безмерно его утяжелят.
36. pumbaE 21.01.13 12:06 Сейчас в теме
(35) AlexO, при должной настройке наоборот помогают исправить некоторые недочеты, которые на первый взгляд и не видны.

alt+shift+f - это хорошо, но как показано на рисунке, после обработки значительно лучше выглядит текст.
Прикрепленные файлы:
37. AlexO 136 21.01.13 14:32 Сейчас в теме
(36) pumbaE,
ну вот сразу - вот это "фНеОтбиратьПодразделение" - это что такое? Фукнция без скобок? :)
38. pumbaE 21.01.13 14:56 Сейчас в теме
(37) AlexO, прочтите еще раз (27) - данная обработка от говнокода не спасет, но вот от "ИНаче" , "ЕСли" и т.д. очень даже помогает. Я очень надеялся, что может быть достаточно такой код отформатировать нормально и станет чуть легче, но (27) .

Еще раз хочу акцентировать внимание, лучше уж отформаированный говнокод, чем неотформатированный.
Brawler; Sibars; +2 Ответить
28. pumbaE 10.01.13 14:27 Сейчас в теме
В обработке ошибка, там остались вызовы процедур для снегопата, чтобы работала и в предприятии необходимо закомментировать процедуры "МакросФорматированиеВыделенногоТекста" , "ФорматированиеТекстаПоНастройке", "МакросФорматированиеВыделенногоТекстаФорма".
29. Sibars 406 10.01.13 14:34 Сейчас в теме
(28) pumbaE, Евгений, ошибки нет, так как я выложил обработку не адаптированную под СНЕГОПАТ.
30. pumbaE 10.01.13 14:41 Сейчас в теме
Прошу прощения, значит меня ввели в заблуждение.
31. Sibars 406 10.01.13 17:16 Сейчас в теме
(30) pumbaE, Это я сам себя ввел в заблуждение. Теперь исправил. Обработку обновил.
32. mzelensky 53 16.01.13 08:02 Сейчас в теме
довольно забавная штука
33. ZhokhovM 764 21.01.13 11:19 Сейчас в теме
Доброго времени суток! Добавьте ещё изменения:

1. 0 (пробел) 0 (кол-во пробелов до и после)
Пример:
Возврат (пробелы) СтруктураДействий; -> Возврат СтруктураДействий;

2.Расшифровка представления
Пример:
// ДанныеПараметры - ТИПДАННЫХ - ОПИСАНИЕ -> // ДанныеПараметры - ТИПДАННЫХ - Данные параметры
39. Sibars 406 21.01.13 16:42 Сейчас в теме
(33) Maxim2012,
От двойных пробелов убирает.
Возврат СтруктураДействий; -> Возврат СтруктураДействий;
..
Описание добавляет, если его нет, если описание есть - то оставляет его нетронутым

// ДанныеПараметры - ТИПДАННЫХ -> // ДанныеПараметры - ТИПДАННЫХ - ОПИСАНИЕ
, но если
// ДанныеПараметры - ТИПДАННЫХ - Параметр вывода ТЗ -> // ДанныеПараметры - ТИПДАННЫХ - Параметр вывода ТЗ
34. AlexO 136 21.01.13 11:30 Сейчас в теме
(0) есть такая функция в 1С - Alt+Shift+F
Все остальное - это придумывание себе работы.
Формуляты-оформляты....
Лучше б код писали грамотней.
И коментарии ставили....
shard; roofless; VovkaPutin; +3 Ответить
40. v.l. 437 22.01.13 18:08 Сейчас в теме
(0) Никак не избавлюсь от двойной пустой строки:
настроено пропускать строку после КонецЕсли/КонецЦикла
и пропускать строку перед КонецПроцедуры/КонецФункции

Оба правила накладываются и получаются некрасивые две пустые строки.
41. Sibars 406 24.01.13 06:16 Сейчас в теме
(40) vladal, Не могу повторить такой же ситуации у себя. Если возможно, пришлите на d.d.kruglov@gmail.com файл настроек и текст для форматирования, в котором есть появляются две пустых строки.
42. Maxis 25.01.13 10:26 Сейчас в теме
Интересная обработка! Но сам стараюсь изначально код оформлять нормально: так его и для себя в процессе работы читать проще)
43. GerHard 5 08.02.13 00:09 Сейчас в теме
Вот что, снегопатофаны... Обработочка полезная, автору плюс.
У меня практически всегда когда что-то пишу рядом открыт и пользовательский режим. Не проблема CTRL-C CTRL-V пару раз жамкнуть. А учитывая возможность настройки под себя - да вообще вполне самостоятельная вещь.
44. Sibars 406 08.02.13 05:42 Сейчас в теме
(43) GerHard спасибо).
По снегопату: Евгений (pumbaE) написал интеграцию к снегопату.
И соответственно, кто хочет - может использовать обработку как самостоятельную, кто со снегопатом - может загрузить ее функционал в него)
45. internetname 08.02.13 13:04 Сейчас в теме
Как-то привык уже сразу все форматировать.
46. Геннадьевич 20 22.03.13 19:17 Сейчас в теме
На мой взгляд - полезно, но не удобно.

Что за СНЕГОПАД? Дайте ссылку посмотреть.
47. pumbaE 22.03.13 19:23 Сейчас в теме
48. Геннадьевич 20 22.03.13 19:54 Сейчас в теме
(47) pumbaE, Спасибо, но вроде писали что эта разработка бесплатна.
49. pumbaE 22.03.13 19:57 Сейчас в теме
(48) Геннадьевич, эта разработка да - бесплатна, а инструмент платный.
50. ponaroshku 16.04.13 10:04 Сейчас в теме
51. dour-dead 272 11.06.13 08:49 Сейчас в теме
52. v.l. 437 01.04.14 19:04 Сейчас в теме
(0) Вот что обнаружил: в форматной строке с разными локалями делается перенос после первой точки с запятой. В результате появляется разрыв строкового параметра и синтаксическая ошибка.
Пример:
НСтр("ru = 'Накладная на перемещение';uk = 'Накладна на переміщення'", КодЯзыкаПечать)
разбивается на несколько строк и производится выравнивание знака равенства по самой длинной строке в блоке, добавляя 139 пробелов:
НСтр("ru = 'Накладная на перемещение';
	uk                                                                                                                                          = 'Накладна на переміщення'", КодЯзыкаПечать)
Я думаю, что в блоке поиска перевода строки по точке с запятой надо смотреть на парность кавычек.
53. break 33 08.05.14 12:03 Сейчас в теме
не хватает выравнивания по запятой
55. v.l. 437 18.09.14 23:44 Сейчас в теме
(53) break, поддерживаю.
Пробовал нарисовать такое, да где-то прокол вышел - они потом все равно переформатируются.

(0) Что еще заметил: обработка режет большие комментарии - закомментированные блоки или текстовые описания и пояснения.
54. dour-dead 272 23.05.14 13:53 Сейчас в теме
Не большой троллинг.
А так автору спасибо.
Прикрепленные файлы:
56. Sibars 406 19.09.14 07:05 Сейчас в теме
Рад, что обработка оказалась полезной. Прошу прощения за долгое молчание - загруз на работе.
Ошибки и недочеты безусловно есть, но как часто бывает, нет времени их устранить, тем более, что после написания обработки стал писать код сразу правильно :))
Если у кого есть желание дописать обработку - welcome! Могу опубликовать обновленную версию у себя, можете выложить ее в своем блоге - ссылку на обновление здесь размещу.
57. shard 282 08.12.22 11:52 Сейчас в теме
Представляю какой бардак должен быть в голове у разраба, чтобы выдавать код со скринов "до"))))
Оставьте свое сообщение