В практике разработчика 1С часто возникает ситуация, когда при анализе остатков на счете 41.01 «Товары на складах» мы видим отрицательное количество, но при этом суммовой остаток равен нулю. Это вызывает закономерные вопросы: почему запрос возвращает «пустые» суммы и как увидеть реальную оценку дефицита товара в денежном выражении? В этой статье мы подробно разберем механизмы работы регистра бухгалтерии, логику расчета себестоимости и способы решения данной задачи.
Рассмотрим типовой запрос, который часто используют для поиска «минусов» по складу. Автор столкнулся с тем, что условие по количеству отрабатывает корректно, но колонки с суммами остаются пустыми:
Зап.Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
| ХозрасчетныйОстатки.КоличествоОстаток,
| ХозрасчетныйОстатки.СуммаОстаток
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&КонДата, Счет.Код = ""41.01"", , Субконто1 = &ВыбНоменклатура) КАК ХозрасчетныйОстатки
|ГДЕ
| ХозрасчетныйОстатки.КоличествоОстаток < 0";
Выясним причину такого поведения системы. В типовых конфигурациях 1С (например, «Бухгалтерия предприятия») сумма списания товара рассчитывается в момент проведения документа реализации на основании имеющихся данных о себестоимости. Если на складе числится 0 штук, а мы списываем 10 штук (при включенной настройке «Разрешить списание при отсутствии остатков»), программе попросту неоткуда взять цену за единицу. В результате в регистр записывается количество -10, а сумма — 0.00.
Первым делом проанализируем настройки программы. Если в информационной базе разрешено отрицательное списание, система игнорирует отсутствие партий или средневзвешенной цены. В 1С:Бухгалтерии за это отвечает флаг «Разрешить списание запасов при отсутствии остатков по данным учета».
При включении этой опции:
Дт 90.02.1 - Кт 41.01 только с количественным заполнением.Важно понимать, что в течение отчетного периода суммы могут не соответствовать количеству, если товар закупался и продавался «хаотично». Окончательный расчет себестоимости происходит при выполнении регламентной операции «Корректировка стоимости номенклатуры».
Проанализируем ситуацию: если вы сформируете запрос до закрытия месяца, вы увидите «голые» количественные остатки. После закрытия месяца система:
Однако, если товар так и не поступил на склад до конца месяца, сумма останется нулевой, так как база для расчета (цена закупа) отсутствует в системе.
Разберем еще один технический нюанс. Счет 41.01 является активным. В плане счетов для него обычно настроены субконто: «Номенклатура», «Склады» и (иногда) «Партии». Проверьте настройки признака «Суммовой» для этих субконто.
Если для субконто «Склады» признак «Суммовой» не установлен (типичная настройка для многих конфигураций), то в разрезе складов сумма всегда будет нулевой. Суммовой учет в таком случае ведется только в целом по организации (по номенклатуре без учета склада). Если ваш запрос или отчет запрашивает данные с детализацией по складу, вы не увидите сумм по дебету или кредиту именно в этой аналитике.
Если ваша задача — оценить объем дефицита в деньгах, когда системная сумма равна нулю, рассмотрим несколько способов решения.
Способ 1: Использование цен из регистра сведений.
Мы можем соединить таблицу остатков с последними ценами из регистра ЦеныНоменклатуры (например, по типу цен «Закупочная»). Посмотрим на пример кода:
ВЫБРАТЬ
ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
ХозрасчетныйОстатки.КоличествоОстаток КАК КолВо,
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК ЦенаЗакупа,
ХозрасчетныйОстатки.КоличествоОстаток * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК ОценочнаяСтоимостьДефицита
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&КонДата, Счет.Код = ""41.01"") КАК ХозрасчетныйОстатки
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонДата, ТипЦен = &ТипЦенЗакупа) КАК ЦеныНоменклатурыСрезПоследних
ПО
ХозрасчетныйОстатки.Субконто1 = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
ХозрасчетныйОстатки.КоличествоОстаток < 0
Способ 2: Анализ развернутого сальдо.
Иногда отрицательные остатки возникают из-за пересортицы (на одном складе «плюс», на другом «минус»). В этом случае полезно использовать виртуальные поля СуммаРазвернутыйОстатокДт и СуммаРазвернутыйОстатокКт. Однако для активного счета 41.01 отрицательный остаток технически является «красным» дебетовым остатком. Если в параметрах виртуальной таблицы не указаны все необходимые измерения, система может «схлопнуть» данные некорректно.
Если вы обнаружили такие позиции, рекомендуется выполнить следующие действия:
Таким образом, мы выяснили, что нулевая сумма при отрицательном количестве — это не ошибка запроса, а следствие логики системы, которая не может оценить то, чего нет на балансе. Для получения данных используйте соединение с регистрами цен или анализируйте данные после закрытия периода.