|
![]() |
#1 |
Участник
|
Вась, подскажи. А что даст, если получиться во временной таблице получить нужный 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. |
|
![]() |
#2 |
----------------
|
Все верно
Цитата:
если есть дополнительные find-ы, ифы, начинаются танцы с бубном, которые в результате могут ни к чему не привести.
formDatasource.cursor().setTmp; formDatasource.cursor().setTmpData(tmpCustTrans); Получается все красиво... форма привычная, данные понятны, сортировки, фильтры, переходы к основным таблицам, просмотр исходного документа, докумнта ГК и т.д. и т.п... НО нет сопоставлений, истории, открытых проводок, так как все это делается через... RecId, который не совпадает с реальным. Решается это добавлением join со временной таблицей в исходном formDatasource. Но остался нерешенным вопрос "откуда берется RecId для временной таблицы и можно ли этим управлять" |
|
|
За это сообщение автора поблагодарили: miklenew (2), jeky (1). |
![]() |
#3 |
Участник
|
Цитата:
Создал дублированием таблицу CustTrans. Поставил Tempory да. Через dictField небось создал копию с оригинала CustTrans. Блин, почему в range ограничение на количество значений. Можно было бы все эти recId засунуть в query и не парится. |
|
![]() |
#4 |
Участник
|
Цитата:
Цитата:
Сообщение от AndyD
http://erpkb.com/Axapta/RecId
Нумерация для каждой временной таблицы (в том числе и тех, которые сделаны временными через вызов setTmp()) начинается с константы и возрастает на некоторую дельту (0x30) в рамках времени жизни табличной переменной. |
|
![]() |
#5 |
----------------
|
Еще пару штрихов к той задаче
Изначально задача звучала так
"Есть некоторый отчет (вывод в Excel), который вроде правильно показывает данные, но по нему очень сложно проводить выверку. Надо, чтобы те же данные выводились в форму аналогичную финансовым отчетам, с возможностью просмотра проводок, из которых складывается сумма(drilldown). По кнопке Печать на форме должен распечататься старый отчет. Также должна остаться возможность простого запуска старого отчета" 1. Чтобы не копировать форму был создан класс-interface, который описывал все взаимодействия формы и класса финансовых отчетов. 2. В классе фин.отчетности добавлена ссылка на интерфейс. В форме добавлена проверка на реализацию интерфейса. 3. Создан класс унаследованный от старого отчета и реализующий новый интерфейс. ... N. при выводе списка проводок (drilldown) использовалась временная копия исходных проводок, в которых данные по закрытой части приводились к дате отчета. Таким образом пользователь мог сразу в поле Сальдо увидеть суммы на дату. N+1. при выводе списка проводок в одно из "неважных" полей засовывался исходный RecId. В форме проводок на методе active для временных данных выполнялся код custTrans.Recid = custTrans.неважноеПоле В результате, все формы работающие по ссылке RecId отрабатывали корректно. P.S. Ухожу в отпуск, так что на все вопросы и комментарии ответить не смогу. |
|