Как отформатировать код в 1с
Перейти к содержимому

Как отформатировать код в 1с

  • автор:

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, которые изображены на рисунке.

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

    • Анонс.png
    • Скрин1.png
    • Скрин2.png
    • скрин3.png
    • Скрин4.png

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

    Скачать файлы

    .epf 66,91Kb

    Что это?

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

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

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

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

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

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

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

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

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

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

    Так же можно сохранять настройки как в стандартном хранилище настроек (возможности платформы), так и выгружать и загружать настройк в/из файла с расширением *.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 можно для основного форматирования вообще обойтись без интерфейса.
    А обработку использовать для создания настроек 🙂
    Готовы взяться за сопряжение со СНЕГОПАТОМ?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *