Расчеты по срокам в РИБ УТ 11.5
У клиента в РИБ плохо ведутся регистры расчеты по срокам с поставщиками и покупателями. В результате чего показываются не актуальные данные.
Длинное скучное расследование
Необходимость расчета по срокам определяется после проведения документа в модуле ВзаиморасчетыСервер.ПослеЗаписиДвиженийДокумента:

Но почему-то у меня при перепроведении реализации товаров необходимость расчета плановых расчетов была, а фактических нет.
Далее вызываются процедуры ОперативныеВзаиморасчетыСервер.ВыполнитьФоновоеРаспределениеРасчетов, ОперативныеВзаиморасчетыСервер.ВыполнитьОтложенноеРаспределение, но там все сложно — сон разума, обработка в несколько потоков.
Константа НоваяАрхитектураВзаиморасчетов установлена в Истина.
В старой архитектуре использовались регистры: ЗаданияКРаспределениюРасчетовСКлиентами, ЗаданияКРаспределениюРасчетовСПоставщиками. В новой — регистр ЗаданияКРаспределениюРасчетов.
Записи по нему формируются в процедуре ОперативныеВзаиморасчетыСервер.ЗарегистрироватьИзмененияКОтложенномуРаспределению:

Таблица изменений для пересчета заполняется в процедуре ОперативныеВзаиморасчетыСервер.ТаблицаИзмененийДляПересчета:

Где ТаблицаИзменений формируется по одной или нескольким таблиц РасчетыСКлиентамиИзменения и РасчетыСПоставщикамиИзменения.
В принципе, запись в регистр можно сделать на основе движений документа по расчетам по срокам:
ТипРасчетов Расчеты с клиентом
АналитикаУчетаПоПартнерам: Тут аналитика
ОбъектРасчетов: Основной договор с покупателем
ВалютаРасчетов: руб.
АналитикаУчетаПоПартнерамПриемник:
ОбъектРасчетовПриемник:
ВалютаПриемник:
Документ: Реализация товаров и услуг СЕ0Ц-005368 от 24.11.2025 18:58:20
ПоДаннымОбъектаРасчетовИсточника: ЛОЖЬ
ПорядокФакт: 20251124218582039СЕ0Ц-0053681
ПорядокПлан: 20251124218582039СЕ0Ц-0053681
ПорядокОперации: 20251124218582039СЕ0Ц-0053681
НачальноеЗаполнение: ЛОЖЬ
Но это слишком сложно.
Рабочий вариант
По сути, у нас нет возможности указать 1С перерасчитать расчеты за период, мы можем это сделать только через перепроведение документов. Но нужно, чтобы таблица изменений не учитывалась, чтобы перерасчет был по каждому документу.
Текст запроса на изменение расчетов по срокам получается в процедурах ПриЗаписи модуля наборов записей регистров накопления РасчетыСКлиентами и РасчетыСПоставщиками.:

В процедуре ПередЗаписью формируется таблица РасчетыСклиентамиПередЗаписью. Тут в выражении ЭтотОбъект.Отбор.Регистратор.Значение.Проведен можно понять, происходит проведение или отмена проведения документа.
Так вот, если это проведение, то можно очистить записи таблицы РасчетыСКлиентамиПередЗаписью в конце процедуры ПередЗаписью. Тогда независимо от того, это проведение не проведенного документа или проведение проведенного, в таблице изменений будут все движения по регистру и расчет по срокам пересчитается.
Альтернатива
Начиная с версии 11.4.10.57 в помощник Закрытие месяца добавлена процедура контроля и устранения разрывов расчетов с партнерами по данным регистров оперативного учета. Процедура работает только для онлайн взаиморасчетов.
Разрывами считаются выявленные отличия между остатками оперативных регистров взаиморасчетов (регистры Расчеты с клиентами, Расчеты с поставщиками) и остатками финансовых регистров взаиморасчетов (регистры Расчеты с клиентами по срокам, Расчеты с поставщиками по срокам).
Исправление ошибок, как и актуализация расчетов, будет происходить с первого месяца, на который есть задание к закрытию месяца по взаиморасчетам
Если база не РИБ, то в центральной базе можно запускать этот помощник для выравнивания взаиморасчетов.
В РИБ попробовал добавить регистры в план обмена, чтобы движения по нему приходили с обменом:

Не делайте так! В итоге в центр прилетело много записей без регистратора, с битой аналитикой по поставщикам, пришлось ставить несколько заплаток на обмены. 1С не очень любит подобные вмешательства!
Замечание: новые конфигурации 1С пишутся ужасно, не документировано, понять смысл регистров, движений сложно. 1С превращается в черный ящик.
Среда: УТ 11.5.22.92 Объем: 1.5 час




Свежие комментарии