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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.04.2005, 12:32   #1  
.rejector. is offline
.rejector.
Участник
Аватар для .rejector.
 
35 / 10 (1) +
Регистрация: 16.10.2003
FlowField, в TableFilter
Подскажите, можно ли при создании поля FlowField, в TableFilter использовать использовать выражения типа ..TODAY-1

А то нужно сделать Флоуфилд который бы показывал сумму по операциям за определенные даты.
Старый 27.04.2005, 12:46   #2  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Можно использовать DateFilter типа FlowFilter, в который класть TODAY - 1
Старый 27.04.2005, 13:05   #3  
.rejector. is offline
.rejector.
Участник
Аватар для .rejector.
 
35 / 10 (1) +
Регистрация: 16.10.2003
не понял, поподробнее plz.

Вложения
Тип файла: img65767-1 (33.1 Кб, 780 просмотров)
Старый 27.04.2005, 14:01   #4  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Сразу оговорюсь: я про 3.6. Что в 2.6 - не в курсе, к сожалению.
Дык вот, посмотрим для примера на таблицу Customer, на поле Sales (LCY)
Это FlowField.
Расчитывается, как сумма по полю Sales (LCY) таблицы Cust. Ledger Entry.
Смотрим фильтры:
Customer No. No.
Global Dimension 1 Code Global Dimension 1 Filter
Global Dimension 2 Code Global Dimension 2 Filter
Posting Date Date Filter
Currency Code Currency Filter
Agreement No. Agreement Filter

Последние 5 фильтров выстроены не по обычным полям таблицы Customer, а по полям типа FlowFilter.
Что это означает: если Вы просто откроете табличку Customer, то увидите в этом поле значения, не завязанные на измерения, дату, валюту и договора.
Если же Вы установите значения для, например, Date Filter, то в сумму будут входить уже только те клиентские операции из 21-й таблицы, в которых Posting Date попадает в диапазон, заданный в Date Filter.
Т.е., например, если Вам нужно посмотреть сумму только по вчерашним операциям - вводите в Date Filter значение (TODAY - 1). Если по всем операциям до вчерашнего дня включительно - вводите '..TODAY - 1' и т.п.
Соответственно, если, например, нужно в какой-то форме выводить суммы только по вчерашнему дню, то достаточно на OnOpenForm написать
SETFILTER("Date Filter", TODAY - 1);
Если в отчете - опять же просто положите фильтр на датаайтем и т.п.

На всякий случай, для более конструктивной беседы, опишите более подробно свою задачу

З.Ы. Флоуфильтры выставляются по нажатию кнопочки Shift + F7
Старый 27.04.2005, 15:43   #5  
.rejector. is offline
.rejector.
Участник
Аватар для .rejector.
 
35 / 10 (1) +
Регистрация: 16.10.2003
задача такова:

нужно показать сумму всех заявок на оплату (это бюджетирование) которые были неоплачены и были подписаны более двух дней назад.

для этого создал FlowField поле с такими TableFilter:
:
Вложения
Тип файла: img65789-1 (17.3 Кб, 785 просмотров)
Старый 27.04.2005, 16:02   #6  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Если бы в значении фильтра в Navision можно было использовать функции (или сложные выражения), то ваша задумка может быть удалась.
Старый 27.04.2005, 16:07   #7  
.rejector. is offline
.rejector.
Участник
Аватар для .rejector.
 
35 / 10 (1) +
Регистрация: 16.10.2003
это понятно, а можно ли как-то исхитриться и обойти эти ограничения. или сделать по-другому?
Старый 27.04.2005, 16:13   #8  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Ну я же все написал.
Создайте там, где нужна эта сумма, поле Date Filter типа Flow Filter.
В фильтрах FlowFiled'а напишите не
Дата Подп. Фин. Дир. FILTER TODAY - 2, а напишите
Дата Подп. Фин. Дир. FILTER Date Filter
Задайте значение Date Filter = '..TODAY-2' и будет щастье.
Старый 27.04.2005, 16:21   #9  
.rejector. is offline
.rejector.
Участник
Аватар для .rejector.
 
35 / 10 (1) +
Регистрация: 16.10.2003
да, действительно...
торможжжу...
Спасибо ОГРОМНОЕ !
Старый 27.04.2005, 16:32   #10  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Цитата:
Изначально опубликовано Yoil
Задайте значение Date Filter = '..TODAY-2' и будет щастье.
Это что означает? Если я в стандартной функциональности, например, в плане счетов, в стандартном диалоге у поле Дата Фильтр напишу TODAY-2, то будет счастье?
Не, не будет.
Старый 27.04.2005, 16:47   #11  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Да, Шрэк, тут для ЩАСТЬЯ нужно сделать больше - написать на OnOpenForm
SETFILTER("Date Filter", '..' + FORMAT(TODAY - 2));
Действительно, ручками оно выражение TODAT-2 не разберет, т.к. FlowFilter - это совсем не тип Date, прошу прощения, если ввел в заблуждение.
Старый 27.04.2005, 16:51   #12  
.rejector. is offline
.rejector.
Участник
Аватар для .rejector.
 
35 / 10 (1) +
Регистрация: 16.10.2003
нет, имелось в виду поставить фильтр на "Дата Фильтр" при открытии формы:
Код:
SETFILTER("Дата Фильтр", '..%1', TODAY-1)
хех, запоздал с ответом..
Yoil, спасибо ещё раз!
Старый 27.04.2005, 16:53   #13  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Пардон, теперь понял, что разговор шел о SETFILTER.
Старый 27.04.2005, 17:27   #14  
.rejector. is offline
.rejector.
Участник
Аватар для .rejector.
 
35 / 10 (1) +
Регистрация: 16.10.2003
Господа, хочу ещё спросить.

А есть ли возможность изменить сумму, которая появляется в созданном поле FlowField.

Поясню: в заявках на оплату есть поля "Код оригинальной валюты", "Валюта платежа" и "Тип оплаты". Например заявка оформлена на $1000, а оплатить нужно в рублях:
"Код оригинальной валюты" USD
"Валюта платежа" RUR
"Тип оплаты" "Из кассы"

Создал флоуфилд-поля (вопросы по ним, я собственно и задавал в этом треде) :
"Касса РУБ"
"Касса USD"
"РасСчет РУБ"
"РасСчет USD"

В созданных полях показываются суммы, отфильтрованные по простому принципу,
если
"Код оригинальной валюты" = RUR
и
"Валюта платежа" = RUR
и
"Тип оплаты" = "Из кассы",
то данная сумма полюсуется к сумме поля "Касса РУБ". По аналогии фильтруются и остальные поля.
Это была преамбула.
А теперь вопрос знатокам (с) "Что? Где? Когда?"

нужно заявки которые:
"Код оригинальной валюты" USD
"Валюта платежа" RUR
"Тип оплаты" "Из кассы"
плюсовать к рублёвой кассе (созданное флоуфилд-поле"Касса РУБ") по текущему курсу.

Да и вообще возможно ли это?
Старый 28.04.2005, 08:24   #15  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Гм. Плюсовать по текущему курсу (т.е. если RUR, то складывать во флоуфилд просто значение поля, а если USD, то значение поля, умноженное на курс) нельзя.
Придется писать функцию ручками.

Но, например, если у Вас RUR - локальная валюта, то обычно в "родных" табличках Навыжна бывают поля типа Amount (LCY), где будет храниться сумма в рублях и считать можно на их основе либо вообще не учитываю валюту Код оригинальной валюты, либо задав связку Код оригинальной валюты = Currency Filter (тип - флоуфильтер).
Но здесь получится не сумма в USD, умноженная на конкретно текущий курс, а именно сумма, умноженная на курс, соответствующий дате заявки.
Старый 28.04.2005, 09:18   #16  
.rejector. is offline
.rejector.
Участник
Аватар для .rejector.
 
35 / 10 (1) +
Регистрация: 16.10.2003
да, по курсу соответствующему дате заявки поле есть. но нужно по текущему курсу.

если не особо затруднит можно привести общую идеологию этой функции.

Заранее благодарен.
Старый 28.04.2005, 09:46   #17  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Ну вместо флоуфилда будет считать что-нибудь типа
PHP код:
//кладем фильтры на Заявки
IF Заявки.FIND('-'THEN
   REPEAT
    
CASE Заявки."Код оригинальной валюты" OF
      
'RUR' Sum += Заявки.Amount;
      
'USD' Sum += Заявки.Amount "Курс валюты на сегодня";
    
END;
  
UNTIL Заявки.NEXT 0
Или заведите два флоуфилда для заявок с кодом ориг. валюты RUR (Amount (RUR)) и с кодом валюты USD (Amount (USD)), а нужным Вам результатом будет
PHP код:
Sum := "Amount (RUR)" "Amount (USD)" "Сегодняшний курс валюты"
Старый 28.04.2005, 11:36   #18  
.rejector. is offline
.rejector.
Участник
Аватар для .rejector.
 
35 / 10 (1) +
Регистрация: 16.10.2003
угу, благодарен.

реализовал алгоритм по второму варианту.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Можно ли сортировать по FlowField??? Greggy NAV: Программирование 3 25.11.2004 03:11
Вычисление FlowField в отчете Greggy NAV: Программирование 3 12.11.2004 07:39
Дублирование FlowField Nataly NAV: Программирование 7 21.01.2004 12:38
SIFT over FlowField Rom NAV: Программирование 1 02.12.2003 13:36
Фильтры в CalcFormula у FlowField Nataly NAV: Программирование 2 13.10.2003 11:16

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

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

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