Загрузка данных


Функция МетодДоступен(Компонента, ИмяМетода)

	Попытка
		Выполнить("Компонента." + ИмяМетода + "()");
		Возврат Истина;
	Исключение
		// "Метод объекта не обнаружен" — метода нет.
		// "Недостаточно фактических параметров" и прочее — метод есть.
		Возврат Найти(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()), "не обнаружен") = 0;
	КонецПопытки;

КонецФункции
В ОтправитьВКафку сразу после создания компоненты:
ЕстьПакет = МетодДоступен(Компонента, "ОтправитьПакетСРезультатом");
	ЕстьТаймаут = МетодДоступен(Компонента, "УстановитьТаймаутОчисткиПродюсера");

	ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Информация, , ,
		СтрШаблон("Сборка компоненты: пакетная отправка %1, таймаут очистки %2.",
			?(ЕстьПакет, "есть", "НЕТ"), ?(ЕстьТаймаут, "есть", "НЕТ")));

	Если ЕстьТаймаут Тогда
		Компонента.УстановитьТаймаутОчисткиПродюсера(60000);
	КонецЕсли;
Дальше ЕстьПакет передавай в ОтправитьПакетами и на нём же ветвись — вместо Попытка вокруг вызова. Так ты в журнале сразу видишь, какая сборка отработала, и молчаливых переходов на фолбэк больше не будет.
Остановка продюсера
ОчередьОчищена = Истина;

	Попытка
		ОчередьОчищена = Компонента.ОстановитьПродюсера();
	Исключение
		Попытка
			Компонента.ОстановитьПродюсера();
			// 1.4.4: процедура, подтверждения flush нет — считаем успехом.
		Исключение
			ОчередьОчищена = Ложь;
			ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , ,
				ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
		КонецПопытки;
	КонецПопытки;
Проверка результата отправки — обязательно так
Успешно = (РезультатОтправки = 0) ИЛИ (РезультатОтправки = Истина);