Замена текстов модулей внешних обработок

09.12.13

Разработка - Инструментарий разработчика

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

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

Наименование Файл Версия Размер
ЗаменаТекстовМодулейВнешнихОбработок.epf
.epf 109,82Kb
158
.epf 1.2 109,82Kb 158 Скачать

Введение.

Думаю, каждый разработчик 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С.

Спасибо за внимание.

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    121613    670    389    

711

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7262    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

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

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

10000 8000 руб.

10.11.2023    3507    11    1    

33

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177727    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

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

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

5000 руб.

07.02.2018    99339    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18102    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28096    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23596    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4670 20.05.13 16:06 Сейчас в теме
(0) Такое впечатление, будто я уже видел работу на инфостарте.
4. nreisende 200 21.05.13 11:26 Сейчас в теме
(1)(2) Когда доступен такой мощный инструмент, как v8unpack - написать подобную обработку не представляет какой-то запредельной сложности - было бы желание, поэтому не исключаю, что кроме моей, есть другие похожие работы. Более того, был бы очень удивлен, если бы никто на это не сподобился. Мою публикацию можно рассматривать, как один из возможных вариантов решения озвученной задачи.
(3) По указанной ссылке, автор предлагает с помощью глобальной замены вручную обрабатывать каждую строку таблицы замен. Кому как, а мне жалко своего времени: ведь мало того, что процесс завязан на ручной ввод, он еще и длительный по времени (кто заменял - поймет). С помощью моей обработки все можно сделать автоматически, что, поверьте, гораздо веселее (например, для ЗУПа словарь замен составлял несколько десятков позиций, обработок в базе у меня было около 300 - попробуйте вручную все заменить, убьете полдня, а то и больше).
2. TrinitronHome 20.05.13 19:58 Сейчас в теме
я тоже читал что-то похожее на эту тему
5. MaxS 2826 22.05.13 08:34 Сейчас в теме
Поставил плюс, возьму для примера с чего оттолкнутся.
С управляемыми формами работает? Текст модулей УФ меняет?
9. nreisende 200 03.06.13 09:24 Сейчас в теме
(5)(8) С управляемыми формами пока не работает. Постараюсь сделать в ближайшее время и обновить публикацию.
6. help1Ckr 22.05.13 11:15 Сейчас в теме
хорошая идея.Можно использовать для упрощения создания ВПФ
7. serega3333 22.05.13 13:00 Сейчас в теме
отличная вещь, когда-то тоже задумывался на этот счет, спасибо!
8. serg1983 20 31.05.13 16:38 Сейчас в теме
а для управляемого приложения есть такая же обработка, мне код интересен
10. Evil Beaver 8107 20.06.13 11:21 Сейчас в теме
Делаю тот же функционал, но на базе http://infostart.ru/public/176775/. Подпишусь на тему. Если функционал будет востребован, продолжу, если нет - брошу
11. Evil Beaver 8107 20.06.13 11:22 Сейчас в теме
Хаха! Вот же оно http://infostart.ru/public/182699/. Все что нужно, да еще и типовыми средствами.
12. nreisende 200 21.06.13 09:55 Сейчас в теме
(11) см. мой комментарий в посте (4), обращенный к (3).
13. Evil Beaver 8107 21.06.13 11:06 Сейчас в теме
(12) да-да, безусловно для групповой замены типовые средства не подходят. Просто я про них вообще не знал, вот и обрадовался. Мне редко бывает нужно менять сразу много всего во внешних файлах.

Ну и еще, как вариант, есть скрипты типа AutoIt, которые записывают нужные клики и типовыми средствами стопицот раз прогоняют нужную замену ;)
14. Pawlick 10 19.08.13 10:40 Сейчас в теме
Вопрос:
а возможно ли с помощью этой утилиты заменить во внешней обработке макет?
16. nreisende 200 20.11.13 10:48 Сейчас в теме
Добавил поддержку управляемых форм.

(14) Pawlick, нет, изменить или удалить макет с помощью этой обработки нельзя. Рекомендую ознакомится с инструментами типа v8unpack для подобных целей.
15. Pawlick 10 19.08.13 10:43 Сейчас в теме
17. Nordgreen 27.11.13 16:43 Сейчас в теме
18. 7OH 69 30.11.13 02:49 Сейчас в теме
Спасибо. Приспособил к своей разработке ВЫПОЛНИТЬ. Теперь могу делать Выполнить() с отладкой.
19. Sabfir 20.08.14 12:46 Сейчас в теме
Жаль, что с помощью обработки нельзя заменить тип реквизита обработки и тип элементов на форме.
Очень было бы полезно доработать это.
20. irreal 32 04.12.15 13:19 Сейчас в теме
Хорошая вещь, особенно когда у тебя несколько баз и франчи наплодили в них целый зверинец этого зла. Единственное, файлы могут также лежать в табчасти Принадлежность справочника (в УПП, по крайней мере, есть такая). Поэтому слегка дописал, выгрузка:

	// {CORRECTION 04.12.2015 12:35:45 Лазарев: файлы могут храниться в табчасти справочника
	// current:
	Если НЕ Метаданные.Справочники.ВнешниеОбработки.ТабличныеЧасти.Найти("Принадлежность") = Неопределено Тогда
		Запрос.Текст =
		"ВЫБРАТЬ
		|	Шапки.Ссылка,
		|	Шапки.ВидОбработки,
		|	ВЫБОР
		|		КОГДА Шапки.ВидОбработки = ЗНАЧЕНИЕ(Перечисление.ВидыДополнительныхВнешнихОбработок.Отчет)
		|			ТОГДА "".erf""
		|		ИНАЧЕ "".epf""
		|	КОНЕЦ КАК Расширение,
		|	Табчасти.НомерСтроки,
		|	Табчасти.ХранилищеВнешнейОбработки
		|ИЗ
		|	Справочник.ВнешниеОбработки.Принадлежность КАК Табчасти
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВнешниеОбработки КАК Шапки
		|		ПО Табчасти.Ссылка = Шапки.Ссылка";
		
		Если Не ПустаяСтрока(ТекстГде) Тогда
			Запрос.Текст = Запрос.Текст + "
			|ГДЕ " + ТекстГде;
		КонецЕсли;
		
		Выборка = Запрос.Выполнить().Выбрать();
		Пока Выборка.Следующий() Цикл
			
			ДвоичныеДанные = Выборка.ХранилищеВнешнейОбработки.Получить();
			Если ДвоичныеДанные = Неопределено Тогда
				Продолжить;
			КонецЕсли;
			ИмяФайла = ПутьКФайлу + "\" + Выборка.Ссылка.УникальныйИдентификатор() + "$" + Формат(Выборка.НомерСтроки,"ЧГ=0") + Выборка.Расширение;
			ДвоичныеДанные.Записать(ИмяФайла);
			
		КонецЦикла;
		
	КонецЕсли;	
	// }CORRECTION 04.12.2015 12:35:45 Лазарев.
Показать

Загрузка:


			// {CORRECTION 04.12.2015 12:47:45 Лазарев:
			// current:
			ФайлИмяБезРасширения = СокрЛП(Файл.ИмяБезРасширения);
			поз = Найти(ФайлИмяБезРасширения,"$");
			Если поз Тогда
				Ссылка = Справочники.ВнешниеОбработки.ПолучитьСсылку(Новый УникальныйИдентификатор(Лев(ФайлИмяБезРасширения, поз-1)));
				НомерСтроки = Число(Прав(ФайлИмяБезРасширения, СтрДлина(ФайлИмяБезРасширения) - поз));
				Ссылка = Справочники.ВнешниеОбработки.ПолучитьСсылку(Новый УникальныйИдентификатор(Файл.ИмяБезРасширения));
				Если Не ПустаяСтрока(Ссылка.ВерсияДанных) Тогда
					Обработка = Ссылка.ПолучитьОбъект();
					Обработка.Принадлежность[НомерСтроки-1].ХранилищеВнешнейОбработки = Новый ХранилищеЗначения(Новый ДвоичныеДанные(Файл.ПолноеИмя));
					Обработка.Записать();
					ЗагруженХотябыОдинФайл = Истина;
				Иначе
					Сообщить("Ошибка загрузки файла (объект не найден): "+Файл.ПолноеИмя, СтатусСообщения.Важное);
				КонецЕсли;
				Продолжить;
			КонецЕсли;	
			// }CORRECTION 04.12.2015 12:47:45 Лазарев.
Показать
21. toypaul 63 10.01.18 13:59 Сейчас в теме
Управляемые формы некорректно разбирает. И на больших УФ к тому же еще и думает долго...
Оставьте свое сообщение