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