AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 12.12.2012, 13:02   #1  
Kainix is offline
Kainix
Участник
 
47 / 96 (4) ++++
Join Date: 22.11.2007
Хранение проводок LedgerVoucherTransList
Добрый день.

Такой вопрос возник, зачем в классе LedgerVoucherTransList, в методе add, используют строковый ключ для мапы? Из за этого возникают глюки с корреспонденцией, при условии что корреспондируется один счет и уровень детализации Сводка. Вызвано это тем когда дебетовая и кредитовая части проводки разрываются. Если ключ текстовый то перебор идет не в порядке записи проводок. Пример. загружаем 15 (30 ledgerTrans) проводок, начинаем считывать, порядок будет следующий
1 - 2 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 -20 -3 - 21 -22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 4 - 5 - 6 - 7 - 8 - 9 из за такого порядка сбивается корреспонденция. Если строковый ключ заменить на int то все ок. Хочу спросить на что такая замена может повлиять?
Ax 2009 Ru 6
This post has been rated by: Pustik (2), S.Kuskov (3).
Old 12.12.2012, 14:07   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,996 / 3293 (117) ++++++++++
Join Date: 12.10.2004
Location: Москва
Blog Entries: 2
А какие именно глюки с корреспонденцией ?
Old 12.12.2012, 14:18   #3  
Kainix is offline
Kainix
Участник
 
47 / 96 (4) ++++
Join Date: 22.11.2007
не корреспондирует проводки, когда одинаковый счет и аналитики, и при этом несколько наборов аналитик. Пишет ошибка в корреспонденции, но вручную все корреспондирует
Old 12.12.2012, 14:49   #4  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Join Date: 04.06.2004
Quote:
Originally Posted by Kainix View Post
Добрый день.
Такой вопрос возник, зачем в классе LedgerVoucherTransList, в методе add, используют строковый ключ для мапы?
Quote:
Originally Posted by Kainix View Post
Если ключ текстовый то перебор идет не в порядке записи проводок.
В Axapta 3.0 сортировка(упорядочивание) символьных строк была идентична сортировке, если бы эти символьные строки можно было бы преобразовать в число. Поэтому в старой версии все работало правильно.В АХ2009 сортировка символьных строк изменилась.Существенную роль в сортировке стал играть символ дефиса и количество символов в строке. Интересную версию рассказал AndyD. Подробнее здесь Не корректная сортировка в Map-e и Set-е. AX2009 RU5.
Скорее всего, при переходе на новую версию, здесь на это просто не обратили внимание.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
This post has been rated by: Kainix (1).
Old 12.12.2012, 15:09   #5  
Kainix is offline
Kainix
Участник
 
47 / 96 (4) ++++
Join Date: 22.11.2007
Спасибо за ответ, но это пол беды.
На что может повлиять, такое изменение в классе LedgerVoucherTransList. я думаю, не на что, но хочется убедится, если так, то ошибка устраняется, переводом ключа на тип int.
Old 12.12.2012, 16:28   #6  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Join Date: 04.06.2004
Quote:
Originally Posted by Kainix View Post
Спасибо за ответ, но это пол беды.
На что может повлиять, такое изменение в классе LedgerVoucherTransList. я думаю, не на что, но хочется убедится, если так, то ошибка устраняется, переводом ключа на тип int.
Сложно сходу ответить. Но, предварительно посмотрев, вроде от этого класса никто не унаследован. Там, где к нему обращаются напрямую, используют метод add (где уже все должно быть настроено на int). И в этом классе нет метода, который возвращает этот map.Так что, по первичным предварительным признакам ничего страшного быть не должно.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Old 13.12.2012, 09:27   #7  
Kainix is offline
Kainix
Участник
 
47 / 96 (4) ++++
Join Date: 22.11.2007
Значит бага с корреспонденцией, одного счета и тогоже счета с одинаковыми аналитиками, исправляется следующим образом.
В классе LedgerVoucherTransList
Метод new
X++:
void new()
{
    // + iau для корректной корреспонденции проводок, необходимо проводки по порядку считывать, для этого используем ключ int
    
    //transObject  = new Map(Types::String, Types::Class);

    transObject  = new Map(Types::Integer, Types::Class); 
    // - iau для корректной корреспонденции проводок, необходимо проводки по порядку считывать, для этого используем ключ int
    
}
Метод add
X++:
public boolean add(LedgerVoucherTransObject _ledgerTransObject)
// </GEEU>
{
    str keyString;
    ;
    // + iau для корректной корреспонденции проводок, необходимо проводки по порядку считывать, для этого используем ключ int    

    //keyString = strfmt('%1', this.elements());
    //transObject.insert(keyString, _ledgerTransObject);
    
    transObject.insert(this.elements(), _ledgerTransObject);
    // - iau для корректной корреспонденции проводок, необходимо проводки по порядку считывать, для этого используем ключ int
    // <GEEU>

    refId_RU = this.elements() - 1;

    // </GEEU>
    return true;
}
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Странное Периодическое и Ручное Сопоставление проводок клиента в Акс 2009 Aquarius DAX: Функционал 3 17.05.2012 01:53
Создание скл проводок при закр склада (AX 3 SP2). VictorSH DAX: Функционал 16 13.02.2008 19:39
Разбиение проводок при сопоставлении по поставщикам lugachy DAX: Функционал 11 24.05.2005 17:10
3.0, Модуль: ОС, операция: Разноска строк журнала ОС (с предварит просм проводок) MagisterLudi DAX: Функционал 2 07.10.2003 18:55
Исследование возможности удаления проводок sguryev DAX: База знаний и проекты 33 06.02.2003 16:42

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 04:34.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.