Ведение взаиморасчетов в программе «1С:Управление торговлей 11» (а также в соплатформенных ERP и Комплексной автоматизации) — это гибкий, но весьма чувствительный к дисциплине ввода данных механизм. Часто на начальном этапе внедрения компании выбирают детализацию расчетов «По заказам» или «По накладным». На бумаге это выглядит отлично: всегда видно, какая оплата относится к конкретной отгрузке. Однако на практике пользователи быстро сталкиваются с реальностью: оплаты вносятся общей суммой, никто не хочет вручную распределять платежи по десяткам накладных, а в отчетах начинает расти пугающее встречное сальдо.
В этой статье мы подробно проанализируем, как с наименьшими потерями перевести учет на детализацию «По договорам» задним числом, разберем возникающие при этом риски и предложим несколько готовых сценариев решения проблемы.
Первое естественное желание любого пользователя или неопытного администратора — открыть карточку договора (или соглашения) и изменить реквизит «Детализация расчетов» с «По заказам/накладным» на «По договорам». Однако программа не позволит выполнить это действие так просто.
Если по договору уже проведен хотя бы один документ, система заблокирует редактирование реквизита и выдаст системную ошибку: «Изменение запрещено, объект расчетов используется в других объектах». Платформа делает это не просто так. Дело в том, что в архитектуре 1С:УТ 11 понятие «Объект расчетов» является ключевым разрезом аналитики.
Даже если обойти эту блокировку программным путем, мы получим серьезное повреждение логики учета:
Выясним, какие существуют безопасные и эффективные методы исправления этой ситуации.
Это наиболее методологически верный и безопасный способ, который не требует программирования и не несет в себе рисков испортить сданную налоговую отчетность по НДС и прибыли.
Разберем этот сценарий по шагам:
Взаимозачет задолженности. Мы перенесем все остатки долгов и авансов со старых объектов расчетов (накладных) на один общий объект — новый договор.Если документов за прошедший период слишком много (несколько тысяч), а переходить на новые договоры руководство отказывается, требуя порядка в текущих, придется автоматизировать распределение. Напишем алгоритм, аналогичный тому, который успешно применяется в других конфигурациях.
Суть метода заключается в создании внешней обработки, которая по каждому контрагенту сопоставит накопленные оплаты и отгрузки по принципу FIFO (First In, First Out — «первый пришел, первый ушел»).
Проанализируем пример логики, которую необходимо реализовать в коде обработки:
// Псевдокод алгоритма распределения оплат по накладным
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасчетыСКлиентамиОстатки.АналитикаУчетаПоПартнерам КАК Аналитика,
| РасчетыСКлиентамиОстатки.ОбъектРасчетов КАК ОбъектРасчетов,
| РасчетыСКлиентамиОстатки.СуммаОстаток КАК Долг
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Остатки(&Период, ) КАК РасчетыСКлиентамиОстатки
|ГДЕ
| РасчетыСКлиентамиОстатки.СуммаОстаток > 0";
// Выбираем все платежные поручения и неоплаченные накладные
// Сортируем документы по дате и последовательно заполняем таблицы расшифровки платежа
// Для каждого платежного документа вызывается процедура автоматического подбора:
// ЗаполнениеДокументовРасчетов(ПлатежныйДокумент, ТаблицаНакладных);
Использование такой обработки позволит быстро «схлопнуть» зависшие авансы и долги по историческим документам без изменения самой структуры ведения взаиморасчетов. Клиенты останутся на ведении расчетов по накладным, но все связи будут автоматически выстроены корректно.
Если вы твердо решили полностью перевести прошлый период на детализацию «По договорам», то технически это реализуется через временное отключение проверок платформы и перезапись документов. Выполнять эту процедуру можно строго на копии базы данных!
Рассмотрим этот процесс пошагово:
ОбъектДоговора = СсылкаНаДоговор.ПолучитьОбъект();
ОбъектДоговора.ДетализацияРасчетов = Перечисления.ДетализацияРасчетов.ПоДоговорам;
ОбъектДоговора.ОбменДанными.Загрузка = Истина;
ОбъектДоговора.Записать();
Групповое изменение реквизитов во всех платежных и отгрузочных документах за период поле «Объект расчетов» перезаписывается ссылкой на сам договор.КлючиАналитикиУчетаПоПартнерам. Простое изменение реквизита в документе не обновит этот ключ. Нам потребуется запустить полное перепроведение всех измененных документов в хронологическом порядке.Закрытие месяца. Программа пересчитает движения по регистрам накопления РасчетыСКлиентами и РасчетыСПоставщиками, а также сформирует корректные проводки по зачету авансов.Важно: Этот способ крайне опасен, если за этот период уже сдана налоговая отчетность по НДС. Перепроведение документов может сдвинуть даты зачета авансов, что приведет к расхождениям в книгах покупок и продаж.
Решая проблемы с детализацией расчетов, обязательно обратите внимание на режим работы самой системы взаиморасчетов в вашей базе данных. Разработчики фирмы «1С» активно развивают и делают обязательным к применению онлайн-режим ведения взаиморасчетов.
Посмотрим на его ключевые преимущества:
Исправление разрывов остатков взаиморасчетов. При запуске закрытия месяца программа сама находит технические ошибки распределения и автоматически корректирует регистры.