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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.10.2005, 14:16   #10  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от mazzy
Я дополнил статью твоим особым мнением.
Эх... Неточно я процитирован

Во-первых, в исходном примере надо писать не
Код:
inventJournalTrans.initFromJournalTable();
а
Код:
journalTransData.initFromJournalTable();
У inventJournalTrans такого метода просто нет. А вообще я предлагал вообще удалить все обращения к JournalTableData и JournalTransData и вместо строк:
Код:
//Инициализируем класс для операций с записью в таблице журнала
journalTableData    = JournalTableData::newTable(inventJournalTable);

//Очищаем поля записи
inventJournalTrans.clear();
// Инициализируем класс для операций с записью в таблице строк журнала
journalTransData    =
    journalTableData.JournalStatic().newJournalTransData(
                                         inventJournalTrans,
                                         journalTableData);
написать
Код:
inventJournalTrans.initFromInventJournalTable(inventJournalTable);
Ну, clear() можно оставить, конечно.

Во-вторых, "сложная конструкция, которая считает остаток", включает в себя так же инициализацию InventDimParm, которая, честно сказать, никому не нужна. В общем, из исходного текста надо убрать
Код:
//Инициализируем активную аналитику из настроке журнала для расчета количества
inventDimParm = InventJournalTable::journalId2inventDimParm(inventJournalTable.JournalId);

//*** Специфика заполнения строки для журнала инвентаризации ***
//Подсчитаем и запишем значение количества запасов в наличии на текущую дату
inventJournalTrans.inventOnHand = InventSumDatePhysicalDim::onHandQty(
                                      inventJournalTrans.transDate,
                                      inventJournalTrans.itemId,
                                      inventDim,
                                      inventDimParm);
а добавить
Код:
inventJournalTrans.inventMovement().journalSetInventDimField();
В итоге, мой вариант метода следующий:
<div class='XPPtop'>X++</div><div class='XPP'>#Define.JournalNum([color=:red]"000015_061"[/color])
#Define.ItemId([color=:red]"ESB-007"[/color])
#Define.LocationId([color=:red]"MW"[/color])
#Define.QtyCounted(101)

InventJournalTrans      inventJournalTrans;
InventJournalTable      inventJournalTable;
InventTable             inventTable;

InventDim               inventDim;
;

inventTable = inventTable::find(#ItemId);
[color=:blue]if[/color] (!inventTable)
 [color=:blue]throw[/color] error(strfmt(InventTable::txtNotExist(), #ItemId));

[color=:blue]ttsbegin[/color];
 inventJournalTable  = inventJournalTable::find(#JournalNum, [color=:blue]true[/color]);
 [color=:blue]if[/color] (!inventJournalTable)
   [color=:blue]throw[/color] error(strfmt(InventJournalTable::txtNotExist(), #JournalNum));

 inventJournalTrans.clear();
 inventJournalTrans.initFromInventJournalTable(inventJournalTable);
 inventJournalTrans.initFromInventTable(inventTable);
 inventJournalTrans.transDate = systemDateGet();

 inventDim = inventJournalTrans.inventDim();
 inventDim.InventLocationId = #LocationId;
 inventJournalTrans.inventDimId  =  InventDim::findOrCreate(inventDim).inventDimId;
 inventJournalTrans.inventMovement().journalSetInventDimField(inventDim, [color=:blue]fieldNum[/color](InventDim, InventLocationId));

 inventJournalTrans.Counted = #QtyCounted;
 inventJournalTrans.inventMovement().JournalSetCounted();
 inventJournalTrans.insertFromCode();
[color=:blue]ttscommit[/color];</div>
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
 


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

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

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