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

07.01.21

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

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

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

Наименование Файл Версия Размер
Архив 3-х файлов для Notepad++
.zip 7,15Kb
72
.zip 1 7,15Kb 72 Скачать
Файлы в папку functionList для версии 7.9.1 Notepad++
.zip 7,25Kb
22
.zip 7,25Kb 22 Скачать

В 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 подсветка синтаксиса редактор модуля список функций вызовов модулей языка запросов

См. также

SALE! 20%

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

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122159    670    389    

714

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7293    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

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

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

10000 8000 руб.

10.11.2023    3537    11    1    

34

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177749    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

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

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

5000 руб.

07.02.2018    99347    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18113    6    8    

39

1С HTML Шаблоны / HTML Templates

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

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28110    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23602    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dabu-dabu 289 11.09.18 17:01 Сейчас в теме
Не удается импортировать functionList.v1.xml. Пишет что failed и все. Версия notepad последняя
2. albert.goncharov 87 11.09.18 23:09 Сейчас в теме
(1) Файл functionList.v1.xml -- НЕ ГОТОВ К ИСПОЛЬЗОВАНИЮ. Это набор 2-х фрагментов файла functionList.xml, которые надо вставить в используемый Notepad++ functionList.xml
Внёс в тело статьи описание файлов. Извините!
3. JohnyDeath 301 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 69 12.09.18 09:32 Сейчас в теме
(3) вижуалы ставить для просмотра кода ?
7. JohnyDeath 301 12.09.18 13:05 Сейчас в теме
(4) это не полноценная студия, а редактор с плагинами.
Попробуй.
5. albert.goncharov 87 12.09.18 12:35 Сейчас в теме
(3) Джонни, спасибо! Когда-нибудь обязательно доберусь до! Инструмент серьёзный, но пока не стоит :)
Только битая ссылка попалась https://marketplace.visualstudio.com/items?itemName=xDrivenDevelopment.language-1c-.
А так я часто в Notepad++ копирую напр. фрагменты кода с этого сайта, или сравнение рядом лежащих похожих модулей делаю - очень быстро получается и наглядно.
Прикрепленные файлы:
8. JohnyDeath 301 12.09.18 13:10 Сейчас в теме
(5) окончание ссылки у тебя съелось.
А вообще есть куча плагинов, в том числе и для сравнения. Например: https://marketplace.visualstudio.com/items?itemName=ryu1kn.partial-diff

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


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


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

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

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

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

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

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

upd. на 7.9.1 проверил - тоже не работает. Ни списка функций, ни подсветки не появилось
40. albert.goncharov 87 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 87 12.01.22 08:27 Сейчас в теме
(38) у меня работает на 7.9.5, так что на 7.9.1 должно сработать. Лучше свяжитесь со мной и проверим что вы не так делаете.
Выше были работающие скрины с версией 8.1.5, но у меня не получилось. До сих пор для меня загадка от чего подсветка зависит.
41. adapter 417 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 87 20.10.22 16:33 Сейчас в теме
(42) Попробую поставить. Отпишусь получилось или нет
44. onetone 24.10.22 12:51 Сейчас в теме
(43) Есть новости? Получилось накатить?
45. albert.goncharov 87 25.10.22 18:22 Сейчас в теме
(44) Пока не пробовал. Отпишусь как получится или нет.
47. albert.goncharov 87 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 87 25.11.23 02:02 Сейчас в теме
Все эти несколько лет у меня как-то очень выборочно рисовался syntax highlighting (кстати говоря в отличие от скачавших, у которых вполне себе порой работало)
И вот наконец у меня тоже он стал рисоваться. Помог Notepad++ v8.6: 20th-Year Anniversary
Рекомендую!
Прикрепленные файлы:
48. albert.goncharov 87 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 87 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
Прикрепленные файлы:
Оставьте свое сообщение