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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.03.2003, 17:20   #1  
Gustow is offline
Gustow
Участник
 
6 / 10 (1) +
Регистрация: 10.06.2002
Журнал инвентаризации
Ситуация - программно заполняю журнал инвентарицаций (InventJournalTrans, InventTrans, InventSum, InventDim)
Если дату инвентаризации указываем сегодняшнюю системную, то разноска проходит успешно.
Если нет - ошибка с датой проводки.
Создаю запись в журнале инвентаризаций вручную для более ранней даты.
не наблюдаю отличий по датам с записями созданными программно в (InventJournalTrans, InventTrans, InventSum)
куда копать?
Резервирование номенклатуры выключено.
Старый 06.03.2003, 05:51   #2  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
1) напиши сообщение об ошибке
2) покажи код которым добавляешь строки
__________________
С уважением, Вячеслав.
Старый 06.03.2003, 07:06   #3  
Gustow is offline
Gustow
Участник
 
6 / 10 (1) +
Регистрация: 10.06.2002
Создаю журнал инвентаризации №40.
Создаю вручную строку с номенклатурой 0959429900
Пытаюсь сдублировать запись с помощью нижеприведенного фрагмента.

=====================================================
InventJournalTrans IJT ;
InventJournalTrans IJT1 ;
InventTrans InventTrans ;
InventSum InventSum ;
InventDim InventDim ;
;
select firstonly IJT1 where IJT1.JournalID == '38' ;
// InventJournalTrans
IJT.JournalId = IJT1.JournalId ;
IJT.TransDate = str2date('01.01.03',123) ; //На другую дату
IJT.Voucher = IJT1.Voucher ;
IJT.JournalType = IJT1.JournalType ;
IJT.ItemId = IJT1.ItemId ;
IJT.CostAmount = IJT1.CostAmount ;
IJT.Counted = IJT1.Counted ;
IJT.Qty = IJT1.Qty ;
IJT.CostPrice = IJT1.CostPrice ;
IJT.PriceUnit = IJT1.PriceUnit ;
IJT.InventDimId = IJT1.InventDimId ;
IJT.insert() ;

select InventDim where InventDim.inventDimId == IJT1.InventDimId ;

ttsbegin;
IJT.inventDimId = InventDim::findOrCreate(inventDim).inventDimId;
ttscommit;

InventMovement::setAutoReserving(IJT);

if (IJT.inventDimId != inventDim.inventDimId)
{
inventDim.data(InventDim::find(IJT.inventDimId));
inventDim.write();
}

// InventTrans
InventTrans.ItemId = IJT.ItemId ;
InventTrans.Qty = IJT.Qty ;
InventTrans.TransType = InventTransType::InventCounting ; // Инвентаризация
InventTrans.TransRefId = IJT.JournalId ;
InventTrans.InventTransId = IJT.InventTransId ;
InventTrans.StatusReceipt = StatusReceipt::Ordered ; // Заказано
InventTrans.DateExpected = IJT.TransDate ;
InventTrans.ValueOpen = InventTransOpen::Yes ;
InventTrans.Direction = InventDirection::Receipt ;
InventTrans.DateStatus = IJT.TransDate ;
InventTrans.inventDimId = IJT.InventDimId ;
InventTrans.ValueOpenSecCur_RU = InventTransOpen::Yes ;
InventTrans.InventTransId = IJT.InventTransId ;
InventTrans.insert();

// добавляем суммы
select InventSum
where InventSum.ItemId == IJT.ItemId &&
InventSum.InventDimId == IJT.InventDimId ;
if (InventSum.RecId == 0)
{
InventSum.ItemId = IJT.ItemId ;
InventSum.Ordered = IJT.Counted ;
InventSum.InventDimId = IJT.InventDimId ;
InventSum.LastUpdDateExpected = IJT.TransDate ;
}
else
{
InventSum.LastUpdDateExpected = IJT.TransDate ;
InventSum.Ordered += IJT.Counted ; // суммируем
}

InventSum.write() ;
=====================================================
сообщение об ошибке
=====================================================
Error Разноска - Журнал\Номер журнала:
40\Документ ГК:
Inv000035\Дата:
06.03.2003\Номенклатура: 0959429900
Дата выполнения проводки неправильна

Info Разноска - Журнал Журнал не был проведен
======================================================
Старый 06.03.2003, 09:36   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Странно
Странно, что это вообще работает..
1. Так как insert на InventJournalTrans должен сам создавать InventTrans
и уж тем более insert на InventTrans сам обновляет InventSum
2. Каждый журнал должен иметь свой 1 или несколько Voucher-ов (и записей InventJournalVoucher). Следовательно копирование поля Voucher из другого журнала неверно.
3. Voucher + TransDate + JournalId - связь InventJournalTrans и InventJournalVoucher
И именно по этой связи производится разноска
Старый 06.03.2003, 09:56   #5  
Gustow is offline
Gustow
Участник
 
6 / 10 (1) +
Регистрация: 10.06.2002
Спасибо за ответ.
Я имел ввиду создание запией внутри одного журнала.
Т.е. с JournalId, Voucher проблем нет.
С insert понятно, а вот связь
InventJournalTrans и InventJournalVoucher
я не учел.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Глюки SP3. Журнал инвентаризации maxsmirnov DAX: Программирование 2 19.04.2006 21:35
Номер документа в ГК. Журнал инвентаризации. DreamCreator DAX: Программирование 1 21.03.2005 16:07
Мультипользовательский ввод в журнал инвентаризации OliaM DAX: Функционал 11 01.12.2004 23:43
Журнал спецификаций Lol14 DAX: Функционал 13 16.06.2003 13:10
Журнал инвентаризации sk45 DAX: Функционал 4 03.06.2003 12:59
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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