Добрый день, есть ли какая ни будь памятка, инструкция по работе системы взаиморасчетов. Некоторые моменты не ясны.
Ситуация:
ЗН1 от 28.03.2021 сумма 10 000 руб (в документе стоит Авто закрытие сделки) ЗН2 от 30.03.2021 сумма 20 000 руб (в документе стоит Авто закрытие сделки)
Документ банковская выписка поступление 20 000 руб. в котором в качестве сделки указан ЗН2 на сумму 20 000 руб. (в документе не стоит Авто закрытие сделки)
При проведении документов Оплата 10 000 падает на ЗН1 Оплата 10 000 падает на ЗН2
Где логика ? Если я определил в Банковской выписки что оплата пришла за ЗН2, почему она закрывается на ЗН1 ? Если бы ЗН2 был раньше по времени ЗН1 то закрытие было бы корректно, но часто так не бывает
Проблема как мне кажется в функции ПолучитьНеЗакрытыеСделки() модуля регистра Взаиморасчеты, и 3х этапного алгоритма закрытия суммы
на первом этапе при проведении ЗН1 она пытается найти остаток по этой сделки и не найдя его на втором этапе она выбирает любые остатки кроме остатков по ЗН1 и забирает оплату ЗН2
тут либо полностью отключать Авто закрытие сделки в системе, но тогда как закрывать авансы, либо в каждом случае использовать ручное управление галочкой Авто закрытие сделки, что нереально при большом количестве документов.
Возможное решение, изменить код в модуле Взаиморасчетов
Изменить фильтр в случае закрытия взаиморасчетов по ФИФО с авто закрытием, брать остатки взаиморасчетов только где сделка документ оплаты
Функция ПолучитьНеЗакрытыеСделки(ТолькоОстаткиПоСделке = Ложь, Приход = Неопределено)
// Получим фильтр на сделки Если ТолькоОстаткиПоСделке Тогда СтрОтбор = "(Сделка=&Сделка)"; СтрОтборФизТаб = ""; ИначеЕсли ЗначениеЗаполнено(Сделка) Тогда СтрОтбор = "(Сделка ССЫЛКА Документ.Выписка ИЛИ Сделка ССЫЛКА Документ.ПриходныйКассовыйОрдер ИЛИ Сделка ССЫЛКА Документ.ЧекНаОплату)"; СтрОтборФизТаб = "ГДЕ | ВзаиморасчетыКомпании.Сделка ССЫЛКА Документ.Выписка ИЛИ ВзаиморасчетыКомпании.Сделка ССЫЛКА Документ.ПриходныйКассовыйОрдер ИЛИ ВзаиморасчетыКомпании.Сделка ССЫЛКА Документ.ЧекНаОплату"; Иначе СтрОтбор = ""; СтрОтборФизТаб = ""; КонецЕсли;
При распределении оплаты в случае если остался остаток бросать его на документ оплаты Функция Расход()
//Если ЗначениеЗаполнено(Сделка) И ВзаиморасчетыСПокупателем = Истина Тогда // СделкаПереплаты = Сделка; //Иначе СделкаПереплаты = ШапкаДокумента.Ссылка; //КонецЕсли;
Андрей Владимирович, если Вам необходимо оплачивать выборочно сделки, то и в договоре и в документе ЗН флаг "автоматическое закрытие сделок" стоять не должен.
Серьезно ? Это как то все мягко говоря не логично, тут мы галочку убираем в договоре и заказ наряде, а если нам этот же клиент закинет аванс, как тогда ? опять в договоре этом же ставим галочку что бы аванс закрылся, так что ли ? А потом мы запустим восстановление последовательностей взаиморасчетов и все слетит в зависимости от установленной на этот момент галочки в договоре ?
Андрей Владимирович, по приведенной Вами ситуации в первом примере Вы делали восстановление последовательностей после указания сделки в БВ, которая должна закрыть ЗН2?