AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.01.2016, 16:15   #1  
kitty is offline
kitty
Участник
 
370 / 30 (2) +++
Регистрация: 24.05.2005
передать буфер врем таблицы на клиент через контракт
Controller класс вызывает серверный класс, заполняющий TempDB таблицу
Серверный класс возвращает курсор таблицы через contract
Controller из operationReturnValue() получает контракт и ,соответственно, буфер таблицы
Но:
В результате на клиенте мне нужно перебрать записи таблицы, но, но когда делаю select, то получаю 0 записей, т.е он не ссылается, видимо, уже на таблицу саму, а просто буфер передается(заполненные поля переданного буфера я вижу в дебаггере)
Как корректно передать указатель на врем таблицу?
(или это принципиально невозможно, тк темп таблица в отдельном потоке создается и удаляется при завершении?)

Последний раз редактировалось kitty; 29.01.2016 в 16:22.
Старый 29.01.2016, 16:54   #2  
axm2013
Гость
 
n/a
Судя по всяким SrsTmpTblMarshaller систему не наеб..шь обманешь и юзанье постоянных таблиц удел борцов с несправедливостью.
Либо можно использовать указанный класс.
Старый 29.01.2016, 17:36   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
linkPhysicalTableInstance?
Старый 29.01.2016, 17:46   #4  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Передавать указатель как параметр
Table clientDeclared;
:opulateTempDbOnServer(clientDeclared);
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 29.01.2016, 18:35   #5  
kitty is offline
kitty
Участник
 
370 / 30 (2) +++
Регистрация: 24.05.2005
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
linkPhysicalTableInstance?
не решает проблему
Старый 29.01.2016, 21:57   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
решение от ax_mct должно сработать https://community.dynamics.com/ax/f/33/t/127730
Старый 31.01.2016, 22:57   #7  
b_nosoff is offline
b_nosoff
Читатель
Аватар для b_nosoff
MCP
MCBMSS
 
197 / 143 (5) +++++
Регистрация: 01.12.2004
Адрес: Msk
Записей в блоге: 13
Можете передавать имя таблицы в БД. Получить его можно через getPhysicalTableName на сервере, и указать на клиенте через useExistingTempDBTable. Для того, чтобы AOS не удалил временную таблицу при потере курсора на сервере, используйте takeOwnershipOfTempDBTable (не забудьте после окончания работы с таблицей вернуть этот параметр, иначе она так и повиснет в tempDb).
__________________
Axapta non erubescit

Последний раз редактировалось b_nosoff; 31.01.2016 в 22:59.
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 01.02.2016, 15:26   #8  
kitty is offline
kitty
Участник
 
370 / 30 (2) +++
Регистрация: 24.05.2005
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
решение от ax_mct должно сработать https://community.dynamics.com/ax/f/33/t/127730
Может, руки не оттуда растут, но не работает

Делаю так:
Переменная объявлена в классе-контракте и этот атрибут сделан невидимым
В контроллере вызывается серверный класс, в нем из переданного контроллером контракта достается эта переменная-буфер и присваивается локальной переменной. (linkPhysTableInstance)
При завершении работы серверного метода, он возвращает контракт
В методе afterOperation контроллера вынимается из возвращенного контракта буфер, но в нем 0 записей...
Старый 01.02.2016, 15:34   #9  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
У таблиц типа tempDB можно с помощью getPhysicalTableName(), как указывалось выше, получить название физической таблицы в базе. Попробуйте проследить, сохраняется ли у вас название физической таблицы по мере передачи данных через контракт.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Опыт: синхронизация справочников через AIF в AX2012 EVGL DAX: Функционал 14 28.08.2020 17:52
Вывод в таблицу на форме данных временной таблицы Vasiliusis DAX: Программирование 12 06.02.2014 06:21
Отмена использования временной таблицы в FormDatasource A_BAS DAX: Программирование 4 02.03.2013 21:11
Пересоздание таблицы при синхронизации Serg16 DAX: Администрирование 1 26.08.2009 13:55
Можно делать join таблицы к себе же через Query? korvin DAX: Программирование 13 02.03.2006 11:51

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:26.