Как реализовать минимальную сумму заказа в 1С:УНФ 1.6 при продаже товаров в квадратных метрах?

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

В торговле и сфере услуг (особенно в полиграфии, производстве мебели или резке материалов) часто возникает ситуация, когда товар имеет цену за единицу измерения (например, за 1 квадратный метр), но существует порог рентабельности. Например, цена за квадратный метр составляет 1000 рублей, но из-за затрат на подготовку оборудования и обработку заказа минимальная сумма сделки не может быть ниже 450 рублей. Если клиент заказывает всего 0,1 кв. м., математическая сумма составит 100 рублей, что невыгодно для бизнеса.

Рассмотрим, как настроить систему 1С:Управление нашей фирмой (УНФ) так, чтобы при пробитии чека в РМК или оформлении заказа сумма автоматически корректировалась до минимального порога. Проанализируем несколько способов: от административных методов до программирования расширений.

Способ 1. Использование механизма автоматических скидок с внешней обработкой

Этот метод считается наиболее корректным с точки зрения сохранения типовой конфигурации на поддержке. В 1С:УНФ существует мощный механизм скидок, который позволяет подключать внешние алгоритмы расчета.

Проанализируем алгоритм настройки:

  1. Перейдем в раздел Продажи — Цены и скидки — Автоматические скидки.
  2. Создадим новую скидку. В поле Способ предоставления выберем вариант Внешняя обработка.
  3. Для реализации этой логики потребуется написать небольшую обработку, которая будет проверять итоговую сумму строки. Если Строка.Сумма меньше 450 рублей, обработка должна рассчитать необходимую наценку (отрицательную скидку) или установить фиксированную сумму.
  4. В условиях предоставления можно указать конкретный сегмент номенклатуры, для которого действует это правило (например, только для широкоформатной печати).

Преимущество этого метода в том, что расчет происходит автоматически в момент нажатия кнопки Рассчитать скидки в заказе или при добавлении товара в РМК. Программа сама «дотянет» сумму до нужного значения, распределив разницу в колонку скидки.

Способ 2. Создание расширения для контроля суммы строки

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

Разберем пример логики кода, который можно внедрить через расширение в форму документа ЗаказПокупателя или ЧекККМ. Нам необходимо подписаться на событие ПриИзменении для колонок Количество, Цена и Сумма.

Пример кода для расширения (обработчик в форме документа):


&НаКлиенте
Процедура Расш1_ЗапасыКоличествоПриИзмененииПосле(Элемент)
    ТекущаяСтрока = Элементы.Запасы.ТекущиеДанные;
    
    // Проверяем, входит ли товар в категорию с минимальной ценой
    Если ТекущаяСтрока.Номенклатура.МинимальнаяСуммаЗаказа > 0 Тогда
        Минимум = ТекущаяСтрока.Номенклатура.МинимальнаяСуммаЗаказа; // Доп. реквизит в номенклатуре
        
        Если ТекущаяСтрока.Сумма < Минимум И ТекущаяСтрока.Количество > 0 Тогда
            ТекущаяСтрока.Сумма = Минимум;
            // Пересчитываем цену за единицу, чтобы Сумма соответствовала
            ТекущаяСтрока.Цена = ТекущаяСтрока.Сумма / ТекущаяСтрока.Количество;
            
            Сообщить("Сумма позиции скорректирована до минимальной стоимости: " + Минимум + " руб.");
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

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

Способ 3. Административный метод: Номенклатура «Доплата до минимума»

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

  1. Создадим в справочнике Номенклатура позицию с типом Услуга и названием «Доплата за малый объем заказа».
  2. В настройках этой номенклатуры можно оставить цену нулевой или редактируемой.
  3. Обучим продавцов: если при добавлении товара в чек сумма строки за кв. м. оказывается меньше 450 рублей, они должны вручную добавить позицию «Доплата» на недостающую разницу.

Плюс метода: абсолютная прозрачность для клиента и налоговой. В чеке будет две строки: сам товар (по реальной цене за метр) и услуга по обработке малого заказа. Это снимает вопросы о том, почему 0,1 м² стоит как 0,45 м².

Способ 4. Настройка минимальных цен

В 1С:УНФ есть штатный функционал Минимальные цены продажи. Выясним, поможет ли он в нашей ситуации. Мы можем установить минимальную цену для товара, ниже которой система не позволит провести документ.

Однако здесь есть серьезный нюанс: минимальная цена устанавливается за единицу измерения. Если вы установите минимальную цену 450 рублей за 1 кв. м., то при продаже 0,1 кв. м. программа проверит цену за метр (1000 руб.) и пропустит документ, так как 1000 > 450. Но итоговая сумма все равно будет 100 рублей. Поэтому данный механизм в чистом виде для «минимальной суммы строки» не подходит, он защищает только от демпинга по цене за единицу.

Важные нюансы работы в РМК

Проанализируем ситуацию с Рабочим местом кассира. В отличие от документа Заказ покупателя, где менеджер может вручную поправить поле Сумма, в интерфейсе РМК многие поля заблокированы для прямого редактирования ради скорости работы и минимизации ошибок кассира.

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

Резюмируем:

  1. Для быстрого решения без кода — используйте услугу-доплату.
  2. Для автоматизации «как в аптеке» — используйте внешнюю обработку в скидках.
  3. Для жесткого контроля интерфейса — пишите расширение с пересчетом цены при изменении количества.

При реализации любого из этих способов обязательно проверьте, как это отразится на печатных формах и фискальных чеках. По закону 54-ФЗ сумма Цена * Количество должна в точности равняться значению в колонке Сумма. Поэтому при принудительной установке суммы 450 руб. система должна автоматически пересчитать цену за единицу товара (в нашем примере она станет 4500 руб. за 1 м² при количестве 0,1 м²).

← На главную