Вчера вылезло нечто странное в 2012 аксапте.
Код шёл примерно так (очень упрощенная версия)
X++:
[record1] = map.lookup(#current);
tmpTable.value = strfmt("%1", record1.(fieldnum(RealTable, dataAreaid)))
И несмотря на то, что RealTable record1 был положен в карту абсолютно нормальным(dataAreaId заполнен, никаких select crosscompany, всё как обычно)
это вылетало с "Внутренняя ошибка номер 25".
Научный метод тыка показал, что
info(record1.dataAreaId); работает и показывает код компании. А вот info(record1.(fieldnum(RealTable, dataAreaid))) вылетает.
Веселье продолжилось, дальнейшее шаманство показало что
X++:
[recordTmp] = map.lookup(#current);
record1.data(recordTmp); // <<< копируем полученное из map'а
info(record1.(fieldnum(RealTable, dataAreaid)))
tmpTable.value = record1.(fieldnum(RealTable, dataAreaid))
работает.
Я ничего не понял.