Читается только настоящий заголовок сообщения обмена; затем чтение явно отменяется.
Где и как запускать
Сервер собственного учебного стенда; отменяемое чтение только заголовка.
Подготовка
Сервер собственной отдельной учебной базы. ПутьКСвоемуСообщению — параметр процедуры Строка с полным путём к своему уже существующему файлу обмена.
Файл должен быть штатно сформирован вторым узлом того же собственного учебного плана обмена и адресован текущему узлу этого стенда. Идентификаторы плана и узлов должны совпадать. Чужой файл и самодельный XML без заголовка не подходят.
Нужны права обмена своим планом. Не выполняйте опыт одновременно с реальным обменом: НачатьЧтение временно блокирует запись узла.
Код — тело своей отдельной серверной процедуры. Он не вызывает ПрочитатьИзменения или ЗакончитьЧтение; ПрерватьЧтение снимает блокировку без изменения узла.
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ПутьКСвоемуСообщению);
Сообщение = ПланыОбмена.СоздатьЧтениеСообщения();
Начато = Ложь;
Попытка
Сообщение.НачатьЧтение(Чтение, ДопустимыйНомерСообщения.Очередной);
Начато = Истина;
Сообщить("Номер в собственном заголовке: " + Строка(Сообщение.НомерСообщения));
Сообщение.ПрерватьЧтение();
Начато = Ложь;
Исключение
Если Начато Тогда
Сообщение.ПрерватьЧтение();
КонецЕсли;
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();Разбор по шагам
Подготовьте реальный входящий учебный файл.
Передайте выбранное правило номера вторым аргументом.
Отмените чтение и закройте XML в обеих ветках.
Как проверить результат
Очередной требует ровно НомерПринятого + 1 у соответствующего узла.
Даже Любой не отменяет проверки известности плана / узла и остальных данных заголовка.
Если заголовок принят, установленная блокировка освобождается ПрерватьЧтение. НомерПринятого не продвигается; проверка заголовка не равна загрузке данных. BSL и обмен при сборке не выполнялись.
Ожидаемый результат
Есть настоящий источник сообщения, осмысленное правило и освобождение ресурса без приёма данных.
На что обратить внимание
Любой не делает повторную загрузку сообщения идемпотентной; пример намеренно не применяет тело.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.