Введение.
Думаю, каждый разработчик 1С хоть раз в своей практике сталкивался с задачей замены вызовов процедур и функций в модулях внешних обработок на новые.
К сожалению, 1С не предоставила удобного инструмента для подобных случаев: фактически, доступна лишь глобальная замена, пользоваться которой — при наличии у вас большого числа обработок — то еще мучение.
Недавний релиз ЗУП, в котором произошла массовая миграция процедур и функций из модуля ОбщегоНазначения в модуль ОбщегоНазначенияЗК, заставил меня задуматься об автоматизации процесса и в результате была написана обработка, позволяющая по словарю замен выполнить все требуемые действия.
Благодарности.
Обработка основана на V8Unpack (//infostart.ru/public/15695/), автору которого выражаю мою искреннюю благодарность.
История версий.
Версия 1.1 от 20.11.2013 г — изменен алгоритм замены в текстах модулей, добавлена поддержка управляемых форм. Добавлена возможность помещать в папку результата только измененные обработки.
Версия 1.2 от 29.11.2013 г — добавлена возможность замены текстов без учета регистра. Исправлены выявленные проблемы.
Пошаговая инструкция.
1. Выгрузка внешних обработок
На данном этапе производится выгрузка обработок из справочника «Внешние обработки» в каталог для их дальнейшей обработки.
В случае, если у вас уже есть каталог с обработками, то можете сразу переходить к шагу №2.
Для выгрузки обработок из базы, следует воспользоваться кнопкой «Выгрузить» на панели действий формы.
Предварительно, требуется указать путь для сохранения внешних обработок (в разделе «Путь к внешним обработкам»). После выгрузки, система выдаст предупреждение об окончании процесса.
Внимание! Данный шаг доступен только для тех конфигураций, где есть справочник «Внешние обработки»; во всех остальных конфигурациях выгрузка будет невозможна.
Алгоритм выгрузки позаимствован из обработки с ИТС «КонвертацияВнешнихОбработок».
2. Выбор внешних обработок
На этом шаге, в разделе «Путь к внешним обработкам«, требуется указать каталог с файлами внешних обработок (способ конвертации «Все файлы из каталога»), либо выбрать конкретную обработку для проведения замены текстов (способ конвертации «Выбранный файл»).
3. Заполнение словаря замен
Для того, чтобы система знала, что и на что необходимо заменить в текстах модулей внешних обработок, в разделе «Словарь замен» требуется указать необходимое количество заменяемых строк и их новых значений.
Словарь также можно сохранить в файл/прочитать из файла (текстовый формат) для дальнейшего использования.
4. Замена строк
На данном этапе в модулях выбранных на шаге №2 внешних обработок производится замена подстрок, согласно словарю замен.
Для начала процесса, требуется указать путь для сохранения измененных внешних обработок (в разделе «Путь для сохранения результатов работы обработки») и нажать кнопку «Замена текстов» на панели действий формы.
После окончания процесса, система выдаст предупреждение.
Внимание! Обработки в исходном каталоге не изменяются, результат сохраняется в отдельный каталог!
5. Проверка результата (опционально)
На этом шаге производится проверка того, что полученные на выходе файлы не содержат критических ошибок.
Проверка запускается при нажатии на кнопку «Проверить» на панели действий формы; анализируются обработки в каталоге, указанном в разделе «Путь для сохранения результатов работы обработки»
Сразу скажу, что никакого глубокого анализа нет: производится простая попытка создать экземпляр внешней обработки из изменного файла, а возникающие ошибки выводятся в окно сообщений.
6. Загрузка внешних обработок в ИБ.
На данном этапе производится загрузка измененных обработок из каталога, указанного в разделе «Путь для сохранения результатов работы обработки» в справочник «Внешние обработки».
Для загрузки обработок в базу, следует воспользоваться кнопкой «Загрузить» на панели действий формы.
После загрузки, система выдаст предупреждение об окончании процесса.
Внимание! Данный шаг доступен только для тех конфигураций, где есть справочник «Внешние обработки»; во всех остальных конфигурациях загрузка будет невозможна!
Алгоритм загрузки позаимствован из обработки с ИТС «КонвертацияВнешнихОбработок».
Заключение.
Надеюсь, обработка окажется полезной в нелегкой работе разработчиков 1С.
Спасибо за внимание.
(0) Такое впечатление, будто я уже видел работу на инфостарте.
я тоже читал что-то похожее на эту тему
(1) (2)http://infostart.ru/public/182699/
(1)(2) Когда доступен такой мощный инструмент, как v8unpack — написать подобную обработку не представляет какой-то запредельной сложности — было бы желание, поэтому не исключаю, что кроме моей, есть другие похожие работы. Более того, был бы очень удивлен, если бы никто на это не сподобился. Мою публикацию можно рассматривать, как один из возможных вариантов решения озвученной задачи.
(3) По указанной ссылке, автор предлагает с помощью глобальной замены вручную обрабатывать каждую строку таблицы замен. Кому как, а мне жалко своего времени: ведь мало того, что процесс завязан на ручной ввод, он еще и длительный по времени (кто заменял — поймет). С помощью моей обработки все можно сделать автоматически, что, поверьте, гораздо веселее (например, для ЗУПа словарь замен составлял несколько десятков позиций, обработок в базе у меня было около 300 — попробуйте вручную все заменить, убьете полдня, а то и больше).
Поставил плюс, возьму для примера с чего оттолкнутся.
С управляемыми формами работает? Текст модулей УФ меняет?
хорошая идея.Можно использовать для упрощения создания ВПФ
отличная вещь, когда-то тоже задумывался на этот счет, спасибо!
а для управляемого приложения есть такая же обработка, мне код интересен
(5)(8) С управляемыми формами пока не работает. Постараюсь сделать в ближайшее время и обновить публикацию.
Делаю тот же функционал, но на базеhttp://infostart.ru/public/176775/ . Подпишусь на тему. Если функционал будет востребован, продолжу, если нет — брошу
Хаха! Вот же оноhttp://infostart.ru/public/182699/ . Все что нужно, да еще и типовыми средствами.
(11) см. мой комментарий в посте (4), обращенный к (3).
(12) да-да, безусловно для групповой замены типовые средства не подходят. Просто я про них вообще не знал, вот и обрадовался. Мне редко бывает нужно менять сразу много всего во внешних файлах.
Ну и еще, как вариант, есть скрипты типа AutoIt, которые записывают нужные клики и типовыми средствами стопицот раз прогоняют нужную замену 😉
Вопрос:
а возможно ли с помощью этой утилиты заменить во внешней обработке макет?
Или удалить его?
Добавил поддержку управляемых форм.
(14) Pawlick, нет, изменить или удалить макет с помощью этой обработки нельзя. Рекомендую ознакомится с инструментами типа v8unpack для подобных целей.
подписался.
Спасибо. Приспособил к своей разработке ВЫПОЛНИТЬ. Теперь могу делать Выполнить() с отладкой.
Жаль, что с помощью обработки нельзя заменить тип реквизита обработки и тип элементов на форме.
Очень было бы полезно доработать это.
Хорошая вещь, особенно когда у тебя несколько баз и франчи наплодили в них целый зверинец этого зла. Единственное, файлы могут также лежать в табчасти Принадлежность справочника (в УПП, по крайней мере, есть такая). Поэтому слегка дописал, выгрузка:
Показать
Загрузка:
Показать
Управляемые формы некорректно разбирает. И на больших УФ к тому же еще и думает долго…