|
![]() |
#1 |
Участник
|
Цитата:
Т.е., по большому счету, именно что "ерунду" возвращает. Некое число, не имеющее никакого отношения к идентификации. Просто некая возрастающая последовательность чисел. Может, там просто счетчик надо было поставить ![]() ============================= И, кстати, насчет идентификации... На всякий случай напомню, что MAP автоматически упорядочивает список по значению ключа. Но порядок следования чисел в символьном представлении отличается от порядка следования в числовом представлении. Так что, и с этой стороны данный класс "не подарок" ![]() X++: static void Job_Test(Args _args) { MAP transObject = new Map(Types::String, Types::Integer); MapIterator transIterator; ; transObject.insert('2', 1); transObject.insert('11', 1); transIterator = new MapIterator(transObject); while (transIterator.more()) { info(transIterator.key()); // Сначала будет "11", потом "2" transIterator.next(); } } Я просто не вижу зачем вообще нужно значение refId_RU при переборе элементов через first() и next(). Не вижу его использование как идентификатора именно после этих методов. После метода add() - есть использование. А после first(), next() - нет.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: b_nosoff (1). |
![]() |
#2 |
Читатель
|
![]() Цитата:
![]() |
|
![]() |
#3 |
Участник
|
Цитата:
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
![]() |
#4 |
Moderator
|
Цитата:
Д 10.01 К 60.01 200 руб Д 10.02 К 60.01 300 руб То я могу без малейшего ущерба поменять их порядок на Д 10.02 К 60.01 300 руб Д 10.01 К 60.01 200 руб Так что порядок итерирования тут не важен в принципе... |
|
![]() |
#5 |
Читатель
|
В данном конкретном случае - ни на что. Но это не отменяет ожидания последовательности от системы. Нефиг было добавлять в конце названия объекта List.
Уж если собирались сделать выборку элементов в порядке добавления (а здесь, я уверен, именно этот случай), то извольте реализовать как следует. Иначе могли бы и не заморачиваться с Map, а тупо List использовать (что, в принципе, как раз бы и помогло достичь указанной цели). Да тут-то как раз все понятно, просто внутреннее значение начинается с нуля, а возвращаемое параметром - с единицы ![]() |
|
|
За это сообщение автора поблагодарили: Владимир Максимов (2). |
![]() |
#6 |
Moderator
|
Сохраненное значение возвращается методом ledgerVoucherObject.lastRefid_ru(). Который, в свою очередь, активно вызывается и используется методом ledgerBondServer.splitTrans() Фактически этот метод вынимает из lastRefId идентификатор последнего обрабатываемого постинга, который сейчас разносится. Метод splitTrans(), как раз таки вызывается по цепочке ledgerVoucherObject.Post()->LedgerVoucherTransObject.post()->LedgerVoucher.postGroup()->ledgerBondServer.splitTrans(). То есть - это как раз позволяет классу корреспонденции добраться до контекста верхнего уровня и понять чего же это мы сейчас разбиваем в списке проводок (в случае детального постинга - без группировки сходных разносок).
Последний раз редактировалось fed; 17.01.2012 в 19:33. |
|
![]() |
#7 |
Участник
|
Цитата:
Однако, проблема не в этом. Метод LedgerVoucherTransList.itemRefId_RU() возвращает значение refId_RU + 1. В смысле, на 1 больше, чем значение переменной refId_RU. В методе next() этой переменной присваивается значение идентификатора текущего элемента. Значит, в методе ledgerBondServer.splitTrans() идет сравнение не с текущим идентификатором, а со следующим? Что-то здесь не правильно...
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
|