Пользовательское определение языка 1С для Notepad++ и пример использования списка функций для навигации под свои нужды

07.01.21

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

Позволяет редактировать bsl-модули (или просто текст из буфера обмена, как на скриншоте) с традиционной для 1С подсветкой синтаксиса. Рисует список функций слева в 3-х вариантах: 1. Просто список функций 2. Список функций с группировкой по областям 3. Список вызовов 4. Язык запросов

Скачать файл

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

Наименование По подписке [?] Купить один файл
Архив 3-х файлов для Notepad++
.zip 7,15Kb ver:1
75
75 Скачать (1 SM) Купить за 1 850 руб.
Файлы в папку functionList для версии 7.9.1 Notepad++
.zip 7,25Kb
23
23 Скачать (1 SM) Купить за 1 850 руб.

В Notepad++ есть удобный список функций, в файле functionList.xml описываются правила его построения для всяких разных языков, этот файл у меня лежит в C:\Program Files\Notepad++. Но его размещение зависит от настроек при инсталляции - попробуйте его поменять (например - запороть), чтобы понять - используется он или не он. Во вложении фрагменты этого файла, отвечающие за язык 1С (включая язык запросов). Список функций привязан к языку. Поэтому для разных методов постоения списка функций я задал разные языки 1С (на первом скриншоте). Вызывается список функций (при открытом файле с исходным кодом и выбранным для него одним из 1С-языков) так:

Рисует список функций слева в 3-х вариантах:

  1. Просто список функций. Для разнообразия представления добавил туда &НаКлиенте Процедура к заголовку.
  2. Список функций с группировкой по областям.
  3. Список вызовов. Собственно из-за чего вся заморочка со списком в Notepad++ -- чтобы можно было посмотреть к каким внешним модулям обращается данный модуль. Для этого и создан список вызовов. Отличить внешние от внутренних на уровне парсинга текста я не сумел. Поэтому внутренние тоже присутствуют. Однако если отсортировать список функций по алфавиту - то в куче мусора жемчужины вполне просматриваются.
  4. Список для языка запросов. Помогает ориентироваться в очень длинных запросах по всяким левым признакам (напр. внешнему виду ГДЕ) - хорош когда не хватает навигация стандартного конструктора запроса с его "Запрос 37"

Я часто использую Notepad++ напр. для быстрого сравнения двух похожих кусков кода:

Содержание архива:
1. Файл 1C-language-npp.v1.xml - готов к использованию. См. скриншоты 1 и 2 где этот файл указывать в Notepad++ (Я для себя загружал 3 раза для возможности построения 3-х разных списков функций)
2. Файл 1C-Query-npp.v1.xml -- готов к использованию. То же самое для языка запросов 1С
3. Файл functionList.v1.xml -- НЕ ГОТОВ К ИСПОЛЬЗОВАНИЮ. Это набор 2-х фрагментов файла functionList.xml, которые надо вставить в используемый Notepad++ functionList.xml

UPDATE 2019-08-22

В последнее время чаще всего пользуюсь Notepad++ для навигации по длинным запросам:

ПОМЕСТИТЬ использовать список функций для навигации по язык запросов

Update 2021-01-07
В Notepad++ версии 7.9.1 поменялись правила работы с functionList - zip-архив из 5 файлов из этой папки приаттачены к моему комменту от сегодня. Инсталляция больше не требует правки файлов - можно просто копировать (если уже нет своих парсеров языков, иначе - править файл overrideMap.xml, но это вы тогда и сами должны уже уметь)

Notepad++ npp подсветка синтаксиса редактор модуля список функций вызовов модулей языка запросов

См. также

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

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

12000 руб.

02.09.2020    169238    937    403    

905

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    12570    99    42    

101

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

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    26516    90    48    

134

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    16816    41    15    

75

SALE! %

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

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    190534    1150    0    

918

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

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    11387    40    27    

66

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    765    2    0    

4

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

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    103920    244    100    

306
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dabu-dabu 307 11.09.18 17:01 Сейчас в теме
Не удается импортировать functionList.v1.xml. Пишет что failed и все. Версия notepad последняя
2. albert.goncharov 88 11.09.18 23:09 Сейчас в теме
(1) Файл functionList.v1.xml -- НЕ ГОТОВ К ИСПОЛЬЗОВАНИЮ. Это набор 2-х фрагментов файла functionList.xml, которые надо вставить в используемый Notepad++ functionList.xml
Внёс в тело статьи описание файлов. Извините!
3. JohnyDeath 302 12.09.18 08:08 Сейчас в теме
Visual Studio Code приятнее и навороченней.
Попробуйте.
https://code.visualstudio.com
+ расширение для bsl (+os): https://marketplace.visualstudio.com/items?itemName=xDrivenDevelopment.language-1c-bsl
aleksey2; Восьмой; YanTsys; Ilya_138; igor.ofitserov; PowerBoy; zeegin; for_sale; JohnConnor; Belomor; +10 Ответить
4. 7OH 70 12.09.18 09:32 Сейчас в теме
(3) вижуалы ставить для просмотра кода ?
7. JohnyDeath 302 12.09.18 13:05 Сейчас в теме
(4) это не полноценная студия, а редактор с плагинами.
Попробуй.
5. albert.goncharov 88 12.09.18 12:35 Сейчас в теме
(3) Джонни, спасибо! Когда-нибудь обязательно доберусь до! Инструмент серьёзный, но пока не стоит :)
Только битая ссылка попалась https://marketplace.visualstudio.com/items?itemName=xDrivenDevelopment.language-1c-.
А так я часто в Notepad++ копирую напр. фрагменты кода с этого сайта, или сравнение рядом лежащих похожих модулей делаю - очень быстро получается и наглядно.
Прикрепленные файлы:
8. JohnyDeath 302 12.09.18 13:10 Сейчас в теме
(5) окончание ссылки у тебя съелось.
А вообще есть куча плагинов, в том числе и для сравнения. Например: https://marketplace.visualstudio.com/items?itemName=ryu1kn.partial-diff

А если работаешь с репозиторием git, то вообще сказка и удобство. В двух словах и не описать
albert.goncharov; +1 Ответить
12. monkbest 114 13.09.18 07:11 Сейчас в теме
(5) ммм, чего то не хватает


поиск тоже 1С не нашел в маркете
Прикрепленные файлы:
13. monkbest 114 13.09.18 07:16 Сейчас в теме
(12) сам себе отвечу :)


поиск не выдал по запросу "1С" или "1C" (рус анг), а глазками нашел

https://marketplace.visualstudio.com/items?itemName=xDrivenDevelopment.language-1c-bsl
6. albert.goncharov 88 12.09.18 12:39 Сейчас в теме
(3) Джони, спасибо! Обязательно когда-нибудь попробую! Серьёзный инструмент, но пока не стоит.
Я часто использую Notepad++ напр. для сравнения двух похожих кусков кода...
Прикрепленные файлы:
9. AntonSm 30 12.09.18 13:18 Сейчас в теме
(6) А как вы это делаете с помощью notepad++?
Подскажите, пожалуйста.
Я сходу там функций сравнения не нашел.
suepifanov; +1 Ответить
10. albert.goncharov 88 12.09.18 13:35 Сейчас в теме
(9) Антон, посмотрите https://github.com/jsleroy/compare-plugin
Это плагин. Но к нему ещё нужен менеджер этих самых плагинов. Попробуйте сами найти, если не получится - пишите!
11. пользователь 12.09.18 13:36
Сообщение было скрыто модератором.
...
14. JohnConnor 57 28.09.18 05:39 Сейчас в теме
(3) использую Sublime Text 3, Visual Studio Code тоже очень хорош.
15. SerVer1C 839 21.08.19 15:37 Сейчас в теме
Если в коде 1с будет слово "ПрОцЕдУрА", оно подсветится?
16. albert.goncharov 88 22.08.19 00:27 Сейчас в теме
18. SerVer1C 839 22.08.19 07:51 Сейчас в теме
(16) Вы в этом точно уверены? Для чего тогда указываете, например, ключевое слово "из" три раза в описании подсветки: "ИЗ", "Из", "из" - что видно из вашего скриншота.
19. albert.goncharov 88 23.08.19 21:27 Сейчас в теме
(18) Упс. Пардон, не о том подумал! Действительно не подсвечивает. Где-то не хватает галочки в настройках языка case-insensitive... Либо её нет либо я её не нашёл...
Я имел в виду, что в дереве нарисуется:
21. SerVer1C 839 25.08.19 16:13 Сейчас в теме
(19) В том то и дело, что CS/CI для кириллицы в notepad++ не поддерживается, поэтому полноценную подсветку синтаксиса реализовать не получится. А указывать несколько вариантов для каждых ключевых слов - это как-то не true-разработка, да и работать это будет не во всех случаях.
23. albert.goncharov 88 26.08.19 06:24 Сейчас в теме
(21) Я так полагаю, что следующий шаг развития этой поделки - это форк Notepad++ с поддержкой CI для кириллицы
;-)
Но так не волнуйтесь за чистоту кода - это даже хорошо, если не канонически написанное объявление процедуры будет обесцвечено. Надо следить за регистром своего кода!
Мне не пришлось пока на такое натыкаться. Обычно если правлю чужой код - то высоту букв в слове процедура правлю на автомате...
17. albert.goncharov 88 22.08.19 01:47 Сейчас в теме
В последнее время часто пользуюсь вот такой фишкой для языка 1C:Query
Прикрепленные файлы:
20. salus 28 25.08.19 08:09 Сейчас в теме
Вроде то, что надо. Но почему в Fuction List не отображаются мои функции?
Подсветка работает. Заменил functionList. Кто подскажет?
22. albert.goncharov 88 26.08.19 06:18 Сейчас в теме
(20) functionList.xml надо ещё найти
(у меня он в C:\Users\Albert\AppData\Roaming\Notepad++)
, и убедиться, что нашли тот, которым Notepad++ пользуется. Напр. запороть его и убедиться, что список функций у любого языка перестал работать. Вот тогда его можно ОТРЕДАКТИРОВАТЬ, ВСТАВИВ в него фрагменты из functionList.xml в аттаче к статье.
2. Есть тонкость с именами: если вы добавляете язык под именем "1C functions"

- то в functionList.xml надо писать
<association id=    "e1c_functions"       userDefinedLangName="1C functions"   />

и в куске текста про парсер писать
			<parser
				displayName="1C functions"
				id         ="e1c_functions"

На этой тонкости с именами и построен весь [возможный при дальнейшей модификации] цимус: вообще говоря в дереве можно получать хоть весь текст модуля построчно, а потом весьма удобно фильтровать его путём заполнения поля фильтра над списком функций. Нет ограничения на количество "языков", и можно скопировать ещё один под каждый созданный парсер в functionList.xml
24. salus 28 26.08.19 13:08 Сейчас в теме
(22) Спасибо. Настроил.. Кажется то что нужно для хранение фрагмента кода
albert.goncharov; +1 Ответить
25. albert.goncharov 88 07.01.21 12:45 Сейчас в теме
Для Notepad++ 7.9.1 перестал работать простмотр Function List из-за нового подхода с вынесением языковых парсеров в отдельные xml-файлы. Что конечно удобнее, но требует доработки напильником унаследованного кода. Доработал.
В аттаче содержание папки functionList (у меня C:\Users\Albert\AppData\Roaming\Notepad++\functionList, у вас - пробуйте что это рабочая папка, а не левая -- напр. сначала всё оттуда сотрите, перезапустите Notepad++ и убедитесь, что View/Function List ни для одного языка не работает)
Прикрепленные файлы:
functionList_folder.7.9.1.zip
26. albert.goncharov 88 07.09.21 03:24 Сейчас в теме
К сожалению, на версиях Notepad++ начиная с 8.1 кириллические ключевые слова не поддерживаются. Последняя работающая версия 7.9.5
Если кто-то научился делать подсветку кириллицы на 8.1.х версиях -- киньте коммент пожалуйста!
30. kozusenok 54 29.09.21 09:40 Сейчас в теме
(26)
ях Notepad++ начиная с 8.1 кириллические ключевые слова не поддерживаются. Последняя работающая версия 7.9.5
Если кто-то научился делать подсветку

Подсветку ключевых слов на кириллице?
albert.goncharov; +1 Ответить
31. kozusenok 54 29.09.21 09:42 Сейчас в теме
(26) У меня подсвечивает на 8.1.5
Прикрепленные файлы:
albert.goncharov; +1 Ответить
34. albert.goncharov 88 17.10.21 06:48 Сейчас в теме
(31) Спасибо за инфу! Возможно всё дело в битности... Проверю...
27. kozusenok 54 29.09.21 09:17 Сейчас в теме

При задании области на английском языке неправильно парсится конец области https://ibb.co/W5p5DqG
29. kozusenok 54 29.09.21 09:34 Сейчас в теме
(27) и на русском оказывается тоже. Как оказалось это работает для области с любым наименованием, но только самой первой по тексту модуля https://ibb.co/GTPMCs9
33. albert.goncharov 88 17.10.21 06:46 Сейчас в теме
(29)
Есть принципиальная невозможность правильного парсинга вложенных областей. Насколько помню -- все вложенные области должны идти ПОСЛЕ процедур и функций корневой области. Если какая-то функция находится между директивами #КонецОбласти #КонецОбласти -- то парсер не может её правильно отнести. Я посчитал это хорошим поводом для упорядочивания текста программы ;-) Не исключаю что вы наблюдали проявления этого глюка.
35. kozusenok 54 18.10.21 09:27 Сейчас в теме
(33) Тут ошибка какая-то плавающая, даже не понятно в каком случае она возникает. Вроде как не парсится самая последняя область в списке, но при этом процедуры и функции описанные до неё тоже не парсятся. Скрин: https://ibb.co/ryrsQnc
albert.goncharov; +1 Ответить
36. albert.goncharov 88 18.10.21 16:25 Сейчас в теме
(35)
Парсер правильно распознает области только если все функции вне областей размещать строго сверху -- тогда [хоть и некрасиво, снизу, но] они видны правильно.

http://albert.ru/images/npp-1c-regions.png
И да, область внутри функции всё портит тоже.
37. kozusenok 54 19.10.21 12:02 Сейчас в теме
32. kozusenok 54 30.09.21 10:44 Сейчас в теме
(27) Уже данный глюк не наблюдается.
albert.goncharov; +1 Ответить
28. kozusenok 54 29.09.21 09:19 Сейчас в теме
И кстати версия Notepad++ 8.1.5 и русские функции светятся
albert.goncharov; +1 Ответить
38. adapter 418 11.01.22 19:41 Сейчас в теме
У меня NPP 8.1.4 - файлы подсветки не работают

скачал PUBID_901505-functionList_folder.7.9.1.
импорт пользовательского языке не сработал.
Помещение файлов в папку functionList ничего не дает

upd. на 7.9.1 проверил - тоже не работает. Ни списка функций, ни подсветки не появилось
40. albert.goncharov 88 13.01.22 19:37 Сейчас в теме
По результатам настройки Notepad++ у (38) ещё раз о двух движениях для версий Notepad++ 7.9.X:
1. Файлы вида 1c-XXX-npp.xml (4 шт.) должны лежать в папке
C:\Users\<username>\AppData\Roaming\Notepad++\userDefineLangs\­
2. Файлы вида e1c-XXX.xml (тоже 4 шт.) должны лежать в папке
C:\Program Files\Notepad++\functionList\
Возможно есть и другие варианты размещения файлов, но этот точно работает
39. albert.goncharov 88 12.01.22 08:27 Сейчас в теме
(38) у меня работает на 7.9.5, так что на 7.9.1 должно сработать. Лучше свяжитесь со мной и проверим что вы не так делаете.
Выше были работающие скрины с версией 8.1.5, но у меня не получилось. До сих пор для меня загадка от чего подсветка зависит.
41. adapter 418 15.01.22 15:03 Сейчас в теме
Да, заработало, спасибо! Я скачал только "Файлы в папку functionList для версии 7.9.1 Notepad++" (подумал что этого достаточно для новой версии npp). В нем 5 файлов, и этого не хватило:

e1c_calls.xml
e1c_functions.xml
e1c_query.xml
e1c_regions.xml
overrideMap.xml

Оказалось что надо качать оба архива (2 sm).

Теперь у меня в папке
C:\Users\UserName\AppData\Roaming\Notepad++\functionList
добавлено 5 файлов и в папке

C:\Users\UserName\AppData\Roaming\Notepad++\userDefineLangs
добавлено 3 файла

1c-calls-npp.xml
1c-functions-npp.xml
1c-regions-npp.xml

Так работает. Надо обновить описание или содержимое архивов и инструкцию. Исторические update\добавлено заменить на актуальное состояние публикации
42. onetone 19.10.22 16:34 Сейчас в теме
Как сие чудо установить на 8.4.6?
Можно внятную инструкцию? А то, то копировать, то загрузить, то отредактировать...
7OH; albert.goncharov; +2 Ответить
43. albert.goncharov 88 20.10.22 16:33 Сейчас в теме
(42) Попробую поставить. Отпишусь получилось или нет
44. onetone 24.10.22 12:51 Сейчас в теме
(43) Есть новости? Получилось накатить?
45. albert.goncharov 88 25.10.22 18:22 Сейчас в теме
(44) Пока не пробовал. Отпишусь как получится или нет.
47. albert.goncharov 88 25.11.23 02:15 Сейчас в теме
(44)
1. Language/User Defined Language/Define Your Language...
2. Import - 1c-functions-npp.xml
3. Import - 1c-regions-npp.xml
4. Import - 1c-calls-npp.xml
5. Import - 1c-query-npp.xml
6. Закрыть диалог. Закрыть программу (я это зачем-то делал, поэтому записал)
7. В папку C:\Program Files\Notepad++\functionList копируем файлы:
e1c_calls.xml
e1c_functions.xml
e1c_query.xml
e1c_regions.xml
8. В этой же папке лежит overrideMap.xml -- открываем его в Notepad++
9. Открываем скачанный отсюда overrideMap.xml и открываем его в Notepad++ тоже
10. Вставляем 4 строчки из скачанного overrideMap.xml в родной и сохраняем его
11. Выходим и заходим. После этого файлы с расширением bsl и 1cql должны открываться подсвеченными
46. albert.goncharov 88 25.11.23 02:02 Сейчас в теме
Все эти несколько лет у меня как-то очень выборочно рисовался syntax highlighting (кстати говоря в отличие от скачавших, у которых вполне себе порой работало)
И вот наконец у меня тоже он стал рисоваться. Помог Notepad++ v8.6: 20th-Year Anniversary
Рекомендую!
Прикрепленные файлы:
48. albert.goncharov 88 25.11.23 15:01 Сейчас в теме
Ещё важная настройка операционной системы. Я подозреваю, что мне помогла подсвечивать синтаксис совсем не новая версия Notepad++ а именно она
Прикрепленные файлы:
49. britchenko 4 12.01.24 12:32 Сейчас в теме
Скачал оба файла. Подскажите, где взять файлы вида 1c-XXX-npp.xml (4 шт.) в архивах их нет?
albert.goncharov; +1 Ответить
50. albert.goncharov 88 17.01.24 14:54 Сейчас в теме
(49)
Вот содержимое архива 3files.zip, файл 1с-language-npp.v1.xml используется в моём примере для импорта в 3 языка:
1С regions
1C functions
1C calls
Языки начинают отличаться на этапе отрисовки дерева функций, а на этапе синтакс-подсветки они одинаковые. Поэтому на этапе ипорта синтаксиса можно пользоваться одним и тем же файлом для всех 3-х.
Файл 1C-Query-npp.v1.xml используется для импорта в язык 1С Query
Прикрепленные файлы:
Оставьте свое сообщение