В процессе работы с конфигурациями 1С:Комплексная автоматизация 1.1 и 1С:Управление производственным предприятием 1.3 на традиционном партионном учете пользователи часто сталкиваются с неприятной ошибкой при проведении документов реализации. Система выдает сообщение вида: «Налоговый учет. Документ Реализация товаров и услуг... Не списано по партиям...».
При этом по данным бухгалтерского (БУ) и управленческого учета (УУ) товар на складе списывается без проблем, а в налоговом учете (НУ) программа «не видит» остатков. Давайте детально разберем причины этой проблемы, выясним, почему могут расходиться виртуальные таблицы остатков, и рассмотрим пошаговый алгоритм поиска и устранения этой ошибки.
Одной из самых загадочных проблем при анализе регистров партий является ситуация, когда запрос к виртуальной таблице ОстаткиИОбороты показывает наличие товара на конечный остаток периода, а запрос к таблице Остатки на ту же самую дату выдает нулевой или меньший остаток. Разберемся, почему так происходит.
В СУБД (будь то MS SQL Server, PostgreSQL или файловый вариант базы данных) физические таблицы хранения итогов и таблицы движений (регистраторы) разделены. Таблица итогов хранит рассчитанные остатки на начало каждого месяца. При обращении к виртуальной таблице Остатки система берет ближайшие рассчитанные итоги и прибавляет к ним движения за оставшийся «хвост» периода.
Если во время транзакции записи документа произошел сбой, аварийное завершение работы платформы, некорректная параллельная блокировка или программная ошибка, может возникнуть рассинхронизация: данные в таблицу движений записались, а в физическую таблицу итогов не попали. В результате виртуальная таблица ОстаткиИОбороты, которая опирается на детальные движения, рассчитывает верный остаток математически, а виртуальная таблица Остатки возвращает некорректный пустой результат.
Также важно учитывать логику работы с временными границами в запросах 1С. По умолчанию таблица остатков строится на начало секунды указанной даты (не включая ее документы). Если нам необходимо получить остатки на самый конец секунды с учетом всех движений этого момента, в параметрах запроса обязательно нужно использовать объект Граница с включением граничного момента:
Новый Граница(КонецДня(ВыбДата), ВидГраницы.Включая)
Если имеет место реальный сбой итогов в базе данных, то штатные обработки «Проведение по партиям» и «Восстановление последовательности» не принесут результата. В этом случае необходимо выполнить следующие действия:
ПартииТоваровНаСкладахНалоговыйУчет и запустим пересчет итогов.Если с итогами регистра все в порядке, но ошибка «Не списано по партиям» все равно возникает, это означает реальное отсутствие нужной партии в налоговом учете. Часто разработчики и бухгалтеры проверяют только количество на складе, забывая, что регистр партий имеет множество других обязательных измерений. Проанализируем ключевые аналитики:
Купленный, а документ списания пытается найти партию со статусом На комиссии. Или наоборот. При несовпадении этого статуса списание не произойдет, несмотря на верный общий остаток номенклатуры.Заказ покупателя (т. е. зарезервирован), то при проведении обычной реализации без указания этого заказа система выдаст ошибку. Партии, привязанные к заказам, не могут быть списаны «в свободный остаток».Склад будет оставаться пустым. Если настройку изменили в середине года «задним числом», это гарантированно приведет к невозможности списания ранее накопленных партий.Рассмотрим специфические сценарии налогового учета, которые приводят к расхождению с бухгалтерским и управленческим учетом:
Забытый флаг отражения. Самая тривиальная, но частая ошибка бухгалтера — отсутствие галочки Отражать в НУ в документе поступления (или в авансовом отчете, оприходовании). При этом в БУ и УУ партия успешно создается, а налоговый учет о ней ничего не знает. На момент продажи по БУ товар спишется, а по НУ — возникнет ошибка.
Для поиска таких документов применим метод левого или полного соединения в запросе. Нам нужно сравнить приход по БУ и НУ в разрезе регистраторов. Напишем следующий запрос:
ВЫБРАТЬ
ПартииБУ.Регистратор КАК Регистратор,
ПартииБУ.Номенклатура КАК Номенклатура,
ПартииБУ.КоличествоОборот КАК КолБУ,
ЕСТЬNULL(ПартииНУ.КоличествоОборот, 0) КАК КолНУ
ИЗ
РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&НачПериода, &КонПериода, Регистратор, Номенклатура = &Номенклатура) КАК ПартииБУ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахНалоговыйУчет.Обороты(&НачПериода, &КонПериода, Регистратор, Номенклатура = &Номенклатура) КАК ПартииНУ
ПО ПартииБУ.Регистратор = ПартииНУ.Регистратор
И ПартииБУ.Номенклатура = ПартииНУ.Номенклатура
ГДЕ
ПартииБУ.КоличествоОборот <> ЕСТЬNULL(ПартииНУ.КоличествоОборот, 0)
Этот запрос мгновенно выведет список документов-регистраторов, которые сделали приход по бухгалтерскому учету, но не отразились в налоговом.
Временные коллизии в пределах одного дня. Если документ поступления товара проведен, к примеру, в 18:00, а реализация этого же товара оформлена в 12:00 того же дня, то на момент реализации партии физически еще не существовало. По итогам дня остаток будет положительным, но партионная последовательность нарушена. Проанализируем время проведения документов и при необходимости сместим время прихода на более раннее.
Настройки учетной политики и параметров проведения документов в КА 1.1 и УПП 1.3 оказывают решающее влияние на партионный учет:
Разрешить превышение свободного остатка товаров, система позволит ему провести расходный документ при отсутствии партии на складе, породив отрицательные остатки, которые позже заблокируют работу остальным сотрудникам.Для гарантированного устранения проблемы списания партий в НУ рекомендуется придерживаться следующего алгоритма:
Отражать в НУ во всей цепочке документов поступления и корректировок по данной номенклатуре за анализируемый период.