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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.07.2014, 03:39   #1  
ZoyaKom is offline
ZoyaKom
Участник
 
99 / 10 (1) +
Регистрация: 05.04.2012
Здравствуйте!

При разработке отчета столкнулось с проблемой, что в NAV 2009 при использовании расширенного типа данных использование измерений не поддерживается. Подскажите, пожалуйста, что можно сделать, чтобы устранить данную проблему. С чего начать, в каком месте дорабатывать код?
Старый 31.07.2014, 08:25   #2  
ZoyaKom is offline
ZoyaKom
Участник
 
99 / 10 (1) +
Регистрация: 05.04.2012
На текущий момент добилась, чтобы работал фильтр по измерению, если я его указываю в таблице "Расширения финансового отчета" (Рисунок 1). А вот чтобы фильтр работал по столбцам (рисунок 2) пока не знаю как сделать. Может надо изменить код в форме 490.
Миниатюры
Нажмите на изображение для увеличения
Название: 2.jpg
Просмотров: 397
Размер:	128.0 Кб
ID:	10782  
Изображения
 
Старый 31.07.2014, 10:56   #3  
zuzka is offline
zuzka
Участник
Аватар для zuzka
 
131 / 10 (1) +
Регистрация: 29.07.2013
Вроде как в коде, надо найти в коде формы формирование фильтров (точнее где отфильтровываются записи, по необходимому вам типу отчета) и добавить ваши фильтра... В коде матриксбокса вроде и не понадобится ничего менять. Месяца 3 назад делал нечто подобное)) мучался почти 3 дня разбираясь как это работает...
__________________
Как только вы проиграете, все ваши прошлые победы забудут.
Старый 05.09.2014, 08:43   #4  
ZoyaKom is offline
ZoyaKom
Участник
 
99 / 10 (1) +
Регистрация: 05.04.2012
На текущий момент разобралась, как сделать так, чтобы суммы в столбцах рассчитывались на основании глобальных измерений. Для этого я добавила в codeunit 26581 дополнительные фильтры для нужных мне функций. Например для функции SetDtldVendLedgEntryFilters добавила следующие строки кода:

DtldVendLedgerEntry.SETFILTER("Initial Entry Global Dim. 1",
AccSchedManagement.GetDimTotalingFilter(1,ColumnLayout."Dimension 1 Totaling"));
DtldVendLedgerEntry.SETFILTER("Initial Entry Global Dim. 2",
AccSchedManagement.GetDimTotalingFilter(2,ColumnLayout."Dimension 2 Totaling"));
FILTERGROUP(0);

После этого отчет стал отображаться корректно. Теперь необходимо, чтобы столбцы пересчитывались, если я меняю одно из глобальных измерений на самой форме. Для строк у которых не выбран тип группировки "Пользовательский" все отображается правильно. А вот для строк с типом "Пользовательский" суммы не пересчитываются, когда я указываю какое-либо измерение на форме.

Подскажите, пожалуйста, как этого добиться. Какой код смотреть? Смотрела codeunit 8 и форму 490, но пока не поняла, где именно накладывается фильтр.
Старый 05.09.2014, 11:23   #5  
ZoyaKom is offline
ZoyaKom
Участник
 
99 / 10 (1) +
Регистрация: 05.04.2012
Разобралась с данным вопросом. Для этого надо было добавить в codeunit 26581 еще дополнительные фильтры. А также в codeunit 8 добавить следующую строку:

было ELSE IF AccSchedLine."Totaling Type" = AccSchedLine."Totaling Type"::Custom THEN
было BEGIN
добавила AccSchedLine.COPYFILTERS(AccountScheduleLine);
было Result := AccSchedExtensionManagement.CalcCustomFunc(AccSchedLine,ColumnLayout,StartDate,EndDate);
было END ELSE

После этого столбцы стали пересчитываться после того, как я меняю глобальные измерения на форме.
 


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

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

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