Почему в запросе появляются записи по непроведенному документу при корректировке НДС?

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

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

Анализ ситуации: магия или логика?

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

Разбор типового запроса

Посмотрим на структуру запроса, который используется для формирования записей книги покупок при корректировке:


ВЫБРАТЬ
    &Период КАК Период,
    &Ссылка КАК Регистратор,
    ЗаписиКнигиПокупок.СтавкаНДС КАК СтавкаНДС,
    // ... логика определения доп. листа ...
    ЗаписиКнигиПокупок.СуммаБезНДСОборот * -1 КАК СуммаБезНДС,
    ЗаписиКнигиПокупок.НДСОборот * -1 КАК НДС
ИЗ
    РегистрНакопления.НДСЗаписиКнигиПокупок.Обороты(
            ,
            &МоментДокумента,
            ,
            Организация = &Организация
                И СчетФактура = &ИсправляемыйСчетФактура) КАК ЗаписиКнигиПокупок

Проанализируем ключевые моменты этого кода:

  1. Виртуальная таблица Обороты: Обратите внимание на условие в параметрах виртуальной таблицы. В поле СчетФактура передается параметр &ИсправляемыйСчетФактура. Это означает, что запрос ищет все записи в Книге покупок, которые были сделаны по первичному документу (тому, который мы сейчас корректируем).
  2. Параметр &Ссылка: В блоке ВЫБРАТЬ мы видим конструкцию &Ссылка КАК Регистратор. Это часто вводит в заблуждение. Здесь Регистратор — это не поле из базы данных, а псевдоним для параметра, в который передается ссылка на текущий (еще не проведенный) документ корректировки. Это делается для того, чтобы в итоговой таблице значений, которую получит алгоритм проведения, в колонке «Регистратор» уже стоял нужный документ.
  3. Сторнирование (умножение на -1): Как мы видим, суммы умножаются на минус единицу. Система находит старые записи и подготавливает «отрицательные» движения для их аннулирования.

Механизм работы регистров НДС

Рассмотрим подробнее, почему записи существуют в базе, даже если визуально их сложно найти через текущий документ. В системе 1С:Бухгалтерия за записи в книгу покупок могут отвечать разные документы-регистраторы:

Когда вы создаете Корректировку поступления, она «смотрит» в регистр НДСЗаписиКнигиПокупок и видит там записи, созданные, например, первичным счетом-фактурой. Именно эти записи и возвращает запрос в консоли.

Как проверить реального регистратора?

Чтобы окончательно убедиться в том, откуда берутся данные, проанализируем реальные поля регистра. Вместо использования параметра в качестве регистратора, добавим в запрос истинное поле Регистратор из таблицы оборотов. Выясним причину появления строк по шагам:

  1. Измените текст запроса в консоли, добавив ЗаписиКнигиПокупок.Регистратор КАК НастоящийРегистратор.
  2. Выполните запрос.
  3. В колонке «НастоящийРегистратор» вы увидите документ, который реально создал эти записи (чаще всего это будет исходный Счет-фактура полученный).

Проанализируем ситуацию с Электронным документооборотом (ЭДО). Часто бывает так, что корректировочный счет-фактура приходит по ЭДО и создается в базе автоматически. Он может быть проведен системой «тихо» и уже сделать движения в регистре НДС до того, как бухгалтер открыл документ Корректировка поступления. Это еще одна причина, по которой данные могут присутствовать в регистрах неожиданно для пользователя.

Важность реквизита «Активность»

При работе с регистрами накопления важно помнить про стандартный реквизит Активность. Если запись в регистре есть, но Активность = Ложь, то такая запись не учитывается в итогах и не попадает в виртуальную таблицу Обороты (если не указано иное). Однако в подсистеме НДС записи обычно становятся неактивными только при пометке документа на удаление или отмене проведения. Если запрос их видит — значит, записи активны и принадлежат какому-то проведенному документу.

Заключение и советы

Разберем краткие итоги нашего исследования. Если запрос показывает записи по непроведенному документу:

Таким образом, «странное» поведение запроса оказывается строгой логикой построения учета НДС, направленной на автоматическое сторнирование излишне предъявленного налога при корректировках.

← На главную