(Удобняшка) выполнение произвольного кода в большом количестве баз
Разработка - Универсальные функции
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Например, если у вас 200 баз, и в этих базах нужно выполнить какой-то код, например, после очередного обновления.
Варианты:
- Запускать руками каждую базу и в ней выполнять обработку
Вариант, но не для лентяев
- Написать обработку, которая по COM-соединению подключиться к каждой базе и выполнит там код.
Обычно так и делал, но это все делалось последовательно, приходилось дожидаться завершения выполнения в каком-то из окошек.
- Запустить выполнение кода в фоновом режиме
И тогда пришла идея разместить в каждой базе вместе с плановым обновлением одну процедуру, которая немного упрощает жизнь.
В процедуре два параметра: 1. Текст кода, который необходимо выполнить 2. Параметр о том, что нужно запустить фоновое задание с этим кодом.
Теперь процедура выглядит следующим образом: Пишется обработка которая выполняет (быстро) одно процедуру и выполнение этой обработки завершается.
Дальше каждая база запускает свое фоновое задание и выполняет переданный код.
В обработке одна процедура, которую необходимо поместить в общий модуль, ну и сообщить, собственно имя этого модуля этой процедуре.
Процедура ВыполнитьПроизвольныйКод(ТекстКода,ВыполнитьВФоне=Ложь) Экспорт
Если ВыполнитьВФоне Тогда
Параметры=Новый Массив;
Параметры.Добавить(ТекстКода);
ФоновыеЗадания.Выполнить("_ОбщегоНазначенияСервер.ВыполнитьПроизвольныйКод",Параметры,Строка(Новый УникальныйИдентификатор));
Иначе
Выполнить(ТекстКода);
КонецЕсли;
КонецПроцедуры
В скриншотах смысла нет, потому что в обработке интерфейса никакого нет.
Вступайте в нашу телеграмм-группу Инфостарт