Вызов дополнительной обработки средствами БСП

0. 1312 16.01.22 08:41 Сейчас в теме
Версия для программистов. Мне понадобилось вызывать дополнительную обработку штатным механизмом. Получилась универсальная процедура, которую можно вставить в свой код или доработать. Проще, чем писать с нуля.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. quazare 2137 16.01.22 15:11 Сейчас в теме
На самом деле не обязательно указывать, что это через БСП. По-умолчанию дополнительные обработки и работа с ними - это и есть БСП. Достаточно сделать обработку- «точку входа» с указанием того, что нужно начать выполнять по расписанию. Так можно выполнять любую обработку или отчет - вообще все что угодно практически…
2. AlexHelmer 1312 16.01.22 15:17 Сейчас в теме
(1). Добрый вечер если не трудно выложите в этой ветке пример пускай всё будет лежать в кучке
3. quazare 2137 16.01.22 15:19 Сейчас в теме
(2) чуть позже, делал год назад, там код - несколько строк
4. quazare 2137 16.01.22 15:45 Сейчас в теме
в модуле внешней обработки достаточно прописать экспортную функцию "ВыполнитьКоманду". (внешнюю обработку повесить на расписание)

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

Функция ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды) Экспорт
	Если ИдентификаторКоманды = "Автоотправка" Тогда
	// Здесь поставьте выполнение вашей команды
	КонецЕсли;
КонецФункции

Показать


с вашего позволения я дам здесь ссылку на одну из своих статей по Длительным операциям в фоновом режиме
5. AlexHelmer 1312 16.01.22 16:03 Сейчас в теме
Как это устроено в самой обработке которую необходимо вызвать всё понятно. сюда бы ещё добавить код как вызывать эту внешнюю обработку зарегистрированную в справочнике дополнительных обработок из другой обработки кликнув кнопку на форме. Тогда бы был законченный фрагмент который можно было бы использовать в своих целях
8. maraty 292 16.01.22 21:32 Сейчас в теме
(5)
ОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта", "ИмяНашейОбработки");
ОбработкаОбъект = ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(ОбработкаСсылка);


У обработки объекта соответственно можем вызывать экспортные процедуры и функции.

Есть еще одна возможность. Просто открываем форму подключенной обработки. Без каких либо ссылок.
ОткрытьФорму("ВнешняяОбработка.ПодключеннаяОбработка.Форма.Форма",
			Новый Структура, 
			ЭтаФорма,,,, 
			Новый ОписаниеОповещения("ОткрытиеПодключеннаяОбработкаЗавершение", ЭтаФорма));
10. maraty 292 17.01.22 16:28 Сейчас в теме
(8) Поправлю себя. Во втором варианте ссылка все таки нужна.
Необходимо на сервере предварительно инициализировать обработку.
ОбработкаЗаполнения = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта", ИмяОбработки);
ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ОбработкаЗаполнения);

А потом уже ОткрытьФорму(...), как написал ранее.
6. quazare 2137 16.01.22 16:14 Сейчас в теме
(5) честно сказать, пару лет наверное не писал внешних обработок (когда ушел с УПП) - сейчас, обычно использую общие модули в расширениях
7. quazare 2137 16.01.22 17:43 Сейчас в теме
должно это работать так - вы получаете обработку из справочника внешних обработок - сохраняете ее "в темп" и запускаете ее от туда.
9. quazare 2137 17.01.22 04:47 Сейчас в теме
ВнешняяФорма = Справочники.ВнешниеОбработки.НайтиПоНаименованию("Имя обработки");
    
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ВнешняяФорма.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
    
Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
Форма.Открыть();
Показать
Оставьте свое сообщение
Вакансии
Разработчик 1С
Тверь
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Руководитель проектов внедрения 1С:УХ
Краснодар
зарплата от 150 000 руб.
Полный день

Программист 1С
Красноярск
зарплата до 230 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 190 000 руб.
Полный день