gifts2017

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

Опубликовал Осипов Сергей (fixin) в раздел Программирование - Практика программирования

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

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

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

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

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

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

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

 

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

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

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

Где:

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

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

 

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

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

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

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

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

Работа

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

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

КонецМодуля

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

Переменные

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

 

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

 

 

 

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

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