Почему при оплате поставщику в 1С:Бухгалтерия 3.0 проводки уходят на счет 60.01 вместо 60.02 по старым закрытым документам и как это исправить?

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

Каждый практикующий бухгалтер или специалист 1С рано или поздно сталкивается с ситуацией, когда автоматические алгоритмы программы начинают вести себя непредсказуемо. Один из типичных примеров в 1С:Бухгалтерия 3.0 — некорректное поведение документа Списание с расчетного счета при оплате поставщику. Вместо того чтобы отразить аванс по дебету счета 60.02, система настойчиво формирует проводку по дебету счета 60.01, автоматически подставляя в качестве документов расчетов старые, давно закрытые и оплаченные накладные.

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

---

Выясняем техническую причину: почему программа «видит» закрытый долг

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

Ниже представлен классический запрос, который выполняется конфигурацией «под капотом» для анализа структуры задолженности по контрагенту:


ВЫБРАТЬ
    ВложенныйЗапрос.СчетРасчетов КАК СчетРасчетов,
    ВложенныйЗапрос.Контрагент КАК Контрагент,
    ВложенныйЗапрос.ДоговорКонтрагента КАК ДоговорКонтрагента,
    ВложенныйЗапрос.ДокументРасчетов КАК ДокументРасчетов,
    ВложенныйЗапрос.Валюта КАК Валюта,
    ВложенныйЗапрос.Подразделение КАК Подразделение,
    ВложенныйЗапрос.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
    ВложенныйЗапрос.СуммаВзаиморасчетов КАК ОстатокВзаиморасчетов,
    ВложенныйЗапрос.СуммаБУ КАК СуммаБУ,
    ВложенныйЗапрос.СуммаНУ КАК СуммаНУ
ИЗ
    (ВЫБРАТЬ
        Остатки.Счет КАК СчетРасчетов,
        Остатки.Субконто1 КАК Контрагент,
        Остатки.Субконто2 КАК ДоговорКонтрагента,
        Остатки.Субконто3 КАК ДокументРасчетов,
        ЕСТЬNULL(Остатки.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК Валюта,
        ЕСТЬNULL(Остатки.Подразделение, &ПустоеПодразделение) КАК Подразделение,
        ВЫБОР
            КОГДА Остатки.Счет.Валютный
                ТОГДА Остатки.ВалютнаяСуммаОстаток * &Множитель
            ИНАЧЕ Остатки.СуммаОстаток * &Множитель
        КОНЕЦ КАК СуммаВзаиморасчетов,
        Остатки.СуммаОстаток * &Множитель КАК СуммаБУ,
        ЕСТЬNULL(Остатки.СуммаНУОстаток, 0) * &Множитель КАК СуммаНУ
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.Остатки(
                &МоментВремениОстатков,
                Счет В (&СчетаРасчетовПоДокументам),
                &ВидыСубконтоРасчетов,
                Организация = &Организация
                    И Субконто1 В (&Контрагенты)
                    И Субконто2 В (&Договоры)) КАК Остатки
    ГДЕ
        ВЫБОР
                КОГДА Остатки.Счет.Валютный
                    ТОГДА Остатки.ВалютнаяСуммаОстаток * &Множитель
                ИНАЧЕ Остатки.СуммаОстаток * &Множитель
            КОНЕЦ > 0
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        Остатки.Счет,
        Остатки.Субконто1,
        Остатки.Субконто2,
        НЕОПРЕДЕЛЕНО,
        ЕСТЬNULL(Остатки.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)),
        ЕСТЬNULL(Остатки.Подразделение, &ПустоеПодразделение),
        ВЫБОР
            КОГДА Остатки.Счет.Валютный
                ТОГДА Остатки.ВалютнаяСуммаОстаток * &Множитель
            ИНАЧЕ Остатки.СуммаОстаток * &Множитель
        КОНЕЦ,
        Остатки.СуммаОстаток * &Множитель,
        ЕСТЬNULL(Остатки.СуммаНУОстаток, 0) * &Множитель
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.Остатки(
                &МоментВремениОстатков,
                Счет В (&СчетаКонтрагентыДоговоры),
                &ВидыСубконтоКонтрагентыДоговоры,
                Организация = &Организация
                    И Субконто1 В (&Контрагенты)
                    И Субконто2 В (&Договоры)) КАК Остатки
    ГДЕ
        ВЫБОР
                КОГДА Остатки.Счет.Валютный
                    ТОГДА Остатки.ВалютнаяСуммаОстаток * &Множитель
                ИНАЧЕ Остатки.СуммаОстаток * &Множитель
            КОНЕЦ > 0) КАК ВложенныйЗапрос

Этот запрос извлекает остатки по счету расчетов (в нашем случае это группа счетов 60) в разрезе контрагентов, договоров и документов расчетов (третье субконто). Если в базе данных происходит сбой, реальные движения документов могут разойтись со служебными таблицами физических итогов 1С. В результате программа начинает видеть так называемые «фантомные остатки». Физически долга нет, все проводки закрыты, но в таблице итогов за прошлые периоды зависла запись, сообщающая о наличии кредиторской задолженности. Запрос возвращает эту запись, и алгоритм проведения считает, что мы гасим старый долг.

---

Шаг 1. Диагностика проблемы с помощью консоли запросов

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


ВЫБРАТЬ 
    Остатки.Субконто1 КАК Контрагент,
    Остатки.Субконто2 КАК Договор,
    Остатки.Субконто3 КАК ДокументРасчетов,
    Остатки.СуммаОстаток КАК СуммаБУ
ИЗ 
    РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет, , Субконто1 = &Контрагент) КАК Остатки

Анализируем результат: если запрос возвращает ненулевые остатки (СуммаБУ) по документам расчетов, которые вы точно знаете, что закрыли (например, по ним была полная оплата и встречное поступление), значит, мы имеем дело с нарушением целостности таблиц итогов СУБД или платформы.

---

Шаг 2. Главное решение — пересчет бухгалтерских итогов

Поскольку источником ложных данных являются поврежденные таблицы физических итогов регистра, ручные корректировки документов здесь бессильны. Требуется принудительно заставить систему пересчитать эти таблицы с нуля, опираясь исключительно на первичные проводки документов. Для этого мы можем применить два основных способа.

Вариант А. Пересчет итогов через Конфигуратор (Рекомендуется)

  1. Обязательно создайте резервную копию вашей информационной базы (в режиме Конфигуратора: Администрирование — Выгрузить информационную базу).
  2. Убедитесь, что в базе не работают другие пользователи.
  3. Перейдите в меню Администрирование — Тестирование и исправление...
  4. В открывшемся окне установите флаг напротив пункта «Пересчет итогов». Все остальные флаги можно временно снять, чтобы ускорить процесс.
  5. Нажмите кнопку «Выполнить» и дождитесь окончания процедуры. На больших базах данных этот процесс может занять длительное время.

Вариант Б. Управление итогами в режиме Предприятия

Если у вас нет прямого доступа к Конфигуратору или база работает в облачном сервисе (например, 1С:Фреш), мы можем воспользоваться стандартным интерфейсом управления итогами:

  1. Перейдите в меню Функции для технического специалиста (или «Все функции»).
  2. Найдите в списке стандартных обработок пункт «Управление итогами».
  3. Выберите регистр бухгалтерии Хозрасчетный.
  4. Выполните операцию полного пересчета итогов на текущую дату или отключите и заново включите использование итогов по регистру (это также инициирует их полную перезапись).

После выполнения пересчета проверьте проблемный документ Списание с расчетного счета. Перепроведите его — теперь программа должна правильно распределить оплату: закрыть реальный долг по счету 60.01 (если он есть на текущий момент) либо отнести всю сумму на аванс по счету 60.02.

---

Альтернативные причины формирования 60.01 вместо 60.02

Если после полного пересчета итогов проблема не решилась или возникает снова при создании новых документов, нам следует проверить другие методологические и пользовательские ошибки, которые приводят к схожему результату.

1. Настройка проведения документов («Отложенные расчеты»)

Проанализируем ключевую системную настройку проведения расчетов в программе. Перейдем по пути: Администрирование — Настройки программы — Проведение документов.

Обратите внимание на переключатель «Расчеты выполняются»:

2. Нарушение хронологической последовательности документов

Проанализируем ситуацию: в один и тот же день бухгалтер оформляет поступление товаров и оплату. Если документ оплаты (списание с р/с) имеет время проведения 12:00:00, а поступление товаров — 14:00:00, то на момент проведения оплаты долга в системе еще не существовало. Соответственно, оплата должна была уйти на счет 60.02 (аванс), а последующее поступление — зачесть его.

Если документы перепроводились хаотично, последовательность расчетов сбивается. Для исправления этой проблемы запустите групповое перепроведение документов за месяц через меню Операции — Сервис — Групповое перепроведение документов.

3. Настройка детализации расчетов в договорах

Заглянем в карточку договора с поставщиком, по которому возникли расхождения. В разделе «Взаиморасчеты» обратите внимание на параметр «Способ расчетов»:

4. Использование ручных корректировок в документах поступления или оплаты

Если в цепочке расчетов хотя бы в одном документе (например, в Поступлении (акт, накладная, УПД)) была включена галочка «Ручная корректировка (разрешает редактирование движений документа)», автоматический механизм зачета авансов для последующих связанных документов ломается. Программа перестает доверять автоматическим регистрам и "не видит" связь между ручными проводками и системными регистрами расчетов.

Рекомендуется избегать ручных корректировок. Вместо этого используйте стандартные документы исправления (например, Корректировка поступления). Для быстрого поиска таких документов в базе можно использовать отчет для контроля ручных корректировок проводок.

---

Полезные инструменты для контроля взаиморасчетов

Для предотвращения подобных ситуаций в будущем и своевременного обнаружения расхождений по счетам 60.01 и 60.02, мы рекомендуем регулярно использовать встроенные аналитические отчеты 1С.

Самым эффективным инструментом является отчет «Анализ субконто» по субконто «Контрагенты». В настройках отчета обязательно выберите группировку по трем уровням аналитики:

  1. Контрагенты
  2. Договоры
  3. Документы расчетов с контрагентами

Если при формировании отчета вы увидите по одному и тому же договору одинаковые суммы в колонках «Дебет» и «Кредит» (то есть «развернутое сальдо»), это прямой сигнал к тому, что по контрагенту нарушена последовательность проведения документов либо произошел сбой итогов, требующий нашего вмешательства. Для автоматизации выявления и исправления таких ситуаций подойдёт обработка для поиска ошибок во взаиморасчетах и зачета авансов.

← На главную