DAX4 SP2 EE Отключенный двухвалютный склад и свое поле в InventSum.
У меня двухвалютный склад отключен. В InventSum добавил свое поле. С тем же именем поле добавил в InventSumDelta. Сдела протягивание из InventTrans накопление этого поля в разных местах. В InventSum и InventSumDelta добавил поле в группы DeltaFields.
В результате, при резервировании в методе
sqlUpdateInventSumStrSQLServer класса
InventUpdateOnhand поймал ошибку. Когда обрабатывается код:
X++:
for (h=1;h<=fieldGrp.numberOfFields();h++)
{
tmpFieldName = new SysDictField(tablenum(InventSum),fieldGrp.field(h)).name(DbBackend::Sql);
if (tmpFieldName)
{
// Note: field names must be exactly the same on tables InventSum and InventSumDelta
pct2 += pct2 ? ', ' : '';
pct2 += inventSumName + '.' + tmpFieldName + ' = ' + inventSumName + '.' + tmpFieldName + ' + ' + inventSumDeltaName + '.' + sumPrefix + tmpFieldName;
tmpFieldNames += tmpFieldName;
}
}
в контейнер tmpFieldNames записывается 17 полей стандартных, 2 относящихся к двухвалютному складу не пишется, восемнадцатым пишется мое поле.
дальше в коде:
Цитата:
for (h=1;h<=deltaFieldGrp.numberOfFields();h++)
{
tmpFieldName = new SysDictField(tablenum(InventSumDelta),deltaFieldGrp.field(h)).name(DbBackend::Sql);
if (tmpFieldName)
{
pct3 += 'SUM(' + tmpFieldName + ') AS ' + sumPrefix + conpeek(tmpFieldNames,h) + ', ';
}
}
хотя два поля двухвалютного склада пропущены из-за того, что ключ отключен и SysDictField(tablenum(InventSumDelta),deltaFieldGrp.field(h)).name(DbBackend::Sql); не срабатывает, при обработке моего поля условие работает, НО h к тому времени
равно 20, хотя в контейнере tmpFieldNames всего
18 значений!
Включаем двухвалютный склад и все становится Ок. Понятно как с этим бороться, но неприятно.