Вопрос: У меня включен автоподбор ГТД в Заказах. Когда я создаю строки заказа при помощи функции Создать строки Аксапта подставляет какой-то ГТД, который потом нельзя исправить (поскольку включен автоподбор). Как заставить Аксапту не указывать ГТД при создании строк?
Ответ: При создании строк 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>
Как видно из кода, модификация очищает значения непоказываемых в форме складских аналитик.
|