Пропустить не просто выставляет флаг: метод уже меняет позицию. Поэтому проверяем второй товар сразу после него, не вызывая Прочитать повторно.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Документы и все узлы создаются в памяти на сервере. Внешние XML, DTD, сетевые схемы и файлы не загружаются.
Сначала оставьте учебные имена и значения неизменёнными. После контрольного запуска меняйте по одному условию.
В этом блоке каждый пример создаёт собственное дерево DOM в памяти. Файлы, сеть, данные документов и справочников не используются.
Открыть у ЧтениеУзловDOM принимает узел, а у ЗаписьУзловDOM — документ-владелец будущих узлов. Это не открытие файла.
Документ = Новый ДокументDOM("", "products");
Корень = Документ.ЭлементДокумента;
Для Номер = 1 По 2 Цикл
Товар = Документ.СоздатьЭлемент("product");
Товар.УстановитьАтрибут("code", ?(Номер = 1, "A-01", "B-02"));
Товар.ДобавитьДочерний(Документ.СоздатьТекстовыйУзел(?(Номер = 1, "Книга", "Ручка")));
Корень.ДобавитьДочерний(Товар);
КонецЦикла;
Чтение = Новый ЧтениеУзловDOM;
Чтение.Открыть(Документ);
Попытка
Сообщить(Чтение.ПерейтиКСодержимому() = ТипУзлаXML.НачалоЭлемента);
Сообщить(Чтение.Имя = "products");
Если Не Чтение.Прочитать() Тогда
ВызватьИсключение "Не найден первый учебный товар";
КонецЕсли;
Сообщить(Чтение.Имя = "product");
Сообщить(Чтение.ПолучитьАтрибут("code") = "A-01");
Чтение.Пропустить();
Сообщить(Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента);
Сообщить(Чтение.Имя = "product");
Сообщить(Чтение.ПолучитьАтрибут("code") = "B-02");
Если Не Чтение.Прочитать() Тогда
ВызватьИсключение "Не найден текст второго товара";
КонецЕсли;
Сообщить(Чтение.Значение = "Ручка");
Пока Чтение.Прочитать() Цикл
Сообщить("Остаток: " + Строка(Чтение.ТипУзла) + " " + Чтение.Имя);
КонецЦикла;
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Разбор по шагам
ПерейтиКСодержимому на этом документе выбирает корень products. Прочитать переводит на первый product.
Атрибут A-01 проверяем без изменения позиции. Затем Пропустить обходит весь первый product с его текстом.
Сразу после Пропустить позиция находится на втором product. Если здесь лишний раз вызвать Прочитать, его начало и атрибут code будут пропущены.
Прочитать от второго начала выбирает текст Ручка. Оставшийся поток до конца завершаем обычным циклом.
Как проверить результат
Восемь логических сообщений дают Истина.
Книга не обрабатывается как текст: её ветка пропущена. Обработан B-02 и текст Ручка.
Ожидаемый результат
Показано, как не потерять следующий элемент после пропуска поддерева.
На что обратить внимание
После Пропустить может оказаться конец источника, конец родителя или пробельный узел — зависит от конкретного дерева.
Фиксированное количество вызовов Прочитать не заменяет полноценный цикл разбора внешнего XML с проверкой ТипУзла.
Пропустить не удаляет товар из исходного DOM: это только навигация читателя.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.