Показать сообщение отдельно
Старый 17.11.2011, 14:48   #1  
zelibobis is offline
zelibobis
Участник
 
71 / 24 (1) +++
Регистрация: 15.10.2007
Адрес: Kiev
Необходимые действия, для того, чтобы автоматически сопоставить операции:
1. Для проводки, которую мы хотим сопоставить (CustVendTrans) мы вызываем метод
CustVendTrans.transData().markForSettlement(CustVendTable);
Номер счета в CustVendTable должен быть точно такой же, как и в CustVendTrans.
Этот метод нужно вызывать в цикле по всем операциям, которые мы хотим сопоставить. После прохождения цикла вызывается метод
VendTrans::settleTransact(CustVendTable);
У него куча параметров, но реально можно указать только один.
2. Для чего в параметрах указывается CustVendTable ?
Все записи в таблице SpecTrans(туда помещаются операции, которые будут сопоставлены), которые своими полями SpecRecId и SpecTableId должны указывать на одну и ту же запись в CustVendTable.
Дело в том, что механизм сопоставления работает приблизительно так:в CustVendSettlment.SettleNow() передается запись из CustVendTable.Он находит все записи в SpecTrans, связанные с этим CustVendTable и сопоставляет их. Забодится о тот какую конкретно операцию нужно сопоставить с какой, если их больше 2-х (например мы в цикле прошли и отметили для сопоставления 4 операции) не нужно, класс сопоставления сам опеределит, что и с чем красиво сопоставить.
За это сообщение автора поблагодарили: egater (1).