Цитата:
Сообщение от
d&m
в итоге - в закупке я могу сделать разноску без аналитик, в журнале ГК - без аналитик разноску сделать не могу. Это нормально? Разве тут не должно быть единообразия?
Извиняюсь - не сразу ответил - в заботах был.
В журнале ГК сделали очень досадный баг в виде "упущенного" конфигурационного ключа.
Дело в том, что в строке ЖГК (LedgerJournalTrans) существуют 2 набора аналитик: одни для счета (кстати - для корсчета никто аналитики и не думал делать почему-то) - это поле LedgerJournalTrans.Dimension и другие - для внутрихолдиногового учета.- поле LedgerJournalTrans.InterCoDimension.
Проверка соответствия иерархии аналитики осуществляется сразу для двух полей (см метод LedgerJournalTrans.checkDimensions()). В проверке честно поставлено условие, что если конфигурационный ключ иерархии аналитик включен - то проверку выполнять. НО! Никто не позаботился о том, что если ключ внутрихолдингового учета выключен - то проверку по внутрихолдинговым аналитикам делать не надо - т.к. их нет!
В связи с этим я изменил у себя код метода checkDimensions():
X++:
public boolean checkDimensions(boolean _checkWriteValidation)
{
boolean ok = true;
DimensionSetCaller dimensionSetCaller;
;
if (isConfigurationkeyEnabled(configurationkeynum(DimensionSetHierarchy)))
{
dimensionSetCaller = DimensionSetCaller::construct(this, fieldnum(LedgerJournalTrans, Dimension));
ok = appl.dimensionSetValidation(false, dimensionSetCaller.getCompanyId()).checkDimension(this,
fieldnum(LedgerJournalTrans, Dimension),
_checkWriteValidation) && ok;
if (isConfigurationkeyEnabled(configurationkeynum(LedgerAdvIntercompanyAccounting))) // Вот здесь не хватает проверки на конфигурационный ключ
{
dimensionSetCaller.parmDimensionFieldId(fieldnum(LedgerJournalTrans, InterCoDimension));
ok = appl.dimensionSetValidation(false, dimensionSetCaller.getCompanyId()).checkDimension(this,
fieldnum(LedgerJournalTrans, InterCoDimension),
_checkWriteValidation) && ok;
}
}
return ok;
}
Проверьте - у меня не Ваш ли случай был?