Цитата:
Сообщение от
belugin
Тут может быть проблема в том, что Common ведет себя иногда как ссылочный тип, иногда как значение.
Похоже, что табличный тип это не совсем тип, а некий интерфейс.
И получается в иерархии DirPartyTable ... CompanyInfo у нас есть набор интерфейсов по работе с ядреным курсором.
При этом реализация DirPartyTable.orig() и CompanyInfo.orig() разная. Каждый знает только про свой набор полей - про тот набор, который мы в AOT для таблички описали. И именно этот набор полей при вызове и заполняет в возвращаемом буфере.
Соответственно, задача стояла как получить доступ к соответствующему интерфейсу курсора. Если в коде объявлена переменная соответствующего типа, то все просто, а если ее нет, то как ее получить в runTime.
Ну, я нашел способ.
P.S.
Кстати, аналогичная проблема возникает при помещении и извлечении буфера в List (см.
http://sashanazarov.blogspot.com/201...n-objects.html)
а также при помещении и извлечении в контейнер таким способом, популярным в предыдущих версиях:
X++:
con = [buffer];
buffer = conPeek(con, 1);
там тоже при использовании наследуемых табличек теряется инфа о других полях (не из текущего типа).
Видимо, во всех этих случаях задействован какой-то общий механизм в ядре.