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

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

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

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

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

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

Показать


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


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

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

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

Ведущий аналитик 1С (ERP, ЗУП)
Краснодар
зарплата от 150 000 руб.
Полный день

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

Администратор 1С
Москва
зарплата от 150 000 руб. до 200 000 руб.
Полный день

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