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

09.12.13

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ЗаменаТекстовМодулейВнешнихОбработок.epf
.epf 109,82Kb ver:1.2
159
159 Скачать (1 SM) Купить за 1 850 руб.

Введение.

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

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

См. также

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

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

12000 руб.

02.09.2020    169240    937    403    

905

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    12571    99    42    

101

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

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

9360 руб.

17.05.2024    26516    90    48    

134

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

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

22200 руб.

06.10.2023    16816    41    15    

75

SALE! %

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

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

4800 3840 руб.

14.01.2013    190534    1150    0    

918

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

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

15000 руб.

10.11.2023    11387    40    27    

66

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    765    2    0    

4

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

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

5000 руб.

07.02.2018    103920    244    100    

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

Ну и еще, как вариант, есть скрипты типа AutoIt, которые записывают нужные клики и типовыми средствами стопицот раз прогоняют нужную замену ;)
14. Pawlick 10 19.08.13 10:40 Сейчас в теме
Вопрос:
а возможно ли с помощью этой утилиты заменить во внешней обработке макет?
16. nreisende 202 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 70 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 Сейчас в теме
Управляемые формы некорректно разбирает. И на больших УФ к тому же еще и думает долго...
Оставьте свое сообщение