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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.07.2011, 11:27   #1  
jopagames2 is offline
jopagames2
Участник
 
151 / 11 (1) +
Регистрация: 11.02.2010
Привет всем.

Возникла следующая проблема с наложением фильтров.
Никак не могу сообразить.

Есть некая простенькая таблица "Резервы", куда филиалы вносят свои данные о резервах.
Точнее, не вносят, а периодически присылают почтой, а менеджер в ЦО (центральном офисе) потом эти данные загружает.

Собственно, вопрос?!
Как прикрутить эти данные к таблице Товар так, чтобы менеджеры в ЦО могли смотреть остатки филиалов (как сразу, так и по отдельности)

Поля в этой таблице Резервы совсем простые:

"Код отдела"
"Товар Но."
"Дата резерва"
"Резерв Кол-во"

Всё вроде бы тупо и я начал было делать так...

В таблице Товар создаю поле "Дата резерва филиала" тип переменной Date, а тип поля FlowField
На это поле накладываю формулу, которая ищет максимальную дату обновления резервов по этому товару в таблице Резервы.
= Max("Резервы"."Дата Резерва" WHERE (Товар Но.=FIELD(Но.)))

Далее в таблице товар делаю поле "Резерв филиал" Decimal и тоже FlowField с формулой
= Sum("Резервы"."Резерв Кол-во" WHERE (Товар Но.=FIELD(Но.),Код отдела=FIELD(Отдел Фильтр),Дата Резерва=FIELD(FILTER(Дата резерва филиала))))

Если схематично, то
Товар Но. -> Но.
Код Отдела -> Отдел Фильтр
Дата резерва -> Резерв филиал фильтр + ставлю галочку на св-ве "Value as filter"

Собственно, вот.
Всё просто до идиотизма, но... Но не работает!
Ругается на несоответствие типа поля "Дата резерва филиала"(Date) и накладываемого фильтра (Code или Text)
(а если ставлю полю "Дата резерва филиала" вместо Date тип Text, то на нём тогда отказывается работать формула поиска максимальной даты)

Подскажите, кто знает как это победить или как-то наложить фильтры иначе?

Никакого КОДА писать не хочу принципиально! Вот упёрся лбом и всё - НЕ БУДУ!!!
Хочется победить все эти "ограничения" красиво, лишь наложением фильтров и ПРАВИЛЬНЫМ составлением формул.
Старый 18.07.2011, 14:33   #2  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
Думаю, проблема в галочке на св-ве "Value as filter"
Старый 18.07.2011, 15:08   #3  
jopagames2 is offline
jopagames2
Участник
 
151 / 11 (1) +
Регистрация: 11.02.2010
Цитата:
Сообщение от Milk Посмотреть сообщение
Думаю, проблема в галочке на св-ве "Value as filter"
Стыдно ;(
Стыдно мне так, что хоть тему удаляй. Да не могу уже.

Спасибо, Milk.

ЗЫ: Оказывается, эта галка работает не совсем так, как я предполагал.
Старый 20.07.2011, 12:46   #4  
jopagames2 is offline
jopagames2
Участник
 
151 / 11 (1) +
Регистрация: 11.02.2010
Цитата:
Сообщение от Milk Посмотреть сообщение
Думаю, проблема в галочке на св-ве "Value as filter"
Блин! То работало-работало "без галочки", а то вдруг - ХЛОП! И перестало.

Короче, там оказалось всё ЕЩЁ немного хитрее

Поскольку оба поля являются CalcField'ами, а результат второго зависит от вычисленного значения первого, то Nav путается.
И тут главный вопрос: какое поле при выводе этих полей на форму Nav для себя считат "первым", а какое "вторым"?

Поля во всём этом Nav-зоопарке могут вычисляться в 3-х местах.

1) В свойствах формы CalcFields, когда перечисляем там поля через запятую.
(кстати, не факт, что вычисляется именно в том порядке, что вы написали, а не по ID этого поля в объекте)

2) При выводе колонки в таблице на экран. Тоже там Nav сам себе запускает calcfields.

3) В триггерах формы типа OnAfterGetRecord (или прочих) втупую вызовом Товар.calcfields(xxx) в нужном НАМ(!), а не Nav порядке.

И вот если предположить, что программист написал одновременно несколько вычисляемых полей в свойствах формы, потом в колонки таблицы их вывел (а юзер у себя на компе эти колонки ещё и местами поменял)

То ХРЕН ЗНАЕТ, как там вызывается CalcField и в каком порядке.

Короче, не надо делать зависящие друг от друга вычисляемые поля - вот я всё это к чему. Извращение это.
Это так... совет. Мало ли... пригодится.

Всем удачи.

ЗЫ: Сам же решил вопрос "втупую" по способу 3. Вроде работает
 


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

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

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