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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.06.2004, 10:18   #1  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
Работа с InventDim...
Вот джобик, которые генерит закупку автоматом. Все генерится - и заголовок закупки, и линия.
Мне нужно задать склад закупки. Я так понял, что для этого нужно идти в InventDim. В конце джобика я делаю выборку, нахожу нужную строку в инвент диме, задаю склад, он меняется (инфо выдает нужный мне склад), но строка не апдейтится, в итоге склад не меняется! В чем может быть дело? Спасибо.

// Declare
PurchTable purchTable;
NumberSeq numberSeq;
PurchLine PurchLine;
InventDim InventDim;
;

TTSBegin;
purchTable.clear();

purchTable.PurchaseType = PurchaseType::Purch;
numberSeq = NumberSeq::newGetNum(PurchParameters::numRefPurchId());
purchTable.PurchId = numberSeq.num();
purchTable.initValue();
purchTable.OrderAccount = "OST";
purchTable.InvoiceAccount = "OST";
purchTable.CurrencyCode = "RUR";
purchTable.VendGroup = "400";
purchTable.LanguageId = "ru";
purchTable.transferOrderAccount();

if (purchTable.validateWrite())
{
purchTable.insert();
}

// Теперь лепим строку

purchLine.clear();
purchLine.PurchId=purchTable.PurchId;
info(purchLine.PurchId);
purchLine.ItemId="391731-0001"; // номенклатура
purchLine.PurchPrice=11; // цена
purchLine.PurchQty=3; //количество
purchLine.CurrencyCode='RUR';
purchLine.initValue();
purchLine.createLine(true, true, true, true, true, true);

select forupdate InventDim
where InventDim.inventDimId == purchLine.InventDimId;
{InventDim.InventLocationId= "РубМос";
info(InventDim.InventLocationId);
InventDim.update();
}

TTSCommit;
}
Старый 17.06.2004, 10:26   #2  
YellowSubmarine is offline
YellowSubmarine
Участник
 
111 / 12 (1) ++
Регистрация: 18.12.2002
InventDim.update надо в скобочках поставить True
Старый 17.06.2004, 10:47   #3  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
по-моему это не есть хорошо вручную изменять InventDim.
во-первых вполне может быть что такой набор аналитики уже существует в табличке
во-вторых ссылку данную аналитику может использовать другая какая-нибудь запись, помимо редактируемой/создаваемой.

Для данных целей лучше использовать метод InventDim::FindOrCreateInventLocationId(InventLocationId)
Старый 17.06.2004, 11:58   #4  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
Спасибо, но
1. У меня номер партии автоматом генерится, и он уникальный.
2. Это создается закупка для ввода начальных остатков, так что больше некому ссылаться на эту строчку...
___
Но я не понял, как его надо использовать?
InventDim::FindOrCreateInventLocationId("РубМос")?
Старый 17.06.2004, 12:09   #5  
if_maks is offline
if_maks
Участник
 
226 / 15 (1) ++
Регистрация: 26.08.2003
сделай так:
проинициализируй нужными тебе значениями (склад, партия, цвет - аналитиками) переменную inventDim.
Затем что бы найти нужную тебе аналитику используй метод
InventDim::findOrCreate(inventDim /*- твоя проинициализированная переменная*/ );
метод вернет тебе inventDim - либо с такими аналитиками запись уже существует
либо создаст новую запись в InventDim -ме и вернет ее тебе
соответственно:

inventDim.InventLocationId = "РубМос";
PurchLine.InventDimId = InventDim::findOrCreate(inventDim);
Старый 17.06.2004, 12:11   #6  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
Цитата:
Изначально опубликовано NJD

Но я не понял, как его надо использовать?
InventDim::FindOrCreateInventLocationId("РубМос")?
inventDim = InventDim::FindOrCreateInventLocationId("РубМос");
purchLine.InventDimID = inventDim.InventDimId
Старый 17.06.2004, 12:38   #7  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
Супер! Работает. Спасибо.
Получается, что я так и ГТД могу делать.

InventDim.InventGtdId_RU = '---';
purchLine.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
purchLine.update();
Старый 17.06.2004, 14:03   #8  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
и снова о помощи взываю. раньше у меня номера партий автоматом генерились и всё ок было. а сейчас они пустые... -((
чего делать?
while select Spt_Temp_Perenos
{
// Теперь лепим строку
purchLine.clear();
purchLine.PurchId=purchTable.PurchId;
info(purchLine.PurchId);
purchLine.ItemId=Spt_Temp_Perenos.ItemId; // номенклатура
purchLine.PurchPrice=Spt_Temp_Perenos.PurchPrice; // цена
purchLine.PurchQty=Spt_Temp_Perenos.PurchQty; //количество
purchLine.CurrencyCode='RUR';
//purchLine.РубМос
purchLine.initValue();
purchLine.createLine(true, true, true, true, true, true);

inventDim.InventLocationId = 'недостачи'; // склад недостачи
purchLine.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;

InventDim.InventGtdId_RU = Spt_Temp_Perenos.InventGtdId_RU;
purchLine.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
purchLine.update();
Старый 17.06.2004, 14:28   #9  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
Цитата:
Изначально опубликовано NJD
и снова о помощи взываю. раньше у меня номера партий автоматом генерились и всё ок было. а сейчас они пустые... -((
чего делать?
inventDim.InventLocationId = 'недостачи'; // склад недостачи
purchLine.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;

InventDim.InventGtdId_RU = Spt_Temp_Perenos.InventGtdId_RU;
purchLine.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
purchLine.update();

данный код на самом деле в результате создает ссылку на набор аналитики, где заполнен ТОЛЬКО номер ГТД.
То что было раньше на закупке - теряется.

PHP код:
inventDim inventDim::find(purchLine.InventDimID);
inventDim.inventLocationId "Новый Склад";
inventDim.InventGTDId_RU "Новый Номер ГТД"
purchLine.InventDimID inventDim::findOrCreate(inventDim).inventDimID
За это сообщение автора поблагодарили: Gustav (5).
Старый 17.06.2004, 14:33   #10  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
Ну это я уже понял.-)
И как выйти из сложившейся ситуации?
Старый 17.06.2004, 14:39   #11  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
так как только что было написано.))))
Старый 17.06.2004, 14:42   #12  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
Спасибо. Я стормозил -)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
inventUpd_reservation использование inventDim SHiSHok DAX: Программирование 2 31.03.2007 21:32
InventDim maze DAX: Администрирование 4 07.12.2005 10:59
Можно ли вообще сделать JOIN временной таблицы и InventDim??? Maxim Gorbunov DAX: Программирование 9 05.03.2005 10:39
InventDim.findOrCreateBlank - простое сложно? Pavlo AKA Panok DAX: Программирование 5 25.10.2004 16:50
Как правильно установить связь между двумя записями в InventDim Sirius DAX: Программирование 0 25.05.2004 16:50

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

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

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