В предыдущем сообщении, где приводил пример кода, я допустил ошибку. Исправляюсь. Код в базовой функциональности должен выглядеть так:
X++:
while (fromInventTrans)
{
...
fromQty = -fromInventTrans.Qty;
if (inventDimParm.InventLocationIdFlag && fromInventDim.InventLocationId)
{
convInventLocation = new TradeInterCompanyConv();
salesInventLocationId = fromInventDim.InventLocationId;
convInventLocation.axInventLocationId(fromValueMap, fromInventDim.InventLocationId);
}
...
changecompany(_toDataAreaId)
{
toInventTrans = null;
select forceplaceholders sum(Qty) from toInventTrans
where toInventTrans.InventTransId == _toInventTransId
&& (toInventTrans.StatusReceipt <= StatusReceipt::Registered
|| toInventTrans.InterCompanyInventDimTransferred == true)
&& toInventTrans.StatusIssue == StatusIssue::None
#inventDimJoin(toInventTrans.InventDimId,toInventDim,fromInventDim,inventDimParm);
fromQty -= toInventTrans.Qty;
....
Но, вобщем, сути дела это не меняет, но сбить столку кого-нибудь может.
Кстати непонятно зачем нужно было писать такую "этажерку" в этом методе до вышеописанного цикла:
X++:
if (inventDimParm.InventLocationIdFlag && inventDimParm.InventBatchIdFlag && inventDimParm.InventSerialIdFlag)
{
select forceplaceholders sum(Qty) from fromInventTrans
where fromInventTrans.InventTransId == _fromInventTransId
&& fromInventTrans.StatusIssue <= _statusIssue
&& fromInventTrans.StatusReceipt == StatusReceipt::None
join InventLocationId, InventBatchId, InventSerialId from fromInventDim
group by InventLocationId, InventBatchId, InventSerialId
where fromInventDim.InventDimId == fromInventTrans.InventDimId;
}
else if (inventDimParm.InventLocationIdFlag && inventDimParm.InventBatchIdFlag)
{
select forceplaceholders sum(Qty) from fromInventTrans
where fromInventTrans.InventTransId == _fromInventTransId
&& fromInventTrans.StatusIssue <= _statusIssue
&& fromInventTrans.StatusReceipt == StatusReceipt::None
join InventLocationId, InventBatchId from fromInventDim
group by InventLocationId, InventBatchId
where fromInventDim.InventDimId == fromInventTrans.InventDimId;
}
else if (inventDimParm.InventLocationIdFlag && inventDimParm.InventSerialIdFlag)
{
...
и так далее, перебирая всевозможные комбинации аналитик. Почему нельзя было воспользоваться QueryBuild-классами? Может я чего-то не понимаю. Просто если вдруг понадобится добавить скажем еще 2 аналитики, то становится дурно (одну то точно добавить хочется - ГТД).