25.06.2015, 12:34 | #1 |
Участник
|
Закрытие склада: обработка маркированных проводок
Уважаемые коллеги, добрый день!
Возникла проблема при закрытии склада в основной валюте. Суть проблемы: есть расходная проводка, открытая в основной валюте (Форма 'Проводки' --> Закладка 'Разное' --> Группа 'Проводка' --> Поле 'Открытое значение' = "Да"), примаркированная к приходной проводке, закрытой в основной валюте. Количества в проводках совпадают по абсолютной величине (33 шт.). Однако, в расходной проводке (которая открыта и которую процедура закрытия склада пытается закрыть) есть сопоставленное в основной валюте количество и оно больше, чем количество в самой проводке (-67). В результате система сходит с ума и падает из метода \Classes\InventCostItemDim\updateSettleRefTransId. Текст ошибки: "Количество разбиения должно иметь такой же знак как и у проводки" (пунктуация сохранена). Закрытие склада отваливается по ошибке. Стали разбираться с таким чудом. Выяснили следующее: до упавшего закрытия в основной валюте мы делали закрытие во вторичной (причём, за значительно более ранний период). Перед закрытием во вторичной в системе жили две проводки: приходная на 33 шт. и расходная на 67 шт. Обе были закрыты в основной валюте. При этом, на них имелась взаимная маркировка (картинку для наглядности вроде как вложил). При закрытии во вторичной система хватает приходную проводку (на 33 шт.), ищет первую примаркированную к ней расходную проводку (на -67 шт.), видит несоответствие количеств, разбивает расходную на две проводки: 1. 33 шт. (примаркирована к приходной на 33 шт.) 2. 34 шт. без каких-либо маркировок. При таком разбиении система никак не обрабатывает уже имеющиеся сопоставления в основной валюте (см. (\Classes\InventSplitTrans_Remain\mustSettlementBeSplited и \Classes\InventSplitTrans_RemainSecCur_RU\mustSettlementBeSplited), а просто делает расходную проводку открытой в основной валюте, но с сопоставленным количеством по-прежнему -67 шт. (и сохранёнными записями, в которых присутствует выполненные при закрытии в основной валюте сопоставления). В результате мы получаем красивую закрытую во всех валютах приходную проводку, примаркированную к расходной проводке, закрытой только в основной валюте, у которой, в свою очередь, неполадки с сопоставлениями в основной валюте. Для решения проблемы решили перед закрытием во вторичной валюте просто очистить маркировку на уже закрытых в основной валюте приходной (на 33 шт.) и расходной (на -67 шт.) проводках, чтобы системе не хотелось бить уже закрытую в основной валюте расходную проводку. Вопрос: правомерны ли наши действия с очисткой маркировки? Или мы что-то не учли и возможны печальные последствия? Работаем на старушке MS Business Solutions-Axapta 3.0 CIS SP3 Build #9.2 on 28.04.2004. |
|
Теги |
баг, вторичная валюта, закрытие склада, маркировка |
|
|