БСП, использование типового механизма 1с для запуска регламентных заданий с заранее подготовленными настройками.

Публикация № 249167

Программирование - Теория программирования

бсп регламентные задания настройка регламентных заданий

39
Описание варианта запуска регламентного задания на БСП, без изменения типовой конфигурации.

Кто не сталкивался с необходимостью  запускать свои регламентные задания??? Наконец-то в типовом решении появилась возможность запускать выполнение внешней обработки через регламентное задание.

Впервые увидел реально  удобную  вещь на //catalog.mista.ru/public/103071  для  собственных  разработок неплохая основа на обычных формах.Основная идея -  передавать регламентному заданию заранее подготовленную настройку.

Еще  имеется несколько  вариантов  применения запуска регламентных заданий с использованием плана обмена и 

//catalog.mista.ru/public/151693/ и http://dev.1tsm.ru/project/114.

 

Сформулирую задачу:

По расписанию выполнять внешнюю обработку. Обработка должна иметь возможность задания определенных параметров. 

Сама обработка во вложении (в моей конфе реально работающая,  вам предлагаю посмотреть в качестве примера.)

Глубоко обработку расписывать не буду - см. код в обработке.

 

Заготовка взята  из демо базы БСП.  Создаем свою форму. Добавляем необходимые реквизиты и табличные части.. 

В общем-то  обычная внешняя обработка. Добавляем кнопку "сохранить настройки".

 

 

 В модуле обработки  в описании задаем две команды. Одна  потребуется для открытия  формы обработки, другая выполняется на сервере в регламентном задании.

 

 

 Добавляем  обработку  в дополнительные отчеты и обработки.  Для команды "Обновить часы" устанавливаем использование регламентного задания, задаем само регламентное задание. Указываем, что  обработка относится к административному блоку. 

 

Настраиваем выбранный раздел. 



Остальное - дело техники.  

 

39

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

Наименование Файл Версия Размер
Шаблон обработки для регламентного задания с сохранением настроек.
.epf 12,78Kb
03.01.14
168
.epf 12,78Kb 168 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
3. polukaroff 3 12.09.15 16:45 Сейчас в теме
Хороший механизм.
Одно но: в прикрепленной обработке заголовок процедуры Выполнить команду выглядит так:

Процедура ВыполнитьКоманду(ИдентификаторКоманды,ПараметрыКоманды,парам=Неопределено) Экспорт

А вызывается она из Модуля доп.отчеты и обработки так:
Если ПараметрыКоманды = Неопределено Тогда
ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды);
Иначе
ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды);
КонецЕсли;

То есть если ПараметрыКоманды =Неопределено - возникает ошибка, надо заголовок писать так:

Процедура ВыполнитьКоманду(ИдентификаторКоманды,ПараметрыКоманды = Неопределено, парам = Неопределено) Экспорт
4. Vengetto 16.12.15 16:27 Сейчас в теме
Я заказал обработку, почему она до сих пор не пришла ко мне на почту?
5. almas 200 17.12.15 14:40 Сейчас в теме
(4) Vengetto,
Сожалею. Я в данном случае не виноват. Не отработал Робот инфостарта..
6. 987123321 31.10.16 19:56 Сейчас в теме
7. ppk2006 20.01.17 09:53 Сейчас в теме
Добрый день!
Не могли бы, пожалуйста, подсказать как сохранить параметры для выполнения обработки в форме НастройкаПараметров, чтобы они использовались при выполнении Регламентной операции?
8. ja-maik-a 13.08.18 12:03 Сейчас в теме
Подскажите, возможно ли сделать запуск внешней обработки по расписанию в отдельном сеансе с открытием формы внешней обработки, в которой будет выводится процесс выполнения обработки?
9. pavelkusov 06.03.19 16:11 Сейчас в теме
Описание процесса неполное и, соответственно, не корректное. То есть, если сделаете в точности как тут написано, работать не будет. Возможно, в обработке сделано нормально - не знаю. Польза от статьи лишь в том, что она рассказывает о существовании данного механизма в 1С. Скачайте БСП и посмотрите в демо базе. Там все корректно и работает.
Вот пример правильного модуля объекта:

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

// Возвращает сведения о внешней обработке.
//
// Возвращаемое значение:
// Структура - Подробнее см. ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке().
//
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Информация = НСтр("ru = 'Обработка сервисных функций полнотекстового поиска. Используется для демонстрации возможностей подсистемы ""Дополнительные отчеты и обработки"".'");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "2.4.1.1";

Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = 'Обновить индекс полнотекстового поиска'");
Команда.Идентификатор = "ОбновитьИндекс";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Команда.ПоказыватьОповещение = Истина;

Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = 'Вывод ошибки'");
Команда.Идентификатор = "Исключение";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();

Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = 'Управление полнотекстовым поиском'");
Команда.Идентификатор = "ОткрытиеФормы";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Команда.ПоказыватьОповещение = Истина;

Описание = НСтр("ru = 'Для управления индексом полнотекстового поиска требуется установка привилегированного режима.'");
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима(Описание);
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);

Возврат ПараметрыРегистрации;
КонецФункции

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

// Общие действия перед началом выполнения команд.
УстановитьПривилегированныйРежим(Истина);

// Диспетчеризация обработчиков команд.
Если ИмяКоманды = "ОбновитьИндекс" Тогда
ПолнотекстовыйПоиск.ОбновитьИндекс(Ложь, Ложь);
ИначеЕсли ИмяКоманды = "ОчиститьИндекс" Тогда
ПолнотекстовыйПоиск.ОчиститьИндекс();
Иначе
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Команда ""%1"" не поддерживается обработкой ""%2""'"),
ИмяКоманды,
Метаданные().Представление());
КонецЕсли;

// Имитация длительной операции для демонстрации запуска фонового задания в клиент-серверном режиме.
Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
ДатаОкончания = ТекущаяДатаСеанса() + 4;
Пока ДатаОкончания > ТекущаяДатаСеанса() Цикл
КонецЦикла;
КонецЕсли;

КонецПроцедуры

#КонецОбласти

#КонецЕсли
Оставьте свое сообщение