Как реализовать отчет по истории инвентаризаций конкретного товара в 1С:УТ 11.4?

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

В типовой конфигурации «1С:Управление торговлей 11.4» (и аналогичных версиях КА 2.4, ERP 2.4) часто возникает потребность проанализировать историю участия конкретной номенклатурной позиции в инвентаризациях. Несмотря на богатый функционал складского учета, прямого отчета, вызываемого из карточки товара и показывающего все «Пересчеты товаров» по этой позиции, в системе не предусмотрено. Стандартные ведомости по товарам показывают лишь финансовые последствия — списания недостач или оприходование излишков, но игнорируют те случаи, когда товар был пересчитан, и отклонений не обнаружено.

В данной статье мы подробно разберем, как самостоятельно создать такой инструмент, какие таблицы базы данных использовать и как правильно интегрировать отчет в интерфейс программы, чтобы он был доступен пользователю прямо из формы справочника Номенклатура.

Шаг 1. Анализ источников данных

Для начала проанализируем, где хранится нужная нам информация. В УТ 11 процесс инвентаризации разделен на физический пересчет и финансовое оформление. Нас интересует именно факт физической проверки. Основным объектом для извлечения данных является документ ПересчетТоваров. Именно в его табличной части Товары фиксируются количественные показатели на момент проверки.

Рассмотрим структуру запроса, который ляжет в основу нашего отчета. Нам необходимо вытащить данные из таблицы Документ.ПересчетТоваров.Товары. Основными полями для нас будут:

Важно помнить, что в отчет должны попадать только те документы, которые имеют статус Выполнено или, в зависимости от бизнес-логики, В работе. Аннулированные документы следует исключать.

Шаг 2. Создание схемы компоновки данных (СКД)

Наилучшим способом реализации будет создание внешнего отчета на базе Системы компоновки данных (СКД). Разберем пример текста запроса, который можно использовать в наборе данных:


ВЫБРАТЬ
    ПересчетТоваровТовары.Ссылка КАК ДокументПересчета,
    ПересчетТоваровТовары.Ссылка.Дата КАК ДатаИнвентаризации,
    ПересчетТоваровТовары.Ссылка.Склад КАК Склад,
    ПересчетТоваровТовары.Номенклатура КАК Номенклатура,
    ПересчетТоваровТовары.Характеристика КАК Характеристика,
    ПересчетТоваровТовары.КоличествоУчет КАК КоличествоПоДаннымУчета,
    ПересчетТоваровТовары.КоличествоФакт КАК КоличествоФактическое,
    ПересчетТоваровТовары.КоличествоФакт - ПересчетТоваровТовары.КоличествоУчет КАК Отклонение,
    ПересчетТоваровТовары.Ссылка.Ответственный КАК Исполнитель
ИЗ
    Документ.ПересчетТоваров.Товары КАК ПересчетТоваровТовары
ГДЕ
    ПересчетТоваровТовары.Номенклатура = &Номенклатура
    И ПересчетТоваровТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыПересчетовТоваров.Выполнено)

Проанализируем этот запрос: мы используем параметр &Номенклатура, который позволит нам фильтровать данные при вызове из конкретной карточки товара. Также мы сразу вычисляем поле Отклонение, что будет удобно для визуального анализа пользователем.

Шаг 3. Реализация вызова из карточки товара

Для того чтобы отчет открывался из справочника Номенклатура с автоматическим заполнением текущего товара, мы можем пойти двумя путями: через механизм «Дополнительные отчеты и обработки» или через создание расширения.

Вариант А: Дополнительный отчет. Рассмотрим этот метод как наиболее безопасный для поддержки конфигурации. При регистрации внешнего отчета в справочнике ДополнительныеОтчетыИОбработки, в табличной части «Размещение» укажем объект Справочник "Номенклатура". Чтобы система поняла, какой параметр передать в отчет, в модуле объекта отчета необходимо определить процедуру ПриОпределенииНастроек и правильно настроить Назначение.

Вариант Б: Расширение конфигурации. Если мы хотим добавить кнопку или отдельную вкладку «История инвентаризаций» прямо на форму элемента номенклатуры, нам потребуется расширение. Разберем по шагам, как это сделать:

  1. Создаем новое расширение и заимствуем форму элемента справочника Номенклатура.
  2. Добавляем команду формы, например, ПоказатьИсториюИнвентаризации.
  3. В обработчике команды прописываем код открытия нашего отчета с передачей ссылки на текущий товар.

Пример кода для вызова отчета из формы:


&НаКлиенте
Процедура ПоказатьИсториюИнвентаризации(Команда)
    ПараметрыОтчета = Новый Структура;
    ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
    
    Отбор = Новый Структура;
    Отбор.Вставить("Номенклатура", Объект.Ссылка);
    ПараметрыОтчета.Вставить("Отбор", Отбор);
    
    ОткрытьФорму("ВнешнийОтчет.ИсторияИнвентаризаций.Форма", ПараметрыОтчета, ЭтаФорма);
КонецПроцедуры

Шаг 4. Особенности учета на ордерных складах

Выясним важную техническую деталь: если на складе используется ордерная схема, то документы Пересчет товаров не делают движений по регистру Товары на складах до момента оформления финансовых документов (Списание/Оприходование). Поэтому, если ваша задача — показать именно процесс контроля, вы обязаны тянуть данные из Пересчета товаров.

Если же клиенту нужно видеть именно финансовый результат (на какие суммы были корректировки), то в запрос следует добавить связь с документами СписаниеНедостачТоваров и ОприходованиеИзлишковТоваров. Эти документы в УТ 11 создаются «на основании» пересчетов через специальное рабочее место, и связь между ними можно проследить через реквизит Основание или через регистр сведений ДокументыИнвентаризации.

Шаг 5. Тонкая настройка интерфейса и группировки

Для удобства пользователя в СКД рекомендуется настроить следующие группировки:

Рассмотрим также возможность добавления поля Цена. Поскольку в самом пересчете цен нет (там только количество), цену можно получить из регистра сведений ЦеныНоменклатуры на дату документа или взять себестоимость из регистра ВыручкаИСебестоимостьПродаж. Это превратит простой количественный отчет в мощный аналитический инструмент для оценки потерь по конкретному товару.

Заключение

Создание отчета по истории инвентаризаций — это отличный пример того, как небольшое дополнение к типовому функционалу 1С:УТ 11.4 может существенно повысить прозрачность складского учета. Использование СКД в сочетании с механизмом дополнительных отчетов позволяет реализовать эту задачу без внесения изменений в основную конфигурацию, что сохраняет возможность легкого обновления системы.

← На главную