В торговле и сфере услуг (особенно в полиграфии, производстве мебели или резке материалов) часто возникает ситуация, когда товар имеет цену за единицу измерения (например, за 1 квадратный метр), но существует порог рентабельности. Например, цена за квадратный метр составляет 1000 рублей, но из-за затрат на подготовку оборудования и обработку заказа минимальная сумма сделки не может быть ниже 450 рублей. Если клиент заказывает всего 0,1 кв. м., математическая сумма составит 100 рублей, что невыгодно для бизнеса.
Рассмотрим, как настроить систему 1С:Управление нашей фирмой (УНФ) так, чтобы при пробитии чека в РМК или оформлении заказа сумма автоматически корректировалась до минимального порога. Проанализируем несколько способов: от административных методов до программирования расширений.
Этот метод считается наиболее корректным с точки зрения сохранения типовой конфигурации на поддержке. В 1С:УНФ существует мощный механизм скидок, который позволяет подключать внешние алгоритмы расчета.
Проанализируем алгоритм настройки:
Строка.Сумма меньше 450 рублей, обработка должна рассчитать необходимую наценку (отрицательную скидку) или установить фиксированную сумму.Преимущество этого метода в том, что расчет происходит автоматически в момент нажатия кнопки Рассчитать скидки в заказе или при добавлении товара в РМК. Программа сама «дотянет» сумму до нужного значения, распределив разницу в колонку скидки.
Если нам нужно, чтобы система вела себя более жестко и менеджер или кассир не могли обойти это правило, следует воспользоваться механизмом расширений. Мы можем перехватить событие изменения количества или цены в табличной части документа.
Разберем пример логики кода, который можно внедрить через расширение в форму документа ЗаказПокупателя или ЧекККМ. Нам необходимо подписаться на событие ПриИзменении для колонок Количество, Цена и Сумма.
Пример кода для расширения (обработчик в форме документа):
&НаКлиенте
Процедура Расш1_ЗапасыКоличествоПриИзмененииПосле(Элемент)
ТекущаяСтрока = Элементы.Запасы.ТекущиеДанные;
// Проверяем, входит ли товар в категорию с минимальной ценой
Если ТекущаяСтрока.Номенклатура.МинимальнаяСуммаЗаказа > 0 Тогда
Минимум = ТекущаяСтрока.Номенклатура.МинимальнаяСуммаЗаказа; // Доп. реквизит в номенклатуре
Если ТекущаяСтрока.Сумма < Минимум И ТекущаяСтрока.Количество > 0 Тогда
ТекущаяСтрока.Сумма = Минимум;
// Пересчитываем цену за единицу, чтобы Сумма соответствовала
ТекущаяСтрока.Цена = ТекущаяСтрока.Сумма / ТекущаяСтрока.Количество;
Сообщить("Сумма позиции скорректирована до минимальной стоимости: " + Минимум + " руб.");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Важно помнить, что в РМК (Рабочем месте кассира) логика работы с табличной частью может отличаться, так как там используется динамическое обновление данных. Поэтому расширение должно затрагивать не только формы документов, но и программные модули расчета цен, если используется автоматический подбор.
Если вы не хотите привлекать программиста, существует «простой» путь, который часто используется в малом бизнесе. Рассмотрим его по шагам:
Плюс метода: абсолютная прозрачность для клиента и налоговой. В чеке будет две строки: сам товар (по реальной цене за метр) и услуга по обработке малого заказа. Это снимает вопросы о том, почему 0,1 м² стоит как 0,45 м².
В 1С:УНФ есть штатный функционал Минимальные цены продажи. Выясним, поможет ли он в нашей ситуации. Мы можем установить минимальную цену для товара, ниже которой система не позволит провести документ.
Однако здесь есть серьезный нюанс: минимальная цена устанавливается за единицу измерения. Если вы установите минимальную цену 450 рублей за 1 кв. м., то при продаже 0,1 кв. м. программа проверит цену за метр (1000 руб.) и пропустит документ, так как 1000 > 450. Но итоговая сумма все равно будет 100 рублей. Поэтому данный механизм в чистом виде для «минимальной суммы строки» не подходит, он защищает только от демпинга по цене за единицу.
Проанализируем ситуацию с Рабочим местом кассира. В отличие от документа Заказ покупателя, где менеджер может вручную поправить поле Сумма, в интерфейсе РМК многие поля заблокированы для прямого редактирования ради скорости работы и минимизации ошибок кассира.
Если вы выбрали путь доработки через расширение, убедитесь, что вы меняете логику в общем модуле или в форме РМК, которая отвечает за добавление товара в корзину. В УНФ это часто функции, связанные с обработкой штрихкодов или выбора из списка быстрого подбора.
Резюмируем:
При реализации любого из этих способов обязательно проверьте, как это отразится на печатных формах и фискальных чеках. По закону 54-ФЗ сумма Цена * Количество должна в точности равняться значению в колонке Сумма. Поэтому при принудительной установке суммы 450 руб. система должна автоматически пересчитать цену за единицу товара (в нашем примере она станет 4500 руб. за 1 м² при количестве 0,1 м²).