31.07.2014, 03:39 | #1 |
Участник
|
Здравствуйте!
При разработке отчета столкнулось с проблемой, что в NAV 2009 при использовании расширенного типа данных использование измерений не поддерживается. Подскажите, пожалуйста, что можно сделать, чтобы устранить данную проблему. С чего начать, в каком месте дорабатывать код? |
|
31.07.2014, 08:25 | #2 |
Участник
|
На текущий момент добилась, чтобы работал фильтр по измерению, если я его указываю в таблице "Расширения финансового отчета" (Рисунок 1). А вот чтобы фильтр работал по столбцам (рисунок 2) пока не знаю как сделать. Может надо изменить код в форме 490.
|
|
31.07.2014, 10:56 | #3 |
Участник
|
Вроде как в коде, надо найти в коде формы формирование фильтров (точнее где отфильтровываются записи, по необходимому вам типу отчета) и добавить ваши фильтра... В коде матриксбокса вроде и не понадобится ничего менять. Месяца 3 назад делал нечто подобное)) мучался почти 3 дня разбираясь как это работает...
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
05.09.2014, 08:43 | #4 |
Участник
|
На текущий момент разобралась, как сделать так, чтобы суммы в столбцах рассчитывались на основании глобальных измерений. Для этого я добавила в 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 |
Участник
|
Разобралась с данным вопросом. Для этого надо было добавить в 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 После этого столбцы стали пересчитываться после того, как я меняю глобальные измерения на форме. |
|