Форматирование (выравнивание) кода 1С 8. Навигация по тексту модуля.
1. Выравнивает выделенный текст по знакам "="
2. Выравнивает выделенный текст по инструкции " КАК " (в тексте запроса).
3. Поиск (фильтр при наборе) по тексту модуля.
Скачать файл
ВНИМАНИЕ:
Файлы из Базы знаний - это исходный код разработки.
Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы.
Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных.
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Программа висит в памяти и по нажатию комбинации клавиш ALT-F12 вы равнивает выделенный блок текста.
Не происходит выравнивания операторов, аналогичного типовому форматированию, т.е. обработку нужно использовать только в дополнении к основному форматированию.
Для работы необходим установленный .Net FrameWork 2.0 или выше.
Для работы необходимо зарегистрировать svcsvc.dll (Набрать в командной строке "regsvr32 svcsvc.dll") (svcsvc.dll прилагается).
В разработке:
1. Быстрый поиск объектов в дереве метаданных.
Принимаются заявки на разработку нового функционала !
P.S. Просьба по возможности не применять вне окна кода 1С. Возможны непредвиденные последствия .
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.
Решение в Реестре отечественного ПО
Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.
Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.
Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.
Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.
Знак "равно" в первой строке блока размещает на один символ дальше, чем в остальных. А так - плюс, мне пригодится!
Все, догнал... Если перед первой строкой есть табуляция, то нужно выделять прям с самого начала строки вместе с ней - тогда нормально.
Здорово. Еще бы и "структуру" вырвнивала бы:
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата",_______Дата);
ПараметрыЗаполнения.Вставить("Деталь",_____Деталь);
ПараметрыЗаполнения.Вставить("Количество",_Количество);
ПараметрыЗаполнения.Вставить("Автор",______глТекущийПользователь);
(9) Из 4-х попыток выравнивания кода запроса - 4 раза вылетела по ошибке, трижды сообщила, что "Не удалось создать компонент ActiveX", один - "Программа выполнила недопустиую операцию..."
(9) Из 4-х попыток выравнивания кода запроса - 4 раза вылетела по ошибке, трижды сообщила, что "Не удалось создать компонент ActiveX", один - "Программа выполнила недопустиую операцию..."
Не удалось создать компонент ActiveX - в описании сказано: "Зарегистрировать svcsvc.dll"
(0) Ты знаешь, зарегил я библиотеку, тока видно это действительно пока очень уж бета... При форматировании блока с равенствами из 4 попыток, отформатировала только один раз нормально и то со сдвигом первой строки на лишний пробел. В других случаях, прога делала вообще непонятно что: то удаляла блок вообще, то вытягивала его в одну строку с удалением знаков равенства. Если не трудно, положи первую версию вторым файлом - она как-то постабильнее будет.
Ждем более стабильную версию.
А идея очень нужная, полезная и т-д....
Вот бы еще автор подключил бы туда работу с регулярными выражениями - поиск, замену...
И пополняемый список правил, на основе этих же самых регулярных выражений,
тогда сама разработка утилиты была бы отдельно, а правила - отдельно,
и было бы удобней в том плане что стабильную версию самой обработки мог бы автор делать, сосредоточившись только на этом,
а правила выравнивания - все совместно и лучшие (или каждому кажущиеся полезные) включать к себе в файл настроек.
И с регулярными выражениями, можно еще много всяких фичь добавлять.
(0) Ты знаешь, зарегил я библиотеку, тока видно это действительно пока очень уж бета... При форматировании блока с равенствами из 4 попыток, отформатировала только один раз нормально и то со сдвигом первой строки на лишний пробел. В других случаях, прога делала вообще непонятно что: то удаляла блок вообще, то вытягивала его в одну строку с удалением знаков равенства. Если не трудно, положи первую версию вторым файлом - она как-то постабильнее будет.
Можт быть проблема в паузе между сендкеями на медленных машинах. Сей прикручу настройку пауз - может быть поможет.
Вот здесь Автор использует регулярные выражения для выделения лексем языка.
Конечная цель у него отличная от твоей, но принцип выделения лексем - одинаков.
например ты собираешь все лексемы содержащие Переменная = Значение;
Выравнивать по Началу первой лексемы, знака "=", Значение.
Для Т по З Цикл
Блаблабла
КонецЦикла
Тоже лексема - выравнивать
alex_4x пишет:
Вот здесь Автор использует регулярные выражения для выделения лексем языка. Конечная цель у него отличная от твоей, но принцип выделения лексем - одинаков.
например ты собираешь все лексемы содержащие Переменная = Значение; Выравнивать по Началу первой лексемы, знака "=", Значение.
Для Т по З Цикл Блаблабла КонецЦикла Тоже лексема - выравнивать
Опять ответ не на тот вопрос, который я задавал.
Я прошу не примеры использования регулярных выражения, а возможные примеры использования моей обработки для облегчения жизни программистов, т.е. прошу конкретизировать пожелания.
Да, странное форматирование :(
Взял одну процедуру, весь ее текст прижал к левому краю, далее Альт+Ф12 и Форматировать блок.
Результат повеселил :( -
1. у комментария // появился/вставился лишний пробел / / :(
2. текст внутри строк выровнялся по знакам равно, т.е все что справа от знака равно, на одной колонке, но левая-то осталась как есть, прижатой влево :(
ИМХО в описании нужно специальным образом указать, что не происходит выравнивания операторов, аналогичного типовому форматированию, т.е. обработку нужно использовать только в дополнении к основному форматирования или для небольших блоков кода.
У нас есть аналогичный проект для разработчиков для AutoHotkey - список процедур/функций через svcsvc, авторские комменты, форматирование, удобное переназначение хоткеев под привычный набор хоткеев и т.п.
Основная проблема - неудобство получения выделенного текста, получаем только через передачу спец.символов в окно 1С для работы через буфер обмена.
http://www.1cpp.ru/forum/YaBB.pl?num=1227553473/0 На данный момент реализовано:
- Вызов списка процедур с фильтрацией наименований методов при наборе текста
- форматирование модуля при помощи code_beautifier.pl
- Автоматическая печать символа "|" после перевода строки, при необходимости - Enter.
- Автоматическая печать символов комментария "//" после перевода строки по Shift+Enter, если текущая.строка также является комментарием.
- удаление строки Ctrl+y
- Закрытие окна сообщение Ctrl+z (не всем нравится)
- символ '<' по Ctrl-,
- символ '>' по Ctrl-.
- символ '|' по Ctrl-\
- переходы по процедурам в стиле OpenConf?
переход в процедуру (как в OpenConf? - ctrl+enter)
возврат на предыдущую позицию (как в OpenConf? - alt+{left})
Вопрос - как смог получить только выделенный текст в окне 1С? Используешь посылку символов для работы через буфер обмена или другим способом?
Поделишься? очень нужно!
А нельзя ли реализовать дополнительное форматирование, где вместо пробелов используется табуляция, и только концовка перед знаком равно (если нужно) выравнивается пробелами?
Так ведь это все пока на коленке собрано, с торчащими во все стороны кусками проводов, и падает при любом чихе.
И работает пока только на 8.2.11.236. Вобщем до деления еще не так близко.