Пользовательское определение языка 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    171352    959    403    

923

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

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

8400 руб.

20.08.2024    13874    107    46    

107

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

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

22200 руб.

06.10.2023    17178    43    15    

75

Инструментарий разработчика Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

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

9360 руб.

17.05.2024    27149    94    48    

137

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

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

15000 руб.

10.11.2023    11832    44    27    

67

SALE! %

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

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

4800 3840 руб.

14.01.2013    191060    1152    0    

919

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

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

3600 руб.

27.12.2024    1078    2    0    

5

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

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

5000 руб.

07.02.2018    104086    244    100    

307
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dabu-dabu 314 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 862 21.08.19 15:37 Сейчас в теме
Если в коде 1с будет слово "ПрОцЕдУрА", оно подсветится?
16. albert.goncharov 88 22.08.19 00:27 Сейчас в теме
18. SerVer1C 862 22.08.19 07:51 Сейчас в теме
(16) Вы в этом точно уверены? Для чего тогда указываете, например, ключевое слово "из" три раза в описании подсветки: "ИЗ", "Из", "из" - что видно из вашего скриншота.
19. albert.goncharov 88 23.08.19 21:27 Сейчас в теме
(18) Упс. Пардон, не о том подумал! Действительно не подсвечивает. Где-то не хватает галочки в настройках языка case-insensitive... Либо её нет либо я её не нашёл...
Я имел в виду, что в дереве нарисуется:
21. SerVer1C 862 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
Прикрепленные файлы:
Оставьте свое сообщение