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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.10.2004, 13:05   #1  
Oz is offline
Oz
Участник
Аватар для Oz
 
293 / 51 (2) ++++
Регистрация: 22.08.2002
Адрес: Москва
Возврат по закупке с накладными расходами через немедленное получение
Уважаемые коллеги!

У нас стоит Axapta 3.0 SP3
У меня юзеры провели накладную по закупке с накладными расходами. Выяснилось, что товар в строке был не тот. Решили сторнировать через возврат, причем используя ввод отрицательного количества в поле "Немедленное получение". Как бы была надежда, что в этом случае правильно сторнируется проводка по накладным расходам.
Увы, провести в этом случае накладную не удалось: система выдала ошибку "Объект LedgerBondTransObject_RU не инициализирован". При детальном рассморении вопроса выяснилось, что ошибка происходит на участке коде метода MarkupAdjustment \ adjustCreditNote:
PHP код:
currencyBondLog conNull();
bondLog ledgerBondClient.currentLog();
for (
1<= conlen(bondLog); i++)
{
       if (
ledgerBondClient.bondTransObject(conPeek(currencyBondLogi)).ledgerTransObject().parmCurrencyCode() == currencyCode)
        {
            
currencyBondLog += conPeek(currencyBondLogi);
        }

на строке
PHP код:
if (ledgerBondClient.bondTransObject(conPeek(currencyBondLogi)).ledgerTransObject().parmCurrencyCode() == currencyCode
проблема в том, что метод bondTransObject должен вернуть объект класса LedgerBondTransObject_RU по переданному индексу (conPeek(currencyBondLog, i)). Очевидно по вышеуказанному коду, что этот индекс для i==1 может быть только 0.
У ledgerBondClient запрошенного объекта с индексом 0 не оказалось.
В этом нет ничего удивительного, если учесть, что добавление объекта класса LedgerBondTransObject_RU происходит ТОЛЬКО в методе LedgerBondTransList_RU \ add, код которого приведен ниже:
PHP код:
public boolean add(LedgerBondTransObject_RU _bondTransObject)
{
    
boolean ret true;

    if (! 
_bondTransObject.vrefId())
    {
        
error(Error::wrongUseOfFunction(funcName()));
        return 
false;
    }
    
ret transMap.insert(_bondTransObject.vrefId(), _bondTransObject);
    
lastVrefId _bondTransObject.vrefId();

    return 
ret;

_bondTransObject.vrefId() и есть тот самый индекс, по которому впоследствии и происходит поиск этого объекта в коллекции LedgerBondTransList_RU.
Обратите внимание, что судя по коду, индекс добавляемого объекта НЕ МОЖЕТ БЫТЬ НУЛЕВЫМ!
То есть, исходя из этого, приведенный код метода MarkupAdjustment \ adjustCreditNote не будет работать ни при каких обстоятельствах!
Итак, то ли лыжи не едут, то ли я... чего то не понимаю. Может застрелиться?

Коллеги! Может кто нибудь сталкивался с такой проблемой и даже смог ее обойти?
Или мне забить на указанный в начале поста способ возврата товара и попробовать другие (новую строку с отрицательным количеством, например), начхав на то, что проводку по накладным расходам при этом сторнировать нормально придется вручную?

Заранее благодарен!
__________________
Здесь могла быть Ваша реклама!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
сторнирование накладной по закупке с накладными расходами bes DAX: Функционал 9 13.02.2015 17:29
Немедленное получение Benq DAX: Функционал 3 17.03.2008 13:27
Возврат товара поставщику через 76 счет tolstjak DAX: Функционал 1 27.01.2005 15:32
Тип "потребление по закупке (возврат)" asdf DAX: Функционал 8 08.12.2004 16:36
Не сторнируются проводки по накладной с накладными расходами visual DAX: Функционал 2 10.11.2004 13:34

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

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

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