ОСВ по подотчетникам
DAX2009.
Странное дело - ОСВ по подотчетным лицам вызывает ошибку runtime, если есть проводки по какому-то подотчетнику ранее выбранного периода, но нет по нему же в выбранном периоде. Разбор показал что похоже просто-напросто недоработали - всё дело в контейнере переменных, который формируется по определенному принципу, и потом присваивается набору переменных.
Поясню - ОСВ по подотчетникам формируется с помощью класса, наследующего от ОСВ по контрагентам, т.е. RLedgerSheetEngine_TurnoverAdvHolder extends RLedgerSheetEngine_TurnoverCustVend. И использует унаследованный метод buildOutputValue, где ожидается контейнер, у которого первые 8 элементов вещественного типа. Но, этот контейнер для ОСВ по контрагентам формируется в RLedgerSheetServer_TurnoverCustVent.updateAccounts, а в случае подотчетников отрабатывает перекрытый RLedgerSheetServer_TurnoverAdvHolder.updateAccounts, и он формирует контейнер другого формата, там только первые 6 элементов вещественные, а 8-й - тоже контейнер, который либо connull (как раз для того случая, когда проводки по подотчетнику не попадают в наш период), либо содержит в себе значения профилей разноски из проводок. Но, так или иначе, такой контейнер не имеет смысла при парсинге в RLedgerSheetEngine_TurnoverCustVend.buildOutputValue в силу своего специфического формата, и думается мне, изначально у разработчиков была задумка доработать и RLedgerSheetEngine_TurnoverAdvHolder, перекрыв ему нужные методы, в том числе и buildOutputValue, но по какой-то причине этого не сделали.
Просьба к тем, кто уже разбирался с этой проблемой и знаком с ней, посоветуйте какое тут наилучшее решение. Может, у нас просто нет какого-нибудь SPacka, в котором уже существует необходимая заплатка?
Спасибо всем откликнувшимся!
|