Каталог решений - Автоматический запуск регламентных заданий в обычном приложении: хитрый ход

Автоматический запуск регламентных заданий в обычном приложении: хитрый ход

Автоматический запуск регламентных заданий в обычном приложении: хитрый ход

В наличии

С выходом продуктов компании 1С на управляемых формах в типовых конфигурациях появилась очень удобная возможность встраивать в информационную базу внешние обработки и настраивать для них расписание выполнения. Однако, для обычного приложения — таких возможностей нет. Возникла необходимость в типовой БП 2.0 по расписанию запускать некую внешнюю обработку. На поддержке находится несколько баз и выполнять доработку конфигураций очень не хотелось ввиду увеличения впоследствии времени на обновление. В статье приведен пример, как обойти описанное ограничение.

Категория:

Описание

 Практически во всех типовых конфигурациях 1С встроен функционал обмена данными. В частности, есть уже существующее в конфигурации регламентное задание «ОбменДанными», а также справочник «Настройки выполнения обмена» и «Настройки обмена данными». Они то нам и понадобятся. Идея состоит в том, что обмен данными можно выполнять по произвольным правилам обмена. С помощью продукта «Конвертация данных 2.1» создаем произвольные правила обмена. В качестве конфигурации источника указываем ту ИБ, где необходимо выполнять произвольный код по расписанию. В качестве приемника — абсолютно любую информационную базу. Мы НЕ создаем ни одного правила конвертации и НЕ создаем ни одного правила выгрузки. Правила обмена пустые полностью. В обработчике для самих правил «Перед выгрузкой данных» (вызывается двойным кликом по правилам в списке конвертаций) встраиваем вот такой код:

НекаяВнешняяОбработка = Справочники.ВнешниеОбработки.НайтиПоНаименованию(» НекаяВнешняяОбработка «);

Если НекаяВнешняяОбработка  <> Справочники.ВнешниеОбработки.ПустаяСсылка() Тогда

Попытка
//
ИмяФайла = ПолучитьИмяВременногоФайла();
 ДвоичныеДанные = НекаяВнешняяОбработка .ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
//
 ИсполняемаяОбработка = ВнешниеОбработки.Создать(ИмяФайла); 
  ИсполняемаяОбработка.ВыполнитьПроцедуруПроизвольныхДействий();
//
УдалитьФайлы(ИмяФайла);

  ИсполняемаяОбработка = Неопределено;

Исключение

КонецПопытки

КонецЕсли;

Отказ = Истина;

Разумеется, внешнюю обработку предварительно необходимо загрузить в справочник внешних обработок. Создавая объект, мы обращаемся к его методу, после выполнения — уничтожаем объект и отказываемся от выгрузки. В результате наш произвольный код будет выполняться по расписанию обмена, которое можно настроить произвольным образом. Единственное, при выполнении такого «обмена» будет выдаваться сообщение вроде: «Запись изменений текущей информационной базы в файл обмена завершилась с ошибками! Обмен данными по настройке «Произвольный» завершен (10:58:43).» Лично меня не напрягает. Всем спасибо за внимание, не забываем ставить плюсы 

has been added to your cart:
Оформление заказа