При обновлении типовых конфигурации, столкнулся с проблемой добавления туда своих процедур, с тем чтобы они не затирались после обновления релиза. Поэтому для этих целей написал свой парсер.
В типовых конфигурациях стараюсь придерживаться следующих правил:
1. Писать свой отчеты и обработки (возможно на базе типовых), не трогая типовых.
2. Печатные формы документов, только подключаемые.
3. Добавление элементов форм, только программное.
4. Писать свой "удобные документы", которые либо делают нужные движение по регистрам, либо создают типовые документы, для нужных движений.
Этот парсер и использую для того чтобы, добавлять свои процедуры, дописывать код в существующие, создавать программно элементы форм. Минус этой методики в том, что на добавление элемента формы, приходиться тратить гораздо больше времени, чем просто открыть и создать.
Выложил конфигурацию "Авто обновление конфигурации.cf", в ней только один справочник "Авто обновление конфигурации", он только и нужен. Этот справочник можно скопировать и вставить в любую конфигурацию, чтобы работать с ним.
Принцип работы:
1. Выгрузить файлы конфигурации из типовой конфигурации. Можно и из рабочей базы.
2. Заполнить вашими процедурами справочник "Авто обновление конфигурации", сделать из него выгрузку.
3. Загрузить файлы конфигурации, в рабочую базу.
Что умеет это парсер:
- Добавлять свои процедуры и функции
- Добавлять предопределенные процедуры, если их нет в форме
- Добавлять в существующие процедуры свой код, в начало или конец. Если надо создать код в начале и в конце одновременно, то следует это делать двумя строками.
- Добавлять код в середину процедуры, нужно привязаться к уникальному коду и указать процедуру. При этом обязательно ставить флаг «Вставить в любой текст».
- Добавлять код в начало раздела, например переменные
- Добавлять код в конец раздела, раздел основной программы
- Удалять ненужный код, вставляя на его место свой. При этом обязательно ставить флаг «Вставить в любой текст».
- Вернуть модуль в исходное состояние, целиком копируется типовой модуль.
- Копировать процедуры (строки) из другого элемента справочника «Авто обновление конфигурации». Я у себя создал определенны шаблоны и копирую их почти в каждый новый элемент «Авто обновление конфигурации».
- Функция «Сдвиг», используется для вставки кода «В любое место», но со сдвигом.
- Текст сопоставления (текст который будет встречаться до или после текущего), используется для сложных вставок. Когда нужно привязать не к одному уникальному коду внутри процедуры, а к нескольким.
Инструкция:
- Необходимо заполнить параметры, разовая работа:
1.1 Путь к каталогу файлов конфигурации – Путь к текстам модулей типовой конфигурации
1.2 Путь к каталогу файлов результата – Путь к обработанным результатам, должен отличаться от 1.1
1.3 Текст авто комментария – ваш комментарии в процедурах, до и после изменения, например //Код Емельянова А.
- Добавление документа. Встаем на группу «Документы», добавляем группы, документ, например «ABCКлассификацияПокупателей», можете писать имена сами (как в конфигураторе без пробелов), можете выбрать из выпадающего списка.
- Добавление модулей. Встаем на вновь созданную группу «ABCКлассификацияПокупателей», добавляем элемент справочника «Авто обновление конфигурации». Записываем имя модуля, имя модуля должно быть таким же как создает конфигуратор после «Выгрузить файлы конфигурации», для этого есть конструктор, кнопка «Конструктор имени модуля». Там нужно выбрать только реквизит «Форма».
- Заполняем строки элемента. Каждая строка это процедура или код в процедуру.
- Галочка «Выгружать», отвечает за то выгружать код или нет.
- Галочка «Никогда не выгружать», ставиться например в шаблонах. Она нужна потому-что есть функция которая включает во всех элементах «Выгружать».
- Галочка «Создать файл в случае отсутствия». Например есть справочник «АдресныеСокращения» и у него нет формы элементы, а хотите туда код написать. В данный момент для него конфигуратор модуля не выгружал. Ставим этот флаг, для создания этого модуля.
- Описание формы редактирования.
8.1 Имя процедуры\функции. Пишем имя процедуры или функции целиком, со всеми переменными, скобками, экспортом.
8.2 Текст вставки – ваш код.
8.3 Имя предопределенной процедуры – выбирается в том случае если нужно вставлять код в предопределенные процедуры форм (у меня не все описаны, но можно дописать самому), описаны только те которые использовал за 4 года работы. При выборе атвтоматом заполняется Имя процедуры\функции.
8.4 Флаг «Предопределённая процедура» - ставиться если нужно создать предопределённую процедуру которой нет.
8.5 «Вставлять текст в начало процедуры\функции» - указывает куда вставлять код в начало или в конец
8.6 «Вставить в любой текст.» - Используется для вставки кода в любое место процедуры, (код указывать в «Имя процедуры\функции») при этом надо указать в какую процедуру «Вставить в процедуру\функцию:», если этого не указать то код будет вставлен при первом совпадение.
8.7 «Удалить текст». Все как для пункта 8.6 только найденный текст будет удален.
8.8 Текст сопоставления (текст который будет встречаться до или после текущего), используется для сложных вставок. Когда нужно привязать не к одному уникальному коду внутри процедуры, а к нескольким.
Пример работы в видео, 10 Мб, около 8 минут, без звука.
Парсер писал для себя, попросили показать. Написал его года 4 назад. Года 2 как уже внутрь кода не лезу, все что мне нужно работает. Для простых вещей «Что умеет парсер» с 1 по 9 пункт работает без проблем. Для пункта 4 требуются определенные навыки. 10 и 11 пункт работает, но использую редко и требует навыков.
Просьба камнями не кидать, я ни на что не претендую, переписывать пока ничего не собираюсь, выкладываю как есть.