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

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

Перед многими торговыми компаниями встает задача реализации партионного учета, при которой цена продажи товара жестко привязана к цене его закупки. Например, необходимо автоматически устанавливать цену продажи по формуле: «Цена конкретной поступившей партии + наценка 20%». При этом по ФИФО должна списываться в первую очередь старая партия по своей цене, а затем более новая — по своей.

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

Архитектурные ограничения 1С:УТ 11, о которых важно знать

Прежде чем переходить к настройкам, разберем, почему стандартный механизм видов цен и документов продажи не может динамически рассчитывать цену по ФИФО в режиме реального времени:

  1. Регламентный расчет себестоимости: В УТ 11 окончательная себестоимость партий (с учетом дополнительных расходов, доставки, пошлин) рассчитывается не в момент проведения продажи, а при выполнении регламентной операции Закрытие месяца. В момент оперативной выписки накладной точная себестоимость партии в системе еще может быть не сформирована.
  2. Отсутствие связи «Вид цены — ФИФО» в документе: Типовой конструктор цен не умеет «на лету» определять в табличной части документа Реализация товаров и услуг, какую именно партию система спишет при проведении, и рассчитывать цену от себестоимости этой партии. Настройки цен через произвольный запрос рассчитывают цены только в рамках документа Установка цен номенклатуры на фиксированную дату.
  3. Ограничение табличной части документов: В документе продажи для одной строки номенклатуры может быть задана только одна цена. Если клиент покупает две штуки товара, из которых одна списывается по закупке 100 рублей (цена продажи 120 рублей), а вторая — по закупке 125 рублей (цена продажи 150 рублей), стандартный документ не сможет автоматически разделить одну номенклатурную позицию на две строки с разными ценами.

Ниже мы подробно рассмотрим проверенные способы решения этой задачи.

---

Решение №1. Обособленный учет себестоимости по сериям (Типовой функционал)

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

Рассмотрим пошагово, как настроить эту схему:

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

---

Решение №2. Ввод «Установки цен» на основании поступления (Полуавтоматический режим)

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

  1. Создаем вид цен, например, «Цена закупки (ввод вручную)» и зависимый от него вид цен «Цена продажи» с наценкой 20% (способ задания цены — «Наценка на другой вид цен»).
  2. При оформлении документа Приобретение товаров и услуг непосредственно из формы документа по кнопке «Создать на основании» вводим документ Установка цен номенклатуры.
  3. В созданном документе фиксируется новая цена закупки, и автоматически пересчитывается цена продажи.

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

---

Решение №3. Доработка конфигурации через расширение (Полная автоматизация по ФИФО)

Если требуется, чтобы программа сама, без участия пользователя и ведения серийного учета, находила старейшие партии по ФИФО при продаже, рассчитывала цену закупки конкретной партии, умножала ее на 1.20 (наценка 20%) и автоматически разбивала строки в документе реализации, необходимо прибегнуть к доработке.

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

  1. При вызове команды заполнения (или при проведении документа) алгоритм обращается к остаткам регистра накопления ПартииТоваровОрганизаций (или к регистру себестоимости с учетом партионного учета).
  2. Система анализирует свободные остатки партий по методу ФИФО для выбранной номенклатуры.
  3. Если запрашиваемое количество превышает остаток по первой партии, алгоритм автоматически разбивает одну строку товара на несколько строк в документе продажи.
  4. Для каждой созданной строки устанавливается своя цена: ЦенаПартии * 1.2.

Посмотрим на примерную схему реализации такого алгоритма на встроенном языке 1С:


// Пример логики распределения партий и расчета цен в документе реализации
Для Каждого СтрокаТовара Из Объект.Товары Цикл
    ОстатокДляРаспределения = СтрокаТовара.Количество;
    
    // Получаем таблицу свободных партий по ФИФО (через запрос к регистру партий)
    ТаблицаПартий = ПолучитьОстаткиПартийПоФИФО(СтрокаТовара.Номенклатура, Объект.Склад);
    
    ПерваяСтрока = Истина;
    Для Каждого СтрокаПартии Из ТаблицаПартий Цикл
        Если ОстатокДляРаспределения <= 0 Тогда
            Прервать;
        КонецЕсли;
        
        РаспределяемоеКоличество = Мин(ОстатокДляРаспределения, СтрокаПартии.Остаток);
        
        Если ПерваяСтрока Тогда
            // Изменяем текущую строку документа
            СтрокаТовара.Количество = РаспределяемоеКоличество;
            СтрокаТовара.Цена = СтрокаПартии.СтоимостьЗаЕдиницу * 1.20; // Наценка 20%
            ПерваяСтрока = Ложь;
        Иначе
            // Добавляем новые строки для оставшихся партий
            НоваяСтрока = Объект.Товары.Добавить();
            ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТовара);
            НоваяСтрока.Количество = РаспределяемоеКоличество;
            НоваяСтрока.Цена = СтрокаПартии.СтоимостьЗаЕдиницу * 1.20;
        КонецЕсли;
        
        ОстатокДляРаспределения = ОстатокДляРаспределения - РаспределяемоеКоличество;
    КонецЦикла;
КонецЦикла;

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

← На главную