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

15 мая 2013

Использованная в статье обработка "Подсчет количества документов"

Внешняя обработка

Ранее была написана внешняя обработка, позволяющая просматривать количество документов в базе, введенных за текущий день по дате документа. Для чего она была создана не суть важно. Форма обработки достаточно простая, как и реализация:

Программный код обработки Вы можете посмотреть, скачав ее по ссылке в конце статьи. Мы же решим другую задачу. Нам нужно эту обработку запускать из меню "Сервис":

По нажатию на кнопку обработка запускается с уже введенной текущей датой в поле "Дата проверки".

Запуск

Сначала добавим кнопку "Количество документов за сутки" в интерфейс "Полный" и создадим для нее процедуру-обработчик в общем модуле.

Программный код процедуры-обработчика представлен на следующем листинге:

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

В общих чертах последовательность действия такая:

  1. Получаем ссылку на элемент справочника "ВнешниеОбработки".
  2. Извлекаем двоичные данные файла обработки, сохраненные в найденном элементе справочника.
  3. Записываем полученные двоичные данные во временный файл.
  4. С помощью созданного файла получаем форму внешней обработки и открываем ее.
Таким образом, мы можем запускать внешние обработки/отчеты из любого модуля конфигурации, где доступен клиентский контекст.

Преимущества

Для чего это может понадобиться? Не легче ли добавлять обработки или очтеты непосредственно в конфигурацию?

Да, легче. Но что, если Вы часто дорабатываете обработку? Каждый раз при ее изменении обновлять информационную базу? Использовать динамическое обновление со всеми вытекающими рисками?

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


comments powered by Disqus