В настройках модуля управления запасами есть настройки для отображения складских аналитик по умолчанию в гриде. В дальнейшем пользователь может изменить это поведение по кнопке Запасы -> Отображение аналитики.
Выставляю для журнала Прибыли / Убытки только аналитику Цвет. Очищаю таблицу SysLastValue по своему пользователю (чтобы не подхватилась настройка из InventDimCtrl_Frm_Mov), запускаю job со следующим кодом:
X++:
InventDimGlobal::flushAll();
для того, чтобы сбросить кэш по таблице InventDimSetupGrid.
Открываю форму УЗ / Журналы / Прибыли-Убытки / Строки и вижу кучу складсских аналитик в гриде:
Проблема тянется из метода InventJournalFormTrans_Movement -> updateDesign()
Если посмотреть стек вызова это метода:
то видно, что метод вызывается на ините формы, когда курсор строки еще не определен. Поэтому создается InventMov_Jour_Movement, а не InventMov_Jour_LossProfit
Дальше, в методе InventDimCtrl_Frm_Mov -> mustShowGridField() вызывается метод InventDimSetupGrid::movement2FieldId(movement); для того, чтобы понять какое поле из таблицы InventDimSetupGrid брать для настройки отображения аналитик в гриде. А так как Movement создался с типом проводка, то и настройка возьмется для этого типа журнала:
Я придумал следующее решение. В начале метода InventJournalFormTrans_Movement -> updateDesign() делаем следующие исправления:
X++:
//scorp -->
//InventMovement _movement = InventMovement::construct(inventJournalTrans);
InventMovement _movement;
;
if (!inventJournalTrans.RecId)
{
inventJournalTrans.JournalType = new SysDictEnum(enumnum(InventJournalType)).index2Value(journalTableData.journalTable().JournalType);
}
_movement = InventMovement::construct(inventJournalTrans);
//scorp <--
Исходя из того, что такое поведение воспроизводится с AX версии 3.0 у меня появились мысли о том, что это не баг, а какая-то фича, о которой мне не известно. Или все-таки баг?