gifts2017

(Удобняшка) выполнение произвольного кода в большом количестве баз

Опубликовал Денис Харченко (nomadon) в раздел Программирование - Универсальные функции

Небольшой помощник при наличии в содержании большого количества баз. Процедура общего модуля, которая позволяет выполнять произвольный код в базе в удобном виде.

Например, если у вас 200 баз, и в этих базах нужно выполнить какой-то код, например, после очередного обновления.

Варианты:

  • Запускать руками каждую базу и в ней выполнять обработку

Вариант, но не для лентяев

  • Написать обработку, которая по COM-соединению подключиться к каждой базе и выполнит там код.

Обычно так и делал, но это все делалось последовательно, приходилось дожидаться завершения выполнения в каком-то из окошек.

  • Запустить выполнение кода в фоновом режиме

И тогда пришла идея разместить в каждой базе вместе с плановым обновлением одну процедуру, которая немного упрощает жизнь.

В процедуре два параметра: 1. Текст кода, который необходимо выполнить 2. Параметр о том, что нужно запустить фоновое задание с этим кодом.

Теперь процедура выглядит следующим образом: Пишется обработка которая выполняет (быстро) одно процедуру и выполнение этой обработки завершается.

Дальше каждая база запускает свое фоновое задание и выполняет переданный код. 

В обработке одна процедура, которую необходимо поместить в общий модуль, ну и сообщить, собственно имя этого модуля этой процедуре.

Процедура ВыполнитьПроизвольныйКод(ТекстКода,ВыполнитьВФоне=Ложь) Экспорт 
	
	Если ВыполнитьВФоне Тогда
		
		Параметры=Новый Массив;
		
		Параметры.Добавить(ТекстКода);
		
		ФоновыеЗадания.Выполнить("_ОбщегоНазначенияСервер.ВыполнитьПроизвольныйКод",Параметры,Строка(Новый УникальныйИдентификатор));              
		
	Иначе 
		
		Выполнить(ТекстКода);
		
	КонецЕсли;
	
КонецПроцедуры

В скриншотах смысла нет, потому что в обработке интерфейса никакого нет.

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

Наименование Файл Версия Размер Кол. Скачив.
Обработка содержащая процедуру выполнения кода в фоновом задании
.epf 4,25Kb
28.09.16
0
.epf 4,25Kb 0 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. борян петров (TODD22) 29.09.16 17:41
А как вы код который нужно выполнить в базу доставляете?
2. Сергей Поликарпов (Serega-artem) 29.09.16 17:45
Очень просто и понятно, а возможности применения огромны! Саму идею несомненно плюсую!
3. Денис Харченко (nomadon) 29.09.16 18:16
(1) TODD22, передается текстом при ком соединении
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа