21.05.2008, 15:37 | #1 |
Участник
|
Здравствуйте.
Сначала хочу рассказать, как проявляется данная ошибка: 1. Берем стандартный Navision на SQL, версия любая. У нас 3.60.04, с клиентом 3.70, но это не имеет значения, пробовал и на 4.0 sp3. В таблице G/L Entry, у ключей должен быть включен MaintainSIFTIndex, т.е. должна быть включена поддержка SIFT (по умолчанию все включено). 2. Берем любое глобальное измерение и добавляем ему значения: VALUE1 VALUE2 VALUE3 VALUE4 VALUE5 VALUE6 3. В фин. журнале делаем 2 проводки по 2-м любым фин. счетам, одну со значением измерения VALUE5, а другую с VALUE6. 4. Открываем план счетов и ставим по выбранному глобальному измерению следующий FlowFilter: (VALUE4|VALUE1)&(VALUE5|VALUE2..VALUE3) Согласно логике это выражение дает пустой результат, однако смотрим на план счетов. В нем присутствует сумма из нашей проводки с VALUE5. 5. Открываем план счетов и ставим по выбранному глобальному измерению следующий FlowFilter: (VALUE4|VALUE1|VALUE6)&(VALUE6|VALUE5|VALUE2..VALUE3) Согласно логике это выражение должно отобрать все фин. операции с о значением измерения VALUE6 однако смотрим на план счетов. В суммах учтены проводки со значениями VALUE6 и VALUE5. Выяснилось что таких выражений FlowFilter, при которых в плане счетов показываются неверные суммы можно подобрать много, может быть очень много. В файловой версии все работает правильно. Если в SQL версии в таблице G/L Entry у ключей отключить MaintainSIFTIndex то опять работает правильно, но очень медленно (если база большая). Перегенерация SIFT индексов ошибку не исправляет. Оба правильно работающих варианта не устраивают, нужен полноценный SQL c поддержкой SIFT, поскольку нужна скорость вычислений и SQL для интеграции с другими системами. Почему у нас используются такие выражения во FlowFilter: У нас переписаны фин. отчеты, фильтры глобальных измерений можно задавать и в строках и в столбцах. Результат показываемый в ячейках, есть множество операций попадающих под пересечение фильтров строк и столбцов. Т.е. по сути дела для каждой ячейки динамически формируется собственный уникальный фильтр, в том числе он может оказаться и таким как в примере выше. Из-за данной ошибки, фрагментарно, в некоторых ячейках отчетов оказываются суммы, которых быть не должно вообще т.к. результат пересечения фильтров пустое множество (как в 4 пункте моего примера) или они добавляются к реально существующим суммам (как в 5 пункте моего примера). Насколько я смог понять, когда SIFT технология используется в SQL версии, клиент Navision пытается проанализировать и вычислить результат логического выражения представленного в фильтре. Таким образом, создатели Navision видимо хотели упростить и сократить кол-во SQL запросов, которые клиент потом делает к базе данных. Так вот похоже, что решение логического выражения клиент Navision иногда находит неправильно, ошиблись ребята где-то. Если посмотреть под MS SQL Profiler какой SQL запрос Navision делает к серверу, то можно понять что результатом выражения FlowFilter приведенного в 4 пункте моего примера он считает значение VALUE5, т.е. он выбирает все операции только с данным значением аналитики. Для выражения из 5 пункта моего примера SQL запрос делается для аналитик VALUE6 и VALUE5. СТАЛКИВАЛСЯ ЛИ КТО-НИБУДЬ С ПОДОБНОЙ ПРОБЛЕМОЙ? ЕСТЬ ЛИ ЕЕ РЕШЕНИЕ ИЛИ ПУТИ ОБХОДА? ЗАРАНЕЕ БАГОДАРЕН ЗА ПОМОЩЬ. |
|
21.05.2008, 16:02 | #2 |
Участник
|
Цитата:
Поэтому вполне правильно, по моему мнению, такой результат. Цитата:
5. Открываем план счетов и ставим по выбранному глобальному измерению следующий FlowFilter:
(VALUE4|VALUE1|VALUE6)&(VALUE6|VALUE5|VALUE2..VALUE3) Согласно логике это выражение должно отобрать все фин. операции с о значением измерения VALUE6 однако смотрим на план счетов. В суммах учтены проводки со значениями VALUE6 и VALUE5. Цитата:
СТАЛКИВАЛСЯ ЛИ КТО-НИБУДЬ С ПОДОБНОЙ ПРОБЛЕМОЙ? ЕСТЬ ЛИ ЕЕ РЕШЕНИЕ ИЛИ ПУТИ ОБХОДА? ЗАРАНЕЕ БАГОДАРЕН ЗА ПОМОЩЬ.
|
|
24.05.2008, 00:31 | #3 |
Участник
|
Цитата:
{VALUE4,VALUE1} и {VALUE5,VALUE2,VALUE3}. И c чего Вы решили что их пересечением является VALUE5? |
|
29.05.2008, 01:14 | #4 |
Участник
|
|
|
03.07.2008, 15:08 | #5 |
Участник
|
Данная ошибка исправлена в Navision 5.0 SP1. Тема закрыта, всем спасибо.
|
|