Показать сообщение отдельно
Старый 15.04.2008, 18:27   #16  
konfet is offline
konfet
Снова балуюсь косаптой :)
 
143 / 50 (2) ++++
Регистрация: 23.04.2003
Адрес: Moscow
! Up!
Цитата:
Сообщение от Peter Savintsev Посмотреть сообщение
Я достаточно долго занимался изучением данного вопроса и пришел к выводу, что добиться создания именно сторнирующих проводок при закрытии можно только путем очень тяжелых и опасных модификаций. Объясню почему.

Для примера возьмем проводку списания материалов Д20 К10 на сумму 1000.

Как известно, сторнирующие проводки отличаются от обычных тем, что в поле Коррекция у них стоит Да (LedgerTrans.Correct = NoYes::Yes), а реверсированные - это проводки с обратной корреспонденцией. Для нащего примера сторнирующей проводкой будет Д20 К10 -1000, а реверсирующей Д10 К20 1000.

За создание проводок отвечают классы LedgerVoucher и LedgerVoucherObject. Последний при создание объекта прнимает параметр Correction, который и отвечает за то, будет ли проводка сторнирущей или реверсированной. Важное замечание: документ ГК может быть либо целиком сторно, либо целиком реверс. То есть ситуация, когда часть провдок в рамках одного документа ГК являются сторнирующими, а часть реверсированными, невозможна (в рамках стандартного функционала, естественно ). Чтобы убедится в этом, достаточно взглянуть на конструктор класса LedgerVoucherObject newVoucher, который принимает в качестве параметра помимо прочего документ ГК для проводки (_voucher) и признак сторно (_correction).
ВОПРОС К НАРОДУ.
Ситуация со времен написания данного поста (2004 год) никак не изменилась? Имеем 3.0 SP4 с указанным в ветке поведением системы: при операции коррекции - закрытия склада, вместо создания сторно - система создает реверсивные проводки и, соответственно, плывут обороты по 20 счету и воют бухгалтера.
Было ли сие пофиксено в SP5 или, быть может, в каких-то дальнейших хотфиксах? Если нет - то может кто-нибудь добрый поделится рабочим решением проблемы в виде проектика?
__________________
Бесты и регарды!