16.02.2012, 03:45 | #1 |
Участник
|
Ах2009 Запрос - ОСВ по складу
В одной из компаний не видятся проводки в таблице InventSettlenment c типом корректировка при формировании отчета Управление зарасами\проводка\Оборотная ведомость по складу.
Что интересно: В классе InventSumDateFinancialCalc_RU в методе calcTransFinancialSettlements считаются корректировки. Видит он это из [s] \Classes\InventSumDateFinancialCalc_RU\calcItem 13 [s] \Classes\InventSumDateFinancialCalc_RU\calcItems 16 [s] \Classes\InventSumDateFinancialCalc_RU\run 10 [s] \Classes\InventTurnoverReport_RU\calcTrans 3 [s] \Classes\InventTurnoverReport_RU\run 11 [s] \Classes\InventTurnoverReport_RU\main 8 [s] \Classes\MenuFunction\runServer [c] \Classes\FormFunctionButtonControl\Clicked Беру оборотку. Теретически в нее должен попасть персчет склада с типом Разноска в сальдо на начало периода (проблема анлогичная и с оборотами).. Не попадает. При этом если убрать условие settlement.SettleModel != InventSettleModel::PhysicalValue Начинает попадать. Только вопрос в том, что проводка итак Корректировка. Оставляю условие SettleModel и комментирую условие на начальную дату, проводка попадает. При этом попробовала добавить в группировку SettleModel. Проводка действительно Корректировка и все должно быть хорошо. Может есть какие-то дополнительные настройки? Последний раз редактировалось Arahnid; 16.02.2012 в 03:52. |
|
16.02.2012, 08:33 | #2 |
Участник
|
Цитата:
Сообщение от Arahnid
если убрать условие
settlement.SettleModel != InventSettleModel::PhysicalValue Начинает попадать. Только вопрос в том, что проводка итак Корректировка. Оставляю условие SettleModel и комментирую условие на начальную дату, проводка попадает. При этом попробовала добавить в группировку SettleModel. Проводка действительно Корректировка и все должно быть хорошо. Когда вы добавляли группировку по SettleModel случайно не появлялись отрицательные значения, которые могли бы объяснить возможное обнуления суммы? Хотя проверка на ноль - это только гипотеза, в реальности там может быть что-то ещё. |
|
16.02.2012, 09:03 | #3 |
Участник
|
Проверка на сумму там есть, но я вообще в этом цикле отключала все условия.
Оставляла 3: номенклатура, тип движения и начальная дата. Эффект тот же. Отключила условие на settlement.InventTransCurrency_RU == InventTransCurrency_RU::PrimaryCur все в том же классе InventSumDateFinancialCalc_RU в методе calcTransFinancialSettlements . Оставила остальные условия и заработало. InventTransCurrency_RU - эту колонку вижу в таблице inventsettlement. Делаю открыть таблицу черз аксапту - нет. Открываю СКУЛЬ. Смотрю колонки - нет такой. Глобальная компиляция не помогла. Что это за реквизит? Почему только в одной компании такая проблема не ясно. Двух валютный склад отключен. Последний раз редактировалось Arahnid; 16.02.2012 в 09:59. |
|
16.02.2012, 10:09 | #4 |
Участник
|
|
|
16.02.2012, 10:12 | #5 |
Участник
|
Так куда посмотреть. Проводки в inventsettlement в двух компаниях абсолютно идентичны по заполняемости реквизитов. Но в одной работает, а в другой нет..
|
|
16.02.2012, 11:27 | #6 |
Участник
|
Ну, собственно, в подобных случаях везде в коде делают проверку на тот факт, что необходимый ключ включен. Вероятно, именно в данном месте это сделать забыли. Надо просто добавить эту проверку примерно так
X++: Boolean isEnabledKey = global::isConfigurationkeyEnabled(configurationkeynum(InventClosingSecCur_RU)); while select ... ... && (! isEnabledKey || settlement.InventTransCurrency_RU == InventTransCurrency_RU::PrimaryCur) ... Хотя обычно подобная проверка выполняется при конструировании Query и это является признаком того, надо ли создавать дополнительный Range или нет. Для прямого select не вполне понятно как это сработает. PS: Если поле таблицы есть в AOT, но физически его не существует, то это явное указание на то, что отключен соответствующий ключ.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
16.02.2012, 15:13 | #7 |
Участник
|
Не помогло условие на ключ.
Мне тогда проще строку комментировать, т.к. двухвалютного склада у нас нет и не будет |
|
16.02.2012, 18:13 | #8 |
Участник
|
На всякий случай, а что, собственно, возвращает
X++: print global::isConfigurationkeyEnabled(configurationkeynum(InventClosingSecCur_RU)); pause; В смысле, ключ действительно отключен? Имею в виду, что по этому поводу "думает" Axapta именно в этой компании.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
27.04.2012, 22:34 | #9 |
Участник
|
А я в методе calcTransPhysicalSettlements класса InventSumDateFinancialCalc_RU наткнулся на то, что некорректно работала вот эта часть запроса (27-я строка в методе) :
X++: && positive * settlement.CostAmountAdjustment > 0 X++: && ( ( _positive && settlement.CostAmountAdjustment > 0) || ( !_positive && settlement.CostAmountAdjustment < 0 )) На всякий случай такое же изменение вставил и в метод calcTransFinancialSettlements.
__________________
Дмитрий |
|
27.04.2012, 22:38 | #10 |
Участник
|
Damn, Аксапта не всегда правильно определяет порядок выполнения операторов. Возможно, в стандартном коде достаточно было просто расставить скобки.
|
|
27.04.2012, 22:42 | #11 |
Участник
|
Цитата:
Ну то есть не "даже избавиться", а просто не напрягать аксапту таким сложным арифметическим действием в условиях запроса. И заменить его на понятные ей "скобки + логические операторы".
__________________
Дмитрий Последний раз редактировалось Damn; 27.04.2012 в 22:48. |
|
28.04.2012, 08:50 | #12 |
Участник
|
Заглянул в Hotfix Rollup 8. Там это место не поправлено.
__________________
Дмитрий |
|
Теги |
ax2009, select |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|