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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.11.2013, 12:50   #1  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
В некоем отчете на печать надо выводить строки счета, но не все, а только
1) с типом Item - все
2) с типом G/L Account - с номерами, заданными пользователем на RequestForm
Вопрос: я правильно подозреваю, что одновременно такой фильтр не наложить? нужно будет делать в два прохода: первый раз выбрать все строки с Item, второй раз - с G/L Account, одновременно накладывая фильтр на поле "No."
Т.е. будет два DataItem'а одного уровня и одного типа (Sales Invoice Line), но с разными фильтрами?
Старый 15.11.2013, 13:05   #2  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
Если Sections должны быть одинаковыми для обоих типов строк, логичнее, наверное, заполнить строками обоих типов темповую табличку, а затем сделать DataItem, основанный на Integer, с обходом этой таблички.
Так и сортировать строки удобнее.
Старый 15.11.2013, 13:15   #3  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от Milk Посмотреть сообщение
Если Sections должны быть одинаковыми для обоих типов строк, логичнее, наверное, заполнить строками обоих типов темповую табличку, а затем сделать DataItem, основанный на Integer, с обходом этой таблички.
Так и сортировать строки удобнее.
Sections-то одинаковые. Но ведь чтобы заполнить эту табличку все равно придется строки счета просматривать 2 раза? или?
Старый 15.11.2013, 13:30   #4  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Дата айтем по строкам счета.

OnPreDataItem()
Код:
SETFILTER(Type, '%1|%2', Type::Item, Type::"G/L Account");
OnAfterGetRecord()
Код:
IF Type = Type::"G/L Account" THEN
  IF [Счет не из списка с реквеста] THEN
    CurrReport.SKIP;
Старый 15.11.2013, 14:03   #5  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от romeo Посмотреть сообщение
Дата айтем по строкам счета.

OnPreDataItem()
Код:
SETFILTER(Type, '%1|%2', Type::Item, Type::"G/L Account");
OnAfterGetRecord()
Код:
IF Type = Type::"G/L Account" THEN
  IF [Счет не из списка с реквеста] THEN
    CurrReport.SKIP;
Я уже думала о таком варианте.
Но если в реквесте фильтр задан строковой переменной(назовем ее, н-р, AccFilter) и виде: СчетA|СчетB|счетC..счетD|счетXYZ, как вот эту проверку [Счет не из списка с реквеста] делать?
Вариант с
Код:
 IF NOT ("No." IN AccFilter) THEN
не прокатит же?
Старый 15.11.2013, 14:09   #6  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Kadawrik Посмотреть сообщение
Я уже думала о таком варианте.
Но если в реквесте фильтр задан строковой переменной(назовем ее, н-р, AccFilter) и виде: СчетA|СчетB|счетC..счетD|счетXYZ
-) это уже другой вопрос. Ищите способ сделать такую проверку, а не исковеркать отчет.
Старый 15.11.2013, 15:08   #7  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
Цитата:
Сообщение от Kadawrik Посмотреть сообщение
Цитата:
Сообщение от Milk Посмотреть сообщение
Если Sections должны быть одинаковыми для обоих типов строк, логичнее, наверное, заполнить строками обоих типов темповую табличку, а затем сделать DataItem, основанный на Integer, с обходом этой таблички.
Так и сортировать строки удобнее.
Sections-то одинаковые. Но ведь чтобы заполнить эту табличку все равно придется строки счета просматривать 2 раза? или?
Накладываете один фильтр, копируете строки в темповую таблицу, накладываете второй, снова копируете. После этого делаете с ней что хотите - упорядочиваете, суммируете поля...
Старый 15.11.2013, 15:28   #8  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от romeo Посмотреть сообщение
-) это уже другой вопрос. Ищите способ сделать такую проверку, а не исковеркать отчет.
Вы считаете вариант с двумя DataItem (один по Item, другой - по G/L Account) коверканьем отчета? ;-)
(Прим.: пользователю порядок строк неважен.)
Имхо, менее затратно (в смысле времени) решить задачу в лоб, т.е. с помощью двух DI.
Старый 15.11.2013, 15:39   #9  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Kadawrik Посмотреть сообщение
Имхо, менее затратно (в смысле времени) решить задачу в лоб, т.е. с помощью двух DI. />
"решить задачу в лоб" - сильно субъективное понятие. Я думаю для каждого из нас оно предполагает тот вариант решения, который нам известен, которым мы привыкли пользоваться. Два датаайтема - это возможно два набора секций отчета, которые надо раскопировать. Возможно что-то еще, что усложнит реализацию и поддержку. Выбирать вам. Но сама по себе функция, определяющая вхождение конкретного кода в строку фильтра очень полезна и применимость ее будет высока.
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:32.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.