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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.06.2008, 07:10   #1  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Вась, подскажи. А что даст, если получиться во временной таблице получить нужный recId, через что и как ты потом будешь его использовать?
Я так понимаю вы хотите реализовать механизм driilldown.
А recId хотите использовать, как форточку для недостающих данных. Или не так.
Как я делал такой механизм:
1) Снимал слепок(данные) с запроса в первую временную таблицу.
2) Группировал требуемые данные из первой временной таблицы, получая вторую.
3) Суммировал итоговые поля во второй, получал третью(Если нужны подитоги).
4) Результаты 2 и 3 выкидывал на элемент ActiveX, похожий на Excel.
5) Когда два раза щёлкаем на строке отчёта открывается форма со стороками из которых была получена данная строка. Как это реализуется в системе: берём запрос из первого пункта, считываем строку на которой сделали drilldown, получаем значения полей по которым у нас была группировка, достраиваем range-ми по ним наш запрос. Берём форму которая будет открываться по drillDown, получаем её первый датасорс formDataSource = formRun.dataSource(); и заменяем её query, нашим formDataSource.query(наш query).
Если в 1 пункте данные считываются из одного запроса всё ок, driilldown реализуется нормально, если есть дополнительные find-ы, ифы, начинаются танцы с бубном, которые в результате могут ни к чему не превести.
Что вполне логично, чтобы что-то раскрутить, нужно тоже самое перед этим скрутить.

Последний раз редактировалось miklenew; 29.06.2008 в 08:08.
Старый 29.06.2008, 18:40   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Все верно
Цитата:
если есть дополнительные find-ы, ифы, начинаются танцы с бубном, которые в результате могут ни к чему не привести.
поэтому в первой таблице сохраняются RecId исходных данных, при drilldown создается временная таблица проводок, которые были исходными для суммы, и она запихивается в форму.
formDatasource.cursor().setTmp;
formDatasource.cursor().setTmpData(tmpCustTrans);

Получается все красиво... форма привычная, данные понятны, сортировки, фильтры, переходы к основным таблицам, просмотр исходного документа, докумнта ГК и т.д. и т.п... НО нет сопоставлений, истории, открытых проводок, так как все это делается через... RecId, который не совпадает с реальным.
Решается это добавлением join со временной таблицей в исходном formDatasource.
Но остался нерешенным вопрос "откуда берется RecId для временной таблицы и можно ли этим управлять"
За это сообщение автора поблагодарили: miklenew (2), jeky (1).
Старый 29.06.2008, 21:14   #3  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Wamr Посмотреть сообщение
formDatasource.cursor().setTmp;
formDatasource.cursor().setTmpData(tmpCustTrans);
Хитрый способ.
Создал дублированием таблицу CustTrans.
Поставил Tempory да.
Через dictField небось создал копию с оригинала CustTrans.
Блин, почему в range ограничение на количество значений.
Можно было бы все эти recId засунуть в query и не парится.
Старый 30.06.2008, 12:27   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Wamr Посмотреть сообщение
Но остался нерешенным вопрос "откуда берется RecId для временной таблицы и можно ли этим управлять"
Цитата:
Сообщение от AndyD
http://erpkb.com/Axapta/RecId
Нумерация для каждой временной таблицы (в том числе и тех, которые сделаны временными через вызов setTmp()) начинается с константы и возрастает на некоторую дельту (0x30) в рамках времени жизни табличной переменной.
Управлять этим, думаю, нельзя.
Старый 15.08.2008, 18:25   #5  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Еще пару штрихов к той задаче
Изначально задача звучала так
"Есть некоторый отчет (вывод в Excel), который вроде правильно показывает данные, но по нему очень сложно проводить выверку.
Надо, чтобы те же данные выводились в форму аналогичную финансовым отчетам, с возможностью просмотра проводок, из которых складывается сумма(drilldown).
По кнопке Печать на форме должен распечататься старый отчет.
Также должна остаться возможность простого запуска старого отчета"

1. Чтобы не копировать форму был создан класс-interface, который описывал все взаимодействия формы и класса финансовых отчетов.
2. В классе фин.отчетности добавлена ссылка на интерфейс. В форме добавлена проверка на реализацию интерфейса.
3. Создан класс унаследованный от старого отчета и реализующий новый интерфейс.
...
N. при выводе списка проводок (drilldown) использовалась временная копия исходных проводок, в которых данные по закрытой части приводились к дате отчета. Таким образом пользователь мог сразу в поле Сальдо увидеть суммы на дату.
N+1. при выводе списка проводок в одно из "неважных" полей засовывался исходный RecId. В форме проводок на методе active для временных данных выполнялся код
custTrans.Recid = custTrans.неважноеПоле
В результате, все формы работающие по ссылке RecId отрабатывали корректно.

P.S. Ухожу в отпуск, так что на все вопросы и комментарии ответить не смогу.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
производительность: map или временная таблица kitty DAX: Программирование 5 15.11.2007 12:36
Временная таблица и форма рантайм Андрей К. DAX: Программирование 1 03.06.2007 16:22
Временная таблица + RLS leshy DAX: Программирование 6 27.04.2006 12:39
select sum(amount) from временная таблица ATimTim DAX: Программирование 6 11.06.2004 14:16
next и временная таблица Dron AKA andy DAX: Программирование 3 24.04.2003 16:42

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

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

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