Показать сообщение отдельно
Старый 17.01.2012, 18:16   #14  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
После использования методов first() и next(), метод itemRefId_ru() возвращает как раз не ерунду. Достаточно посмотреть на код из LedgerVoucherObject.Post().

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