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

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С.

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

См. также

SALE! 15%

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

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

10000 руб.

02.09.2020    159437    872    399    

861

SALE! 15%

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

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

8400 7140 руб.

20.08.2024    7772    55    22    

66

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

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

9360 руб.

17.05.2024    23438    68    45    

117

SALE! 15%

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

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

10000 8500 руб.

10.11.2023    10429    36    24    

61

SALE! 15%

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

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

22200 19980 руб.

06.10.2023    15400    35    7    

70

SALE! 35%

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

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

4800 3120 руб.

14.01.2013    187985    1138    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17303    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7695    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4692 20.05.13 16:06 Сейчас в теме
(0) Такое впечатление, будто я уже видел работу на инфостарте.
4. nreisende 201 21.05.13 11:26 Сейчас в теме
(1)(2) Когда доступен такой мощный инструмент, как v8unpack - написать подобную обработку не представляет какой-то запредельной сложности - было бы желание, поэтому не исключаю, что кроме моей, есть другие похожие работы. Более того, был бы очень удивлен, если бы никто на это не сподобился. Мою публикацию можно рассматривать, как один из возможных вариантов решения озвученной задачи.
(3) По указанной ссылке, автор предлагает с помощью глобальной замены вручную обрабатывать каждую строку таблицы замен. Кому как, а мне жалко своего времени: ведь мало того, что процесс завязан на ручной ввод, он еще и длительный по времени (кто заменял - поймет). С помощью моей обработки все можно сделать автоматически, что, поверьте, гораздо веселее (например, для ЗУПа словарь замен составлял несколько десятков позиций, обработок в базе у меня было около 300 - попробуйте вручную все заменить, убьете полдня, а то и больше).
2. TrinitronHome 20.05.13 19:58 Сейчас в теме
я тоже читал что-то похожее на эту тему
5. MaxS 2944 22.05.13 08:34 Сейчас в теме
Поставил плюс, возьму для примера с чего оттолкнутся.
С управляемыми формами работает? Текст модулей УФ меняет?
9. nreisende 201 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 8243 20.06.13 11:21 Сейчас в теме
Делаю тот же функционал, но на базе http://infostart.ru/public/176775/. Подпишусь на тему. Если функционал будет востребован, продолжу, если нет - брошу
11. Evil Beaver 8243 20.06.13 11:22 Сейчас в теме
Хаха! Вот же оно http://infostart.ru/public/182699/. Все что нужно, да еще и типовыми средствами.
12. nreisende 201 21.06.13 09:55 Сейчас в теме
(11) см. мой комментарий в посте (4), обращенный к (3).
13. Evil Beaver 8243 21.06.13 11:06 Сейчас в теме
(12) да-да, безусловно для групповой замены типовые средства не подходят. Просто я про них вообще не знал, вот и обрадовался. Мне редко бывает нужно менять сразу много всего во внешних файлах.

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