Как настроить расчет цены по себестоимости последней партии с учетом доп. расходов в 1С:Управление торговлей 11?

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

При переходе на партионный учет многие пользователи 1С ожидают, что система автоматически начнет предлагать цены, основанные на стоимости последней закупки. Однако на практике часто возникает ситуация, когда документ Установка цен номенклатуры продолжает рассчитывать цену по «средней» себестоимости, даже если в учетной политике выбран метод ФИФО. В этой статье мы подробно разберем, почему так происходит и как реализовать расчет цены по последней партии с учетом всех дополнительных расходов.

Почему типовой механизм считает среднюю цену?

Прежде всего, проанализируем работу стандартной схемы компоновки данных (СКД) «Себестоимость с дополнительными расходами». По умолчанию эта схема обращается к виртуальной таблице остатков регистра накопления СебестоимостьТоваров. Рассмотрим алгоритм ее работы:

  1. Система обращается к регистру и суммирует стоимость всех имеющихся на складах остатков конкретного товара.
  2. Система делит общую сумму стоимости на общее количество остатка.
  3. В результате получается средневзвешенная стоимость текущего остатка.

Даже если у вас включен партионный учет версии 2.2 и метод оценки ФИФО (скользящая оценка), для документа установки цен целью является определение единой цены продажи для всего имеющегося товара. Типовая логика 1С предполагает, что цена должна покрывать среднюю стоимость остатка, а не ориентироваться только на последнюю поставку. Именно поэтому программист при анализе запроса видит «среднюю» цену — это результат математического усреднения всех партий в регистре.

Различие между методом списания ФИФО и алгоритмом ценообразования

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

Разбор ситуации с дополнительными расходами

Ситуация осложняется, когда к цене поставщика нужно добавить распределенные транспортно-заготовительные расходы (ТЗР). В системе 1С данные распределяются следующим образом:

Регистр «Закупки» хранит «чистую» цену поставщика из документа поступления. Здесь легко найти последнюю закупку, но здесь нет информации о доп. расходах.

Регистр «Себестоимость товаров» хранит уже распределенные расходы, но после закрытия месяца и выполнения регламентных операций. Доп. расходы привязываются к партии, но стандартный запрос их агрегирует.

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

Пошаговое решение через изменение СКД

Поскольку типового «переключателя» для решения этой задачи не существует, нам потребуется создать новый Вид цены с произвольным запросом. Рассмотрим этот процесс по шагам.

Шаг 1. Создание нового вида цены

Перейдем в раздел CRM и маркетинг — Настройки и справочники — Виды цен. Создадим новый элемент и установим способ задания цены: Произвольный запрос к данным ИБ. В качестве схемы компоновки данных выберем «Произвольную» и откроем конструктор запроса.

Шаг 2. Написание запроса для выборки последней партии

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


ВЫБРАТЬ
    Себестоимость.Номенклатура КАК Номенклатура,
    Себестоимость.Характеристика КАК Характеристика,
    Себестоимость.Стоимость / Себестоимость.Количество КАК ЦенаПоследнейПартии
ИЗ
    РегистрНакопления.СебестоимостьТоваров КАК Себестоимость
ГДЕ
    Себестоимость.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
    И Себестоимость.Период В (
        ВЫБРАТЬ
            МАКСИМУМ(Т.Период)
        ИЗ
            РегистрНакопления.СебестоимостьТоваров КАК Т
        ГДЕ
            Т.Номенклатура = Себестоимость.Номенклатура
    )

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

Шаг 3. Учет распределенных доп. расходов

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

  1. Выбираем записи из таблицы РегистрНакопления.ДетализацияПартийТоваровДляНалогов.
  2. Устанавливаем фильтр по типу записи (поступление).
  3. Группируем по номенклатуре и берем МАКСИМУМ(Период) или МАКСИМУМ(Партия.Дата).
  4. Соединяем полученные данные с основной таблицей регистра для получения стоимостных показателей (Стоимость + СтоимостьДопРасходы).

Важные технические нюансы и ограничения

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

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

2. Версия партионного учета: Убедитесь, что в настройках (НСИ и администрирование — Финансовый результат и контроллинг) используется Партионный учет 2.2. В старых версиях (2.1) структура регистров отличается, и запрос придется переписывать под регистр ПартииТоваровНаСкладах.

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

Резюме

Для реализации задачи «Цена последней закупки + доп. расходы» в 1С:УТ 11 не подходит стандартная настройка СКД, так как она ориентирована на среднюю стоимость остатка. Рассмотрим краткий итог наших действий:

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

← На главную