В современных конфигурациях на базе 1С:ERP, таких как 1С:Управление торговлей 11.3+ и Комплексная автоматизация, используется сложный механизм «офлайновых» взаиморасчетов. Одной из самых частых и неприятных проблем является ситуация, когда остатки по двум ключевым регистрам — РасчетыСКлиентами и РасчетыСКлиентамиПоДокументам — перестают совпадать. Разберем подробно, почему это происходит и как восстановить порядок в базе.
Для начала проанализируем, как система хранит данные. В 1С используется двухэтапная схема:
Если «оперативный» регистр показывает общую сумму 10 000 рублей, а «детальный» утверждает, что по накладным распределено только 8 000 — значит, цепочка распределения разорвана.
Прежде чем приступать к исправлению, рассмотрим основные причины возникновения разрывов:
Корректировка записей регистров. Если исправить данные только в одном регистре, механизм распределения при следующем запуске либо затрет ваши правки, либо удвоит ошибку.Это самый правильный «типовой» метод. Система понимает, что нужно что-то пересчитать, ориентируясь на специальные технические регистры сведений. Если данные разошлись даже в закрытом периоде, значит, граница распределения была установлена ошибочно. Выполним следующие шаги:
Задания к распределению расчетов с клиентами (и аналогичный для поставщиков).Проанализируем ситуацию: если заданий очень много (десятки тысяч), система может выполнять расчет долго. Однако это необходимо, чтобы 1С заново «пробежала» по всем документам и выстроила верные цепочки в детальном регистре.
Иногда массовый пересчет не помогает из-за ошибки в конкретном документе, на котором «спотыкается» алгоритм. Нам нужно найти момент, где остатки впервые разошлись. Рассмотрим, как это сделать с помощью запроса или отчета:
Сформируем отчет «Ведомость расчетов с клиентами» и сравним его с данными консоли запросов по двум регистрам. Напишем простой запрос для поиска разницы:
ВЫБРАТЬ
Т1.АналитикаУчетаПоПартнерам,
Т1.ОбъектРасчетов,
СУММА(Т1.СуммаОстаток) КАК СуммаОперативная,
СУММА(ЕСТЬNULL(Т2.СуммаОстаток, 0)) КАК СуммаДетальная
ИЗ
РегистрНакопления.РасчетыСКлиентами.Остатки(&ДатаКонтроля, ) КАК Т1
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.РасчетыСКлиентамиПоДокументам.Остатки(&ДатаКонтроля, ) КАК Т2
ПО
Т1.АналитикаУчетаПоПартнерам = Т2.АналитикаУчетаПоПартнерам
И Т1.ОбъектРасчетов = Т2.ОбъектРасчетов
СГРУППИРОВАТЬ ПО
Т1.АналитикаУчетаПоПартнерам,
Т1.ОбъектРасчетов
ИМЕЮЩИЕ
СУММА(Т1.СуммаОстаток) <> СУММА(ЕСТЬNULL(Т2.СуммаОстаток, 0))
Найдя проблемный ОбъектРасчетов, проанализируем карточку расчетов по нему. Выясним, какой документ первым создал разницу. Часто достаточно просто отменить проведение и заново провести этот документ, чтобы инициировать автоматическую регистрацию задания на распределение.
Если ваша база, как выразился автор темы, «вусмерть перепиленная», типовые механизмы могут не работать. В этом случае стоит проверить, не затронуты ли модули проведения в части регистратора Движения. Рассмотрим алгоритм действий для разработчика:
ОбъектРасчетов. В УТ 11.3 это часто составной тип. Если в коде принудительно очищается ссылка или подставляется неверный тип (например, Заказ вместо Договора), регистры разойдутся мгновенно.Если база находится в критическом состоянии и восстановить последовательность за несколько лет невозможно, остается радикальный, но эффективный метод:
Корректировка записей регистров полностью обнулим остатки по обоим регистрам (РасчетыСКлиентами и РасчетыСКлиентамиПоДокументам).Ввод остатков или ту же корректировку, строго соблюдая идентичность данных в обоих регистрах.Важный момент: При вводе остатков вручную обязательно следите за тем, чтобы Сумма (в валюте расчетов) и СуммаРегл (в валюте регламентированного учета) соответствовали друг другу, иначе вы получите новые ошибки при первой же переоценке валютных средств.
Подводя итог, отметим, что механизм распределения расчетов в 1С — это «черный ящик», который требует бережного отношения к последовательности документов. Регулярное выполнение Закрытия месяца и отсутствие ручных правок в регистрах — залог того, что ваши остатки всегда будут сходиться.