При работе в программе 1С:Бухгалтерия предприятия 3.0 пользователи иногда сталкиваются с парадоксальной ситуацией: при формировании Книги покупок или заполнении Раздела 8 Декларации по НДС суммы по конкретному контрагенту увеличиваются ровно в два (или более) раза. При этом в самих документах поступления, в проводках по счету 19 и 68.02, а также в стандартных оборотно-сальдовых ведомостях данные отображаются абсолютно корректно. Рассмотрим подробно, почему возникает этот технический сбой и как его устранить.
Для начала проанализируем механизм формирования регламентированной отчетности. В отличие от простых бухгалтерских отчетов, которые строятся напрямую по проводкам, Книга покупок и Декларация НДС — это сложные отчеты, которые собирают данные из специализированных регистров накопления, таких как НДСПокупки и НДСПредъявленный. Однако, помимо суммовых данных, отчет должен вывести актуальные реквизиты контрагента: его ИНН, КПП и, что самое важное, Наименование на дату совершения операции.
Выясним причину несоответствия. Когда программа формирует строку отчета, она выполняет запрос к базе данных. В этом запросе происходит так называемое левое соединение (LEFT JOIN) таблицы движений по НДС с таблицей истории реквизитов контрагента. Если в истории контрагента на одну и ту же дату (дату документа или начала периода) ошибочно созданы две записи, система не может выбрать одну из них и просто выдает две строки в результате запроса. В визуальном интерфейсе отчета эти строки часто суммируются, что и приводит к "виртуальному" удвоению НДС.
Рассмотрим подробнее основную причину проблемы, которая была подтверждена практическим опытом. В карточке объекта Справочник.Контрагенты существует скрытый от глаз механизм хранения истории изменений. Проблема возникает, когда в регистр сведений ИсторияНаименованийКонтрагентов (или аналогичный для адресов/КПП) попадают две идентичные или различающиеся записи с одинаковым периодом (датой начала действия).
Посмотрим на пример возникновения такой ошибки:
Для программы на уровне SQL-запроса это означает, что одному контрагенту соответствуют два "варианта" его существования в этот момент времени. В результате в Книге покупок вместо одной записи на 20 рублей НДС появляется две записи по 20 рублей, что в итоге дает 40.
Разберем по шагам, как найти и устранить этот дефект в информационной базе без привлечения программистов.
Шаг 1. Проверка карточки контрагента
Перейдем в справочник "Контрагенты" и откроем карточку того поставщика, по которому происходит задвоение. Нам необходимо найти поле "Наименование в программе" или "Полное наименование". Рядом с этими полями обычно находится гиперссылка История. Нажмем на нее.
Шаг 2. Редактирование истории реквизитов
В открывшемся окне "История наименований" внимательно проанализируем список записей. Если мы видим две строки, у которых в колонке "Действует с" указана одна и та же дата (например, 01.04.2024), мы нашли источник проблемы. Рассмотрим, что делать дальше:
Шаг 3. Использование функций для технического специалиста (если история не видна)
Иногда визуальный интерфейс карточки не отображает скрытые дубли. В этом случае проанализируем ситуацию через системный поиск. Перейдем в меню "Сервис и настройки" — "Функции для технического специалиста" (ранее "Все функции"). В строке поиска введем название регистра:
РегистрСведений.ИсторияНаименованийКонтрагентов
Откроем этот регистр и установим отбор по нашему контрагенту. Здесь мы увидим все записи в "сыром" виде. Удалим лишнюю запись с совпадающей датой.
Важно понимать специфику данной ошибки. Поскольку проблема кроется не в данных самих документов (движения в регистрах НДСПокупки верны), а в алгоритме построения отчета, перепроводить документы за квартал бессмысленно. Как только вы удалите лишнюю запись в истории контрагента, Книга покупок при следующем формировании автоматически станет корректной. Это происходит потому, что запрос к базе данных при построении отчета "на лету" перестанет находить вторую строку для соединения.
Чтобы избежать подобных ситуаций в будущем, рекомендуем придерживаться следующих правил:
Внимание: Если задвоение произошло в периоде, который уже закрыт для редактирования, удаление записи в истории контрагента (даже за прошлый год) все равно исправит отчетность текущего периода, так как отчет обращается к актуальному состоянию истории на момент формирования документа.
Если контрагентов много и нужно быстро найти всех "двойников", можно воспользоваться консолью запросов. Проанализируем пример запроса, который выявит проблемные записи:
ВЫБРАТЬ
История.Контрагент,
История.Период,
КОЛИЧЕСТВО(История.НаименованиеПолное) КАК КоличествоЗаписей
ИЗ
РегистрСведений.ИсторияНаименованийКонтрагентов КАК История
СГРУППИРОВАТЬ ПО
История.Контрагент,
История.Период
ИМЕЮЩИЕ
КОЛИЧЕСТВО(История.НаименованиеПолное) > 1
Этот запрос выведет список всех контрагентов, у которых в истории на одну дату приходится более одной записи. После этого вы сможете точечно исправить данные в регистре ИсторияНаименованийКонтрагентов.