26.09.2005, 06:28 | #1 |
Участник
|
Вопрос: У меня включен автоподбор ГТД в Заказах. Когда я создаю строки заказа при помощи функции Создать строки Аксапта подставляет какой-то ГТД, который потом нельзя исправить (поскольку включен автоподбор). Как заставить Аксапту не указывать ГТД при создании строк?
Ответ: При создании строк Axapta показывает вам комбинации аналитик InventDim. Показывает она только те поля, которые вы включили в форму Создание строк (См. рисунок). Остальные же поля хоть и не показываются, но заполняются значениями (какие именно значения будут взяты из скрытых полей, зависит от версии Аксапты и СУБД). Самое неприятное в том, что после нажатия на кнопку Создание, Аксапта переносит в строки заказа не только видимые поля, но и скрытые. Например, на рисунке ниже отображается только Склад, но если у выбранной номенклатуры есть и ГТД, то в строки заказа будет подставлен не только склад, но и ГТД. Для того, чтобы Аксапта подставляла в строки заказа только ту аналитику, которая видна в форме создания строк, необходимо внести модификацию в метод формы SalesQuickQuote <div class='XPPtop'>X++</div><div class='XPP'>[color=:blue]void[/color] createSalesLine(SalesTable _salesTable) { SalesLine salesLine; InventDim _InventDim; ; [color=:blue]while[/color] [color=:blue]select[/color] tmpFrmVirtual [color=:blue]where[/color] tmpFrmVirtual.qty { [color=:blue]try[/color] { salesLine.clear(); salesLine.projId = _salesTable.projId; salesLine.salesType = _salesTable.salesType; salesLine.initValue(); salesLine.salesId = _salesTable.salesId; salesLine.itemId = tmpFrmVirtual.itemId; salesLine.salesQty = tmpFrmVirtual.qty; [color=:green]//salesLine.inventDimId = tmpFrmVirtual.inventDimId; [/color] [color=:green]//+SMAZ [/color] _inventDim = InventDim::find(tmpFrmVirtual.inventDimId); _inventDim.clearNotSelectedDim(inventDimFormSetup.parmDimParmVisibleGrid()); _inventDim = InventDim::findOrCreate(_inventDim); salesLine.inventDimId = _inventDim.inventDimId; [color=:green]//-SMAZ [/color] salesLine.createLine([color=:blue]true[/color], [color=:green]// validation [/color] [color=:blue]true[/color], [color=:green]// initFromSalesTable [/color] [color=:blue]true[/color], [color=:green]// initFromInventTableModule [/color] [color=:blue]true[/color], [color=:green]// calcInventQty [/color] [color=:blue]true[/color], [color=:green]// searchMarkup [/color] [color=:blue]true[/color], [color=:green]// searchPrice [/color] _salesTable.reservation[color=:blue]==[/color]ItemReservation::Automatic); [color=:green]// checkReservation [/color] tmpFrmVirtual.delete(); } [color=:blue]catch[/color] (Exception::Error) { checkFailed([color=:red]"@SYS18447"[/color]); } } inventsum_ds.executeQuery(); }</div> Как видно из кода, модификация очищает значения непоказываемых в форме складских аналитик. |
|
|