Простой парсинг модулей 1с8

Публикация № 102193

Программирование - Практика программирования

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

Парсинг модулей

Часто приходится однотипным образом обрабатывать модули объектов 1С 80 (форм, документов, справочников и т.п.), чтобы над всеми ими выполнить однотипную операцию.

Нам понадобилось обработать все формы журналов и списков документов в УПП, чтобы вставить в журналы и списки документов некоторые действия, а некоторые действия сделать доступными только в зависимости от наличия прав пользователя.

Для целей несложной обработки текстов модулей (парсинга) была написана простая обработка.

Функции обработки:

  • Вставлять в модуль новую процедуру или функцию
  • Добавлять текст в тело модуля или в область переменных
  • Все изменения помечаются комментариями – маркерами начала и конца, что позволяет повторно изменять код, а следовательно применять парсинг многократно
  • Можно отбирать, в какие модули вносить изменения – в формы или модули объектов и каких объектов

 

Структура маркера:

Маркер начала имеет структуру: //{[ПоставщикЗамены][пробел][ИмяЗамены]

Маркер конца имеет структуру: //}[ПоставщикЗамены][пробел][ИмяЗамены]

Где:

·        ПоставщикЗамены – любой идентификатор, в качестве которого удобно использовать название фирмы, которая вносит изменения в конфигурацию, например BESTFRAN4;

·        ИмяЗамены – идентификатор конкретно данной замены.

 

Алгоритм поиска и замены.

Поиск и замены происходит в два прохода. На первом проходе текст модуля рассматривается как обычный неструктурированный плоский текст. Для каждой замены пробуем найти помеченные маркером участки замены и заменить на новое содержимое (вариант, когда содержимое между маркерами обновляется).

Те правила, которые выполнились, прекращаются, и если остались невыполненные правила, текст модуля разбивается на две части – код процедур и код модуля.

Далее помеченный маркерами код вставляется в зависимости от места вставки:

Вариант вставки

Работа

НачалоМодуля

Код вставляется в начало кода тела модуля.

КонецМодуля

Код вставляется в конец кода тела модуля.

Переменные

Код вставляется в самое начала кода всего модуля.

 

Для простой замены в текстах предусмотрен режим, где вариант вставки – «Замена». Тогда код в ячейке «Код» в случае его присутствия в модуле заменяется на другой код, причем замены производятся для всех вхождений текста.

 

 

 

13

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

Наименование Файл Версия Размер
down.zip
.zip 18,45Kb
18.12.11
55
.zip 18,45Kb 55 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. fomix 26 19.12.11 12:31 Сейчас в теме
Не понятно назначение сей обработки?! Если поиск и замена, то все равно же руками предварительная работа делается...
2. fixin 3846 19.12.11 12:35 Сейчас в теме
(1) объясняю.
1. Когда дорабатываете типовую, заносите изменения модулей в таблицу парсинга
2. Накатываете на вашу конфу обновление типовой.
3. Парсите модули.
Все, обновление происходит автоматом, не нужно ковырять модули вручную.
3. fomix 26 19.12.11 12:46 Сейчас в теме
Тогда лучше в описание обработки надо вставить этот комментарий и люди потянутся...
4. igor_gk 46 19.01.12 17:30 Сейчас в теме
5. igor_gk 46 19.01.12 17:43 Сейчас в теме
Только вот распиши пжалст назначения и смысл реквизитов формы обработки, а то вдруг не так догадаюсь/додумаю....
8. fixin 3846 19.01.12 17:54 Сейчас в теме
(5) смотри примеры. Что именно непонятно?
9. igor_gk 46 19.01.12 18:16 Сейчас в теме
(8) Назначение столбцов и строк в примерах (mxl).
Не, ну догадаться можно, метод тыка опять же... Но вот так чтоб типа мануала....
10. fixin 3846 19.01.12 18:27 Сейчас в теме
(9) может быть кто-то, кто уже тыкал и догадался, распишет, я добавлю в статью? Честно говоря, пока не успеваю. Можно в камменты написать.
6. cool.vlad4 44 19.01.12 17:49 Сейчас в теме
прикольно!...может доживем и 1С сделает нечто вроде аспектов(как в АОП)
7. fixin 3846 19.01.12 17:54 Сейчас в теме
(6) да, я тоже читал про АОП. ПРикольная шняга.
11. webester 29 29.09.12 10:15 Сейчас в теме
бывает есть необходимость в таком инструменте, и в данном случае не так важно на чем он написан на 1С или на чем то еще.
12. fixin 3846 01.10.12 15:07 Сейчас в теме
(11) да, главное чёбы парсил.
Оставьте свое сообщение