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