Показать сообщение отдельно
Старый 30.12.2008, 22:38   #100  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
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 значений!
Включаем двухвалютный склад и все становится Ок. Понятно как с этим бороться, но неприятно.

Последний раз редактировалось Raven Melancholic; 30.12.2008 в 22:40.