Обработчик сообщения реализуется при помощи объекта конфигурации "Обработка". Для того, чтобы из этих обработок можно было построить конвейер, все обработчики должны реализовывать единый интерфейс.
Самая простая реализация такого интерфейса может выглядеть, например, следующим образом:
// Модуль объекта "Обработка" - ОБРАБОТЧИК
Перем _Следующий; // Следующий обработчик конвейера
Функция Следующий(Обработчик = Неопределено) Экспорт
Если Обработчик <> Неопределено Тогда
_Следующий = Обработчик;
КонецЕсли;
Возврат _Следующий;
КонецФункции
Процедура Обработать(Сообщение, Параметры) Экспорт
// Опционально:
// Принимаем решение об обработке сообщения
Если Параметры.ЭтоНеМоё Тогда
ПередатьДругому(Сообщение, Параметры);
Возврат;
КонецЕсли;
// Собственный код обработчика сообщения
// Опционально:
// Принимаем решение о передаче сообщения дальше по конвейеру
// или о прерывании цепочки выполнения обработчиков
Если МожноПродолжитьОбработку Тогда
ПередатьДругому(Сообщение, Параметры);
КонецЕсли;
КонецПроцедуры
Процедура ПередатьДругому(Сообщение, Параметры)
Если _Следующий = Неопределено Тогда
Возврат; // Мы - последний обработчик в конвейере
КонецЕсли;
_Следующий.Обработать(Сообщение, Параметры);
КонецПроцедуры
Программное создание конвейера обработки сообщений в таком случае может выглядеть так:
// Где-то в коде 1С ...
Обработчик1 = Обработки.Обработка1.Создать();
Обработчик2 = Обработки.Обработка2.Создать();
Обработчик3 = Обработки.Обработка3.Создать();
Обработчик1.Следующий(Обработчик2).Следующий(Обработчик3);
Параметры = Новый Структура("Результат", "ВсёХорошо");
Сообщение = Новый Структура("ТелоСообщения", "Поехали!");
Обработчик1.Обработать(Сообщение, Параметры);