После использования методов first() и next(), метод itemRefId_ru() возвращает как раз не ерунду. Достаточно посмотреть на код из LedgerVoucherObject.Post().
Просто ошибка эта может стрельнуть только в случае, если происходит повторный вызов first() на полпути, так сказать. Типа начали итерацию, поитерировали, а потом не дожидаясь исчерпания итератора (возвращения значения false методом next()), попробовали вызвать first(). В этом случае, следующий вызов itemRefId_ru() вернет значение рассинхронизированное с методом item().
Однако, я в коде стандартных классов, такого места не нашел. Везде вызывается first() и потом итерируется до тех пор, пока next() не вернет false, сбросив, таким образом, refId_ru в исходное нулевое значение.
Так что на первый взгляд:
- Если вы не изменяли стандартные классы корреспонденции и разноски в ГК,отсутствие инициализации никогда не должно приводить к ошибкам.
- Возможно, отсутствие инициализации - это баг.А возможно и нет. Я не уверен, что по идеологии работы с итераторами, их можно многократно итерировать, не закончив предыдущую итерацию. Мне, конечно тоже отсутствие инициализации глаз режет, но не уверен что это формально можно считать ошибкой...