Как безболезненно перейти с ведения взаиморасчетов по накладным на расчеты по договорам в 1С:УТ 11?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Ведение взаиморасчетов в программе «1С:Управление торговлей 11» (а также в соплатформенных ERP и Комплексной автоматизации) — это гибкий, но весьма чувствительный к дисциплине ввода данных механизм. Часто на начальном этапе внедрения компании выбирают детализацию расчетов «По заказам» или «По накладным». На бумаге это выглядит отлично: всегда видно, какая оплата относится к конкретной отгрузке. Однако на практике пользователи быстро сталкиваются с реальностью: оплаты вносятся общей суммой, никто не хочет вручную распределять платежи по десяткам накладных, а в отчетах начинает расти пугающее встречное сальдо.

В этой статье мы подробно проанализируем, как с наименьшими потерями перевести учет на детализацию «По договорам» задним числом, разберем возникающие при этом риски и предложим несколько готовых сценариев решения проблемы.

Анализ проблемы: почему нельзя просто изменить настройки договора?

Первое естественное желание любого пользователя или неопытного администратора — открыть карточку договора (или соглашения) и изменить реквизит «Детализация расчетов» с «По заказам/накладным» на «По договорам». Однако программа не позволит выполнить это действие так просто.

Если по договору уже проведен хотя бы один документ, система заблокирует редактирование реквизита и выдаст системную ошибку: «Изменение запрещено, объект расчетов используется в других объектах». Платформа делает это не просто так. Дело в том, что в архитектуре 1С:УТ 11 понятие «Объект расчетов» является ключевым разрезом аналитики.

Даже если обойти эту блокировку программным путем, мы получим серьезное повреждение логики учета:

  1. В уже существующих (проведенных) документах объектом расчетов останется конкретная накладная или заказ.
  2. В новых документах объектом расчетов станет сам договор.
  3. Для программы это будут два абсолютно разных направления учета. Начнется лавинообразное расползание сальдо: по накладной будет вечно висеть долг, а по договору в целом — переплата (аванс). Автоматический зачет авансов перестанет работать, что мгновенно приведет к искажению данных для расчета НДС и финансового результата при закрытии месяца.

Выясним, какие существуют безопасные и эффективные методы исправления этой ситуации.

Способ 1. Административный переход («Новая жизнь с понедельника»)

Это наиболее методологически верный и безопасный способ, который не требует программирования и не несет в себе рисков испортить сданную налоговую отчетность по НДС и прибыли.

Разберем этот сценарий по шагам:

  1. Установка даты запрета редактирования. Чтобы пользователи случайно не изменили исторические данные, установим дату запрета редактирования документов на день перехода.
  2. Создание новых соглашений и договоров. Для всех контрагентов, по которым решено вести простой учет, создаем новые договоры с детализацией «По договорам». Старые договоры можно пометить признаком «Закрыт» или переименовать (например, добавить в наименование префикс «[архив]»).
  3. Постепенное закрытие старых долгов. Все новые отгрузки и оплаты с текущего момента оформляем строго по новым договорам. Старые задолженности закрываем по прежней схеме. Если приходит оплата по старому долгу, в платежном документе обязательно выбираем конкретный старый документ расчетов (заказ или накладную), чтобы закрыть остаток под ноль.
  4. Перенос остатков (при необходимости). Если ждать постепенного закрытия нет времени, можно воспользоваться документом Взаимозачет задолженности. Мы перенесем все остатки долгов и авансов со старых объектов расчетов (накладных) на один общий объект — новый договор.

Способ 2. Автоматическое распределение оплат по FIFO (Разработка обработки)

Если документов за прошедший период слишком много (несколько тысяч), а переходить на новые договоры руководство отказывается, требуя порядка в текущих, придется автоматизировать распределение. Напишем алгоритм, аналогичный тому, который успешно применяется в других конфигурациях.

Суть метода заключается в создании внешней обработки, которая по каждому контрагенту сопоставит накопленные оплаты и отгрузки по принципу FIFO (First In, First Out — «первый пришел, первый ушел»).

Проанализируем пример логики, которую необходимо реализовать в коде обработки:


// Псевдокод алгоритма распределения оплат по накладным
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	РасчетыСКлиентамиОстатки.АналитикаУчетаПоПартнерам КАК Аналитика,
    |	РасчетыСКлиентамиОстатки.ОбъектРасчетов КАК ОбъектРасчетов,
    |	РасчетыСКлиентамиОстатки.СуммаОстаток КАК Долг
    |ИЗ
    |	РегистрНакопления.РасчетыСКлиентами.Остатки(&Период, ) КАК РасчетыСКлиентамиОстатки
    |ГДЕ
    |	РасчетыСКлиентамиОстатки.СуммаОстаток > 0";

// Выбираем все платежные поручения и неоплаченные накладные
// Сортируем документы по дате и последовательно заполняем таблицы расшифровки платежа
// Для каждого платежного документа вызывается процедура автоматического подбора:
// ЗаполнениеДокументовРасчетов(ПлатежныйДокумент, ТаблицаНакладных);

Использование такой обработки позволит быстро «схлопнуть» зависшие авансы и долги по историческим документам без изменения самой структуры ведения взаиморасчетов. Клиенты останутся на ведении расчетов по накладным, но все связи будут автоматически выстроены корректно.

Способ 3. Групповое изменение реквизитов и перепроведение базы задним числом

Если вы твердо решили полностью перевести прошлый период на детализацию «По договорам», то технически это реализуется через временное отключение проверок платформы и перезапись документов. Выполнять эту процедуру можно строго на копии базы данных!

Рассмотрим этот процесс пошагово:

  1. Отключение контроля изменений. Для изменения детализации в существующих договорах необходимо воспользоваться специальным расширением, временно отключающим проверку использования договора, либо написать короткий скрипт на встроенном языке 1С, который принудительно перезапишет реквизит:
    
    ОбъектДоговора = СсылкаНаДоговор.ПолучитьОбъект();
    ОбъектДоговора.ДетализацияРасчетов = Перечисления.ДетализацияРасчетов.ПоДоговорам;
    ОбъектДоговора.ОбменДанными.Загрузка = Истина;
    ОбъектДоговора.Записать();
    
  2. Групповое изменение документов. После изменения настроек договора необходимо очистить или заменить объекты расчетов в документах. С помощью стандартной обработки Групповое изменение реквизитов во всех платежных и отгрузочных документах за период поле «Объект расчетов» перезаписывается ссылкой на сам договор.
  3. Перестроение ключей аналитики. В программе «1С:УТ 11» данные взаиморасчетов жестко привязаны к справочнику КлючиАналитикиУчетаПоПартнерам. Простое изменение реквизита в документе не обновит этот ключ. Нам потребуется запустить полное перепроведение всех измененных документов в хронологическом порядке.
  4. Контроль закрытия месяца. После проведения документов обязательно запускается процедура Закрытие месяца. Программа пересчитает движения по регистрам накопления РасчетыСКлиентами и РасчетыСПоставщиками, а также сформирует корректные проводки по зачету авансов.

Важно: Этот способ крайне опасен, если за этот период уже сдана налоговая отчетность по НДС. Перепроведение документов может сдвинуть даты зачета авансов, что приведет к расхождениям в книгах покупок и продаж.

Архитектурное решение: переход на онлайн-режим ведения взаиморасчетов

Решая проблемы с детализацией расчетов, обязательно обратите внимание на режим работы самой системы взаиморасчетов в вашей базе данных. Разработчики фирмы «1С» активно развивают и делают обязательным к применению онлайн-режим ведения взаиморасчетов.

Посмотрим на его ключевые преимущества:

← На главную