Как осмыслить запрос списания и найти причину ошибки «Товара нет для списания» в УТ 11.1

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В конфигурации 1С:Управление торговлей 11.1 механизм списания товаров существенно отличается от старых версий (например, УТ 10.3). Здесь используется сложная система аналитик и «видов запасов». Часто возникает ситуация: пользователь видит товар на складе в отчетах, но документ Списание товаров или Реализация выдает ошибку о нехватке остатка. Разберем, как работает внутренний запрос системы, и выясним, где именно «теряются» данные.

Понимаем архитектуру: Аналитика учета и Виды запасов

Прежде чем анализировать код запроса, проанализируем, как 1С «видит» товар. В УТ 11.1 товар — это не просто ссылка в справочнике. Это совокупность параметров, объединенных в Ключ аналитики. Этот ключ включает в себя:

  1. Номенклатуру.
  2. Характеристику.
  3. Серию.
  4. Склад.

Если хотя бы один из этих параметров в документе не совпадает с тем, что записано в регистре накопления, система не сможет соединить строки, и остаток будет равен нулю. В запросе автора мы видим ВНУТРЕННЕЕ СОЕДИНЕНИЕ с регистром сведений АналитикаУчетаНоменклатуры. Это критический момент: если в регистре сведений нет записи для данной комбинации реквизитов, товар «исчезнет» из выборки еще на первом этапе.

Разбор логики формирования временных таблиц

Рассмотрим подробнее первую часть запроса, где формируется временная таблица ТаблицаДокумента. Программа собирает данные из табличной части документа (переданной как ТаблицаТоваров) и обогащает их аналитикой. Обратите внимание на условие ГДЕ:


ГДЕ
    ТаблицаТоваров.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
    ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))

Если ваша номенклатура случайно имеет тип Услуга или Работа, она будет отсечена этим фильтром, и списания не произойдет. Также здесь происходит группировка, которая схлопывает одинаковые позиции по аналитикам и назначениям.

Анализ приоритетов в таблице ВтОстатки

Самая важная и сложная часть запроса — это формирование таблицы ВтОстатки. Здесь 1С использует систему приоритетов (числа от 1 до 18). Это стратегия подбора товара. Выясним причину, почему приоритеты так важны:

  1. Назначение (Обособленный учет): В коде запроса проверяется РеквизитыВидаЗапасовВладельца.Предназначение. Если товар на складе зарезервирован под конкретный заказ (поле Назначение заполнено), а в документе списания это назначение не указано, система присвоит такому товару низкий приоритет или вообще не увидит его, так как он «чужой».
  2. Организация: Система сначала ищет остатки той организации, которая указана в документе (приоритеты 1, 2, 4, 5...). Если своего товара нет, но включена схема «Интеркампани», она пойдет искать товар других организаций, но с гораздо более низким приоритетом.
  3. Налогообложение: Параметр ПриоритетЕНВД разделяет запасы по налоговым режимам. Если товар пришел на организацию под общую систему (ОСНО), а вы пытаетесь списать его с точки зрения деятельности на ЕНВД, запрос может не состыковать эти виды запасов.

Посмотрим на пример логики определения приоритета из запроса:


ВЫБОР КОГДА РеквизитыВидаЗапасовВладельца.Предназначение = ЗНАЧЕНИЕ(Перечисление.ТипыПредназначенияВидовЗапасов.ПредназначенДляЗаказа) ТОГДА
    1
КОГДА РеквизитыВидаЗапасовВладельца.Предназначение = ЗНАЧЕНИЕ(Перечисление.ТипыПредназначенияВидовЗапасов.ПредназначенДляСделки) ТОГДА
    4
...
КОГДА ЕСТЬNULL(Остатки.ДатаПоступления, РеквизитыДокумента.Дата) <= КОНЕЦПЕРИОДА(РеквизитыДокумента.Дата, ДЕНЬ) ТОГДА
    13

Здесь мы видим, что ПредназначенДляЗаказа имеет наивысший приоритет (1). Если у вас есть свободный остаток и остаток под заказ, система в первую очередь «посмотрит» на целевой резерв.

Как найти, где пропадают данные (Пошаговая инструкция)

Чтобы понять, на каком этапе «ругается» запрос, выполним следующие шаги:

  1. Использование консоли запросов: Как правильно заметили в обсуждении на форуме, нужно запустить этот запрос в консоли. Однако сложность в том, что ТаблицаТоваров и ТаблицаОстатков — это временные таблицы, которые готовятся в коде модуля. Вам понадобится консоль запросов, умеющая перехватывать временные таблицы (например, из состава инструментов разработчика).
  2. Проверка таблицы ВтВидыЗапасовСводно: Проанализируем эту таблицу. Если она пуста, значит, проблема в первой части запроса — не совпали ключи аналитики или тип номенклатуры не является товаром.
  3. Проверка таблицы ВтОстатки: Это «сердце» проблемы. Сравним количество в ТаблицаДокумента и ВтОстатки.
    • Если в ВтОстатки пусто, значит, по данным регистра Товары организаций остатков нет вообще.
    • Если остатки есть, но они не попадают в итоговую выборку, проверим поля соединения: СкладОтгрузки, ВидЗапасов, Сделка.
  4. Проверка назначения: Самая частая причина в УТ 11.1 — заполненное поле Назначение в регистре. Проанализируем отчет «Ведомость по товарам организаций» с группировкой по полю Назначение. Если там стоит «Заказ клиента», а в списании Назначение пустое — 1С не разрешит списание.

Методы исправления ситуации в программе

Если мы выяснили, что товар физически есть, но запрос его не видит, рассмотрим варианты решения:

Вариант А: Перезаполнение видов запасов. В документе списания часто помогает ручное переформирование видов запасов. Для этого нужно нажать кнопку «Еще» — «Открыть виды запасов». Если таблица пуста или заполнена неверно, удалите строки и нажмите «Заполнить». Это заставит систему заново прогнать алгоритм подбора по остаткам.

Вариант Б: Проверка интеркампани. Если списание идет от Организации А, а товар принадлежит Организации Б, проверьте настройки в разделе «Настройка передачи товаров между организациями». Если связи нет, запрос по ВтОстатки отсечет «чужой» товар.

Вариант В: Контроль ГТД. В запросе есть параметр &ЗапретитьОформлениеОперацийСИмпортнымиТоварамиБезНомеровГТД. Если он включен, а у вас на остатках товар без номера ГТД (или наоборот, в документе не указан), система может заблокировать проведение через проверку:


ВЫБОР КОГДА ТаблицаДокумента.ВестиУчетПоГТД
    И &ЗапретитьОформлениеОперацийСИмпортнымиТоварамиБезНомеровГТД
    И (Остатки.НомерГТД = ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка) ИЛИ Остатки.НомерГТД ЕСТЬ NULL)
ТОГДА Истина ИНАЧЕ Ложь КОНЕЦ КАК НеУказанНомерГТД

Итог: Проблема «пустого» списания в УТ 11.1 почти всегда кроется в несоответствии разрезов учета. Используйте консоль запросов для анализа таблицы ВтОстатки и всегда проверяйте поле Назначение в регистрах остатков.

← На главную