Как в отчете по продажам 1С:Управление торговлей 11.4 вывести количество товаров в килограммах или других нестандартных единицах измерения?

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

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

Понимание проблемы: Базовые и дополнительные единицы измерения

Прежде чем перейти к решению, нам необходимо четко понять, как 1С:Управление торговлей работает с единицами измерения. В системе для каждой номенклатурной позиции определена базовая единица измерения. Например, для сахара это могут быть "Штуки" (пачки) или "Килограммы". Однако часто требуется продавать или учитывать товар в других единицах, отличных от базовой. Для этого в справочнике Номенклатура предусмотрен механизм дополнительных единиц измерения, где можно указать коэффициент пересчета относительно базовой единицы.

Например, если базовая единица сахара — "кг", а вы продаете его в "мешках по 50 кг", то "мешок" будет дополнительной единицей с коэффициентом 50. Проблема возникает, когда в отчете по продажам нам нужно получить сумму проданных товаров в килограммах, независимо от того, в каких единицах была оформлена конкретная реализация (в килограммах или в мешках).

Использование Системы Компоновки Данных (СКД) для решения задачи

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

Шаг 1: Создание или модификация отчета на СКД

  1. Откройте конфигуратор 1С.
  2. Перейдите в раздел "Отчеты" и найдите отчет по продажам, который вы хотите модифицировать, или создайте новый.
  3. Откройте схему компоновки данных (СКД) отчета.

Шаг 2: Формирование запроса к данным

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

Для корректного получения коэффициентов пересчета нам необходимо использовать регистр сведений ДвиженияНоменклатураЕдиницыИзмерения. Этот регистр содержит актуальные коэффициенты для каждой связки номенклатура-единица измерения. Рассмотрим, как составить запрос:


ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Характеристика,
    ПродажиОбороты.КоличествоОборот КАК КоличествоБазовое,
    ПродажиОбороты.СуммаОборот,
    ДвиженияНоменклатураЕдиницыИзмерения.Коэффициент КАК КоэффициентКГ,
    ДвиженияНоменклатураЕдиницыИзмерения.ЕдиницаИзмерения КАК ЕдиницаИзмеренияПродажиДляОтчета
ИЗ
    РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДвиженияНоменклатураЕдиницыИзмерения КАК ДвиженияНоменклатураЕдиницыИзмерения
        ПО ПродажиОбороты.Номенклатура = ДвиженияНоменклатураЕдиницыИзмерения.Номенклатура
           И ПродажиОбороты.ЕдиницаИзмерения = ДвиженияНоменклатураЕдиницыИзмерения.ЕдиницаИзмерения // Это базовая единица!
ГДЕ
    ДвиженияНоменклатураЕдиницыИзмерения.ЕдиницаИзмерения = &ЕдиницаДляОтчета // Параметр для выбора "кг", "литры" и т.д.

Разберем этот запрос подробнее:

  1. Мы выбираем основные данные по продажам из виртуальной таблицы РегистрНакопления.Продажи.Обороты. Нас интересуют Номенклатура, Характеристика, КоличествоОборот (количество в базовых единицах) и СуммаОборот.
  2. Мы выполняем ЛЕВОЕ СОЕДИНЕНИЕ с регистром сведений РегистрСведений.ДвиженияНоменклатураЕдиницыИзмерения. Это очень важный шаг, так как именно в этом регистре хранятся коэффициенты пересчета для всех дополнительных единиц измерения.
  3. Условия соединения:
    • ПродажиОбороты.Номенклатура = ДвиженияНоменклатураЕдиницыИзмерения.Номенклатура: мы связываем записи по одной и той же номенклатуре.
    • ПродажиОбороты.ЕдиницаИзмерения = ДвиженияНоменклатураЕдиницыИзмерения.ЕдиницаИзмерения: здесь мы связываем по базовой единице измерения. Важно понимать, что это поле в регистре продаж хранит ссылку именно на базовую единицу, а не на ту, в которой была совершена продажа. Это стандартное поведение системы.
  4. В секции ГДЕ мы используем параметр &ЕдиницаДляОтчета. Этот параметр позволит нам динамически указывать, в какую единицу измерения мы хотим пересчитать количество. Например, мы можем передать сюда ссылку на единицу измерения "кг".

Важно: Убедитесь, что для каждой номенклатурной позиции, которую вы хотите анализировать, в справочнике Номенклатура настроены все необходимые дополнительные единицы измерения с их корректными коэффициентами пересчета относительно базовой единицы. Без этих настроек регистр сведений ДвиженияНоменклатураЕдиницыИзмерения не будет содержать нужных данных.

Шаг 3: Добавление вычисляемого поля в СКД

После того как мы получили коэффициент пересчета в запросе, нам необходимо создать новое вычисляемое поле в СКД, которое будет производить сам расчет. Для этого:

  1. В окне схемы СКД перейдите на закладку "Вычисляемые поля".
  2. Добавьте новое поле, назовем его, например, КоличествоВОтчетнойЕдинице.
  3. В качестве выражения для этого поля укажите:
  4. КоличествоБазовое * КоэффициентКГ

    Здесь КоличествоБазовое — это поле из нашего запроса, которое содержит количество в базовых единицах, а КоэффициентКГ — это коэффициент пересчета, который мы получили из регистра ДвиженияНоменклатураЕдиницыИзмерения. Если вы назвали поля в запросе иначе, используйте соответствующие имена.

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

Шаг 4: Настройка параметров СКД

Чтобы отчет был гибким, настроим параметр &ЕдиницаДляОтчета:

  1. Перейдите на закладку "Параметры" в схеме СКД.
  2. Найдите параметр ЕдиницаДляОтчета.
  3. Установите для него тип значения СправочникСсылка.ЕдиницыИзмерения.
  4. Вы можете установить для него заголовок, например, "Единица измерения для отчета".
  5. Установите флажок "Включать в пользовательские настройки", чтобы пользователь мог выбирать единицу измерения при формировании отчета.
  6. При необходимости можно установить значение по умолчанию, например, ссылку на элемент "кг" справочника ЕдиницыИзмерения.

Преимущества использования параметра: Пользователь сможет самостоятельно выбрать единицу измерения, в которой ему нужно видеть данные в отчете, не заходя в конфигуратор. Это делает отчет гораздо более универсальным и удобным.

Альтернативный подход: Использование функции 1С

Для более сложных сценариев или когда требуется динамический пересчет между различными единицами измерения без жесткой привязки в запросе, можно использовать глобальную функцию 1С ПолучитьКоэффициентПересчетаЕдиниц(). Эта функция позволяет программно получить коэффициент пересчета между двумя любыми единицами измерения для конкретной номенклатуры.

Синтаксис функции выглядит примерно так:

ПолучитьКоэффициентПересчетаЕдиниц(Номенклатура, ЕдиницаИзмеренияИсточника, ЕдиницаИзмеренияЦели)

Где:

Использование этой функции в СКД возможно через вычисляемое поле, но это потребует более глубокого понимания механизма СКД и создания запросов к наборам данных "объект". Для начинающих пользователей или для решения нашей конкретной задачи с одной целевой единицей измерения, подход с присоединением к регистру сведений ДвиженияНоменклатураЕдиницыИзмерения в запросе является более простым и прозрачным.

Заключение

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

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

← На главную