17.06.2004, 10:18 | #1 |
Участник
|
Работа с 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 |
Участник
|
InventDim.update надо в скобочках поставить True
|
|
17.06.2004, 10:47 | #3 |
Участник
|
по-моему это не есть хорошо вручную изменять InventDim.
во-первых вполне может быть что такой набор аналитики уже существует в табличке во-вторых ссылку данную аналитику может использовать другая какая-нибудь запись, помимо редактируемой/создаваемой. Для данных целей лучше использовать метод InventDim::FindOrCreateInventLocationId(InventLocationId) |
|
17.06.2004, 11:58 | #4 |
Участник
|
Спасибо, но
1. У меня номер партии автоматом генерится, и он уникальный. 2. Это создается закупка для ввода начальных остатков, так что больше некому ссылаться на эту строчку... ___ Но я не понял, как его надо использовать? InventDim::FindOrCreateInventLocationId("РубМос")? |
|
17.06.2004, 12:09 | #5 |
Участник
|
сделай так:
проинициализируй нужными тебе значениями (склад, партия, цвет - аналитиками) переменную inventDim. Затем что бы найти нужную тебе аналитику используй метод InventDim::findOrCreate(inventDim /*- твоя проинициализированная переменная*/ ); метод вернет тебе inventDim - либо с такими аналитиками запись уже существует либо создаст новую запись в InventDim -ме и вернет ее тебе соответственно: inventDim.InventLocationId = "РубМос"; PurchLine.InventDimId = InventDim::findOrCreate(inventDim); |
|
17.06.2004, 12:11 | #6 |
Участник
|
Цитата:
Изначально опубликовано NJD
Но я не понял, как его надо использовать? InventDim::FindOrCreateInventLocationId("РубМос")? purchLine.InventDimID = inventDim.InventDimId |
|
17.06.2004, 12:38 | #7 |
Участник
|
Супер! Работает. Спасибо.
Получается, что я так и ГТД могу делать. InventDim.InventGtdId_RU = '---'; purchLine.InventDimId = InventDim::findOrCreate(inventDim).inventDimId; purchLine.update(); |
|
17.06.2004, 14:03 | #8 |
Участник
|
и снова о помощи взываю. раньше у меня номера партий автоматом генерились и всё ок было. а сейчас они пустые... -((
чего делать? 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 |
Участник
|
Цитата:
Изначально опубликовано 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 код:
|
|
|
За это сообщение автора поблагодарили: Gustav (5). |
17.06.2004, 14:33 | #10 |
Участник
|
Ну это я уже понял.-)
И как выйти из сложившейся ситуации? |
|
17.06.2004, 14:39 | #11 |
Участник
|
так как только что было написано.))))
|
|
17.06.2004, 14:42 | #12 |
Участник
|
Спасибо. Я стормозил -)
|
|