Каталог решений - [ОБУЧАЛОВКА] Почему оплата не закрывает документ, на основании которого была выписана?

[ОБУЧАЛОВКА] Почему оплата не закрывает документ, на основании которого была выписана?

[ОБУЧАЛОВКА] Почему оплата не закрывает документ, на основании которого была выписана?

В наличии

Очень часто всплывает вопрос, аналогичный "Почему оплата не закрывает документ, на основании которого была выписана?" Уж сколько копий переломано по этому поводу, выдано объяснений и развернуто дискуссий… однако воз и ныне там… Вопросы и бредовые пожелания плодятся как кролики/тараканы (кстати, про тараканов у меня здесь: http://infostart.ru/profile/174/projects/1969/). Мой ответ простой: в рамках договора в типовой ТиС погашение долгов документами оплаты реализовано по ФИФО (документ-основание используется лишь для удобства заполнения документа оплаты), почему по ФИФО, а не, например, как описано в заголовке? ДА ОЧЕНЬ ПРОСТО!!! Бухгалтеры в принципе неспособны обеспечить закрытие документов-оснований документами оплаты по нескольким простым причинам: не учитывают взаимозачеты (дает сдвижку оплат); не учитывают возвраты (влияющие на долги по документам оплаты), частичные оплаты/переплаты добавляют геморроя… банальные ошибки как со стороны бухгалтеров при разноске платежей, так и со стороны клиентов при указании назначений платежей и т.д. Если это суммировать, то вывод простой — бухгалтера!!! ПРОСТО НЕСПОСОБНЫ ЦЕЛЕНАПРАВЛЕННО И АККУРАТНО ВЫПОЛНЯТЬ ВСЕ ТРЕБУЕМЫЕ ДЕЙСТВИЯ ПРИ ВЕДЕНИИ ВЗАИМОРАСЧЕТОВ ПО ПРИНЦИПУ ПОГАШЕНИЯ "ДОКУМЕНТОВ-ОСНОВАНИЙ"!!! (вдогонку: почему-то многие бухгалтера уверены, что они умеют ТУПО СЧИТАТЬ лучше, ЧЕМ ТУПО УМЕЕТ СЧИТАТЬ КОМПЬЮТЕР)

Категория:

Описание

..тем не менее дети все также тянут ручки к троиловым шашкам, а некоторые — и к атомным бомбам… Ну что же, дадим им поиграться… Реализуем в рамках типовой ТиС погашение платежей долгов клиентов не по принципу ФИФО, а по принципу привязки к «документам-основаниям»… Для этого надо внести небольшие коррективы в глобальный модуль в процедуру глДвижениеДолгов

.. в глобальном модуле смотрим процедуру глДвижениеДолгов()
от начала процедуры примерно 80-я строка

	ВремВзаим.ВыгрузитьИтоги(ТаблИтогов,1,1); ТаблИтогов.Сортировать("+КредДокумент",1); // погашаем долги по ФИФО 


в этом участке кода формируется простой список погашаемых долгов(документов), отсортированный по хронологии документов-долгов.

Сразу за этим кодом вставляем вот такой код:

	//НАЧАЛО вот здесь вставляем код, который делает что-надо 
Если глЕстьРеквизитШапки("ДокОснование", Конт.Вид()) <> 0 Тогда
//проверяем есть ли реквизит "ДокОснование"
Если Конт.ДокОснование.Выбран() <> 0 Тогда //проверяем указано ли основание поз = 0; Если ТаблИтогов.НайтиЗначение(Конт.ДокОснование,поз,"КредДокумент") > 0 Тогда
//по документу-основанию есть непогашенный долг
Если
поз > 1 Тогда //основание где-то в глубине, стоит в общей очереди
ТаблИтогов.СдвинутьСтроку(1-поз,поз); КонецЕсли; //сдвиг основания вверх КонецЕсли; КонецЕсли; //выбрано основание
КонецЕсли
; //по реквизиту шапки //КОНЕЦ вот здесь вставляем код, который делает что-надо


Вышеприведенный код приведен для частного случая — когда кредитный документ образует всего одну запись о долге (например, долг за товары). В общем случае, когда кредитный документ может образовывать несколько долгов (долг за товары, долг за услуги) — требуется творческая переработка данного кода 😉


…куда пойдет оставшаяся сумма платежа, если документ-основание по какой-либо причине уже оплачен частично — лично меня (при реализации вышеприведенного кода) как в пословице: «проблемы индейцев шерифа не волнуют»…
…В развитие выше приведенного кода можно предложить много чего интересного: например, если документ-основание уже оплачен частично — 100 руб накладная, 100 руб платеж, а по какой-то причине 20 руб по накладной уже получилось оплачено — СТОРНИРУЕМ 20 руб. ранее проведенной оплаты — бухгалтер же у нас супермозг — велел 100 рублей на накладную повесить — погашаем накладную на 100 руб, освободившиеся 20 руб. — или болтаются предоплатой (???) или идут в оплату следующих(???) неоплаченных накладных… о том как это показать по бухучету (сторнирование, перевод «освободившейся» оплаты в предоплату и т.д. и все действия по НДС, связанные с этим) — проблемы индейцев шерифа не волнуют…

Реализуем также другую хотелку: чтобы долги погашались не по ФИФО, не по документу основанию, а по хронологии дат оплат, указанных в качестве планируемых/ожидаемых в документах(долгах). Делаем так: в процедуре глДвижениеДолгов() строки кода

	ВремВзаим.ВыгрузитьИтоги(ТаблИтогов,1,1); ТаблИтогов.Сортировать("+КредДокумент",1); // погашаем долги по ФИФО


заменяем на такое:

	ВремВзаим.ВыгрузитьИтоги(ТаблИтогов,1,1); ТаблИтогов.НоваяКолонка("ДатаОплаты","Дата"); ТаблИтогов.ВыбратьСтроки(); Пока ТаблИтогов.ПолучитьСтроку()=1 Цикл 
ТаблИтогов.ДатаОплаты = ТаблИтогов.КредДокумент.ДатаОплаты; //тут маленькая "засада" -разбираться самим
КонецЦикла
; ТаблИтогов.Сортировать("+ДатаОплаты,+КредДокумент",1);


..
Все… Желаю успехов в труде и заработной плате!
ДА! Понравилось/пригодилось? Оставь благодарственный коммент автору и плюсани рейтинг…

has been added to your cart:
Оформление заказа