AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.12.2012, 13:02   #1  
Kainix is offline
Kainix
Участник
 
47 / 96 (4) ++++
Регистрация: 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
За это сообщение автора поблагодарили: Pustik (2), S.Kuskov (3).
Старый 12.12.2012, 14:07   #2  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,941 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
А какие именно глюки с корреспонденцией ?
Старый 12.12.2012, 14:18   #3  
Kainix is offline
Kainix
Участник
 
47 / 96 (4) ++++
Регистрация: 22.11.2007
не корреспондирует проводки, когда одинаковый счет и аналитики, и при этом несколько наборов аналитик. Пишет ошибка в корреспонденции, но вручную все корреспондирует
Старый 12.12.2012, 14:49   #4  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от Kainix Посмотреть сообщение
Добрый день.
Такой вопрос возник, зачем в классе LedgerVoucherTransList, в методе add, используют строковый ключ для мапы?
Цитата:
Сообщение от Kainix Посмотреть сообщение
Если ключ текстовый то перебор идет не в порядке записи проводок.
В Axapta 3.0 сортировка(упорядочивание) символьных строк была идентична сортировке, если бы эти символьные строки можно было бы преобразовать в число. Поэтому в старой версии все работало правильно.В АХ2009 сортировка символьных строк изменилась.Существенную роль в сортировке стал играть символ дефиса и количество символов в строке. Интересную версию рассказал AndyD. Подробнее здесь Не корректная сортировка в Map-e и Set-е. AX2009 RU5.
Скорее всего, при переходе на новую версию, здесь на это просто не обратили внимание.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
За это сообщение автора поблагодарили: Kainix (1).
Старый 12.12.2012, 15:09   #5  
Kainix is offline
Kainix
Участник
 
47 / 96 (4) ++++
Регистрация: 22.11.2007
Спасибо за ответ, но это пол беды.
На что может повлиять, такое изменение в классе LedgerVoucherTransList. я думаю, не на что, но хочется убедится, если так, то ошибка устраняется, переводом ключа на тип int.
Старый 12.12.2012, 16:28   #6  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от Kainix Посмотреть сообщение
Спасибо за ответ, но это пол беды.
На что может повлиять, такое изменение в классе LedgerVoucherTransList. я думаю, не на что, но хочется убедится, если так, то ошибка устраняется, переводом ключа на тип int.
Сложно сходу ответить. Но, предварительно посмотрев, вроде от этого класса никто не унаследован. Там, где к нему обращаются напрямую, используют метод add (где уже все должно быть настроено на int). И в этом классе нет метода, который возвращает этот map.Так что, по первичным предварительным признакам ничего страшного быть не должно.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 13.12.2012, 09:27   #7  
Kainix is offline
Kainix
Участник
 
47 / 96 (4) ++++
Регистрация: 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;
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Странное Периодическое и Ручное Сопоставление проводок клиента в Акс 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

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:19.