1с форматирование блока кода
Для того что бы программный код было удобно читать и разбираться в нем, следует использовать форматирование кода. Заключается оно установке одного или нескольких отступов размером в 4 пробела(Tab) перед строкой кода в зависимости от ее иерархии в пределах модуля.
Например код внутри условного оператора находится на следующем уровне иерархии от самого условного оператора и должен отстоять от его начала на один Tab. Такие же условия действуют и для операторов внутри цикла, процедуры, функции, попытки и т.д.
Функция ОткрытьФайл(Путь, Файл) Экспорт Файл = Новый XBase; Файл.ОткрытьФайл(Путь); Если Не Файл.Открыта() Тогда Возврат Ложь; КонецЕсли; Файл.Кодировка = КодировкаXBase.OEM; Возврат Истина; КонецФункции
В данном примере Функция находится на первом уровне иерархии кода и для нее не требуется отступов, операторы внутри функции образуют второй уровень иерархии и перед ними ставится один отступ, оператор внутри условия находится на третьем уровне иерархии и перед ним ставится два отступа относительно функции или один относительно условного оператора.
Правильно отформатировать программный код можно не только вручную, а также выделив блок кода и нажав сочетание клавиш Alt + Shift + F (или Меню Текст -> Блок -> Форматировать).
Как отформатировать код в 1с
Есть ли какая-нибудь программа для форматирования уже существующего исходного кода для 1Cv8, например, согласно требованиям 1С?
Кнопочка «Автоформатирование» в редакторе модулей.
Но комментарии она тебе не напишет
а где такая кнопка?
(2) У меня снизу, как и в 7.7
(2) Ctrl+Shift+F если мне память не изменяет
(1) Может имелось в виду «Форматирование»?
Так я пытаюсь с помощью нее отформатировать следующее
Если ЭтоНовый()=Истина Тогда ДатаВвода = ТекущаяДата(); Тип = Перечисления.ВидСтруктурнойЕдиницы.ОбъектРемонта; КонецЕсли;
Что то никаких изменений.
А может этот кусок надо сначала выделить ?
(7) без выделения кнопка неактивна
Кажися Alt+Shift+F
Может кроме самой 1С есть что-то?
(11) так не ручками сидеть править
Может есть что-то, как например в Eclipse для форматирования кода
(12) Тебе же уже дали кнопку. Тебе мало?
(12) Сам напиши.
(14) мало. так она всего пробелы добавляет в начале строки и всё
(15) Не пробелы, а табуляции. А что тебе еще нужно?
(16) это как настроишь
я хотел бы и разбиение строки на новые строки, например (5) и расстановку пробелов у операторов и удаление или добавление нужных enter`ов
Увеличить количество строк до максимума (была про это ветка)) )
один мой товарисч для защиты сишного кода (от своих колле(г/к)) накатал прогу — удаляла все пробелы в коде + строки компоновал по 1000 символов. Обратно можно развернуть но гемор. А типа (17) на VS 10 минут, на Delphi 5.
(18) если я не ошибаюсь есть утилита «кирпичный завод», которая делает тоже самое с кодом в 1С.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой
Оформление кода в модуле
В системе 1С, при работе с модулем используется единое оформление. Данное оформление модуля можно изменить.
Стандартное оформление:
Цвета:
Красным цветом выделяются операторы и ключевые слова.
Зеленым оформляются комментарии.
А синим оформляются идентификаторы.
Отступ у вложенных блоков, к примеру у операторах цикла имеют отступ 4 символа.
Изменение оформления:
Данное оформление можно изменить, к примеру если у вам маленький экран. Для этого необходимо зайти в меню «Сервис > Параметры». В открывшемся окне «Параметры», откроем закладку Модули, а в ней Редактирование.
В данной закладке можно:
-
- Настроить выделение синтаксических конструкций, для этого есть список Выделение цветом синтаксических конструкций .
- Запретить выделение цветом
- включить Автозамену , об этом расскажу позже. В общем данная опция позволяет автоматически заменять вводимый текст, на текст из шаблонов.
- включить автоматическую замену в комментариях.
- Заменять табуляцию при вводе , включая данную опцию табуляция будет заменятся на пробелы.
- Ширина табуляции позволяет указать отступ в конструкции встроенного языка.
- Автоотступ — позволяет обрабатывать автоотступ при переноси строки. По умолчанию обрабатывается с учетом синтаксических конструкций.
- И последние, это возможность выбора шрифта .
Лично я, не изменяю ничего кроме Автозамена. Еще я уменьшаю Ширина табуляции, на 2 символа, но только для нетбука.
Форматирование кода
В 1С можно автоматически форматировать текст кода, т.е. расставлять отступы. У меня на картинке изображен кусок кода который оформлен не верно. Что бы привести в порядок код, выделим его и нажмем на кнопку 1.
Такого рода конструкции можно писать сразу нормально, т.к. при переносе система сама ставит отступы. Но бывает когда код занимает много места и из него удаляется цикл, что влечет за собой смещение операторов внутри цикла.
Так же в 1С, можно смещать выделенные строки 1 знак табуляции влево и вправо. Для этого есть кнопка 2 и 3, которые изображены на рисунке.
Автоформатирование кода
Как часто приходится работать в режиме аврала, когда на оформление кода не хватает времени?
И как лениво порой бывает, возвращаться к уже рабочему коду, что бы отформатировать его и привести в порядок.
Данная обработка позволяет автоматически форматировать текст кода, в соответствии с настройками пользователя.
Это позволит привести ваш код, как уже написанный так и будущий к единому оформлению.Скачать файлы
.epf 66,91Kb
Что это?
Это внешняя обработка, написанная на управляемых формах (то есть работает только под 8.2).
Как с этим работать?
Работа предполагается в режиме тонкого или толстого клиента. Копируется блок кода (можно кусочком, можно модуль целиком) и помещается в левую часть экрана, нажимается волшебная кнопка и вправой части — появляется отформатированный код.
После чего его можно скопипастить в текст модуля.
А что она может:
- Все строчки а-ля Переменная=4; Переменна2=5; будут оформленны в две строки;
- Все двойные пробелы » » будут заменены на один » «;
- Все двойные пустые строчки будут заменены на одинарные;
- Все что есть в списке «Регулярных выражений» будет приведено к одному регистру;
- Будут настроены отступы, в соотвествии с установленными правилами;
- Количество пробелов перед и после арифметических действий станет одинаковым, в соответствии с настройками пользователя (+,-,*,/,=);
- Можно будет выровнять знаки равенства при последовательной установке значений (если между ними нет пустых строк);
- Можно настроить перед какими выражениями и после каких выражений обязательно нужна пустая строка;
- Можно настроить между какими выражениями не должно быть пустой строки;
- Система автоматически способна определить необходимость комментария к процедуре или функции и вставить шаблон комментария. Пропишет передаваемые параметры.
А как быть с комментариями и переменными?
Все что есть в комментариях и в переменных останется неизменным!
Что за пользовательские настройки и где их брать?
Система имеет настройку «По умолчанию» Хранит в макетах и можно будет начать работать с обработкой сразу.
Так же можно сохранять настройки как в стандартном хранилище настроек (возможности платформы), так и выгружать и загружать настройк в/из файла с расширением *.xml
См. также
Архитектурное ревью. Процесс разработки
Рассмотрим применение архитектурной проверки задач в процессе разработки.
30.10.2023 2688 ivanov660 7
Чистый код. Мой взгляд на жизнь в макаронных джунглях. Чек-лист
Чек-лист для простого и быстрого проведения рефакторинга кода.
1 стартмани
06.10.2023 1230 5 Lemmonbri 7
14 5 7 1230
Реструктуризация — бесконечная история
При разработке программ требуемый функционал ставят на первое место, но есть еще и архитектура программы. На горизонте 5-10 лет она становится важнее функционала, который должен работать при масштабировании и росте данных. Реструктуризация 5 терабайтной базы 1С 8.2 в формат 1С 8.3, складывает весь пазл архитектурных просчетов, которые сделали ради функционала. Как это исправить? — для разработки правильной архитектуры, нужно всего лишь сместить фокус с функционала и подумать о «вечном».
29.09.2023 1381 1CUnlimited 15
21 15 1381
Чистый код. Мой взгляд на жизнь в макаронных джунглях. Часть 2
Коротко о том, как я перестал быть создателем макаронного кода и непроходимых джунглей методов и модулей. Расскажу о том, что реально применяю на практике с примерами при разработке (а в основном доработке) в типовых конфигурациях 1С. Комментарии очень приветствуются.
27.09.2023 5629 Lemmonbri 136
32 136 5629
Чистый код. Мой взгляд на жизнь в макаронных джунглях. Часть 1
Коротко о том, как я перестал быть создателем макаронного кода и непроходимых джунглей методов и модулей. Расскажу о том, что реально применяю на практике с примерами при разработке (а в основном доработке) в типовых конфигурациях 1С. Комментарии очень приветствуются.
19.09.2023 3356 Lemmonbri 16
28 16 3356
5 подходов при доработке конфигурации 1С, чтобы в будущем не было мучительно больно её обновлять
Нашей компании часто приходится сталкиваться с обновлением конфигураций разной степени переписанности. Какие-то из них обновляются легко, какие-то — не очень. Расскажем о некоторых принципах модификации программы, которые помогут сделать последующий процесс обновления легче. Или тяжелее, если стараться их не соблюдать.
10.08.2023 8386 0 1c-izhtc 36
21 0 36 8386
Задача на ошибки и неоптимальности при проведении приходной накладной
Задачу эту дают на собеседованиях, видимо, те франчи, которые не в состоянии оценить человека по резюме и в ходе беседы. По идее задачи, подобные этой, должны давать начинающим студентам. Но дают всем подряд. Итак: мои 5 копеек. Критика приветствуется.
11.07.2023 1816 magic1s 31
10 31 1816
Тормозит на ровном месте, или на чем может споткнуться PostgreSQL
Прилетела интересная задача с примером, когда одно и то же действие выполняется на MS SQL за 1 минуту и около часа на Postgre SQL 14. Вот и решил поделиться занимательным опытом расследования причин вышеупомянутой проблемы. Ну и посмотреть вскользь на модуль ERP «1С:Хлебобулочное и кондитерское производство».
30.06.2023 2617 zeltyr 14
13 14 2617
Посмотреть ещё
Комментарии- Дата
- Дата
- Рейтинг всех уровней
- Рейтинг 1-го уровня
- Древо развёрнутое
- Древо свернутое
Свернуть все
1. serega3333 19.12.12 17:26 Сейчас в теметак автоформатирование как таковое не вкручено? хочется закрывать конфигуратор — открывать предприятие — нажимать кнопку в обработке — она парсит и обрабатывает. а тут копипаст туда сюда получается?
3. Sibars 340 19.12.12 19:22 Сейчас в теме
(1) serega3333,
Пока поддерживается только копипаст. В следующей версии предполагается выгрузка текстов модулей из режима предприятия и/или выбор уже выгруженных в файлы и их форматирование с сохранением в текстовые файлы.
Также предполагается запустить орфографическую проверку на наименование метаданных и переменных в модулях. Естественно с учетом правил именования объектов состоящих из нескольких слов.2. pumbaE 19.12.12 18:41 Сейчас в теме
Вверху страницы баннер, там можно даже не закрывать конфигуратор.
Конечно не все там есть из перечисленного но можно и добавить.p.s: в принципе, эту обработку думаю можно портировать для работы прямо из снегопата.
boggonzikov; + 1 – Ответить
5. Sibars 340 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 340 19.12.12 19:55 Сейчас в теме
(8) pumbaE,
Интересно. Спасибо.
Все форматирование происходит в модуле объекта. на формах реализованы только выбор настроек и вывод результата.
Еще бы придумать как настройки легко менять и будет вообще все в ажуре.
В принципе если заодно передать настройки в строке в формате XML можно для основного форматирования вообще обойтись без интерфейса.
А обработку использовать для создания настроек 🙂
Готовы взяться за сопряжение со СНЕГОПАТОМ?




