В процессе ведения торговой деятельности часто возникает критическая ситуация: закупочные цены от поставщика растут, менеджер оформляет документ Поступление товаров и услуг, но забывает актуализировать розничные цены. В результате товар продается по старым ценам, что ведет к снижению маржинальности или даже к убыткам. Рассмотрим подробнее, как реализовать механизм контроля и избежать «продаж в ноль».
Прежде чем приступать к доработкам, проанализируем бизнес-процесс. Существует два основных подхода к решению задачи:
Установка цен номенклатуры еще не создан.Разберем по шагам, как реализовать эти механизмы в современных конфигурациях на платформе 1С:Предприятие 8.3.
Наиболее надежный технический способ — использование расширения конфигурации. Мы добавим Подписку на событие или переопределим процедуру ОбработкаПроведения для документа ПриобретениеТоваровУслуг (или ПоступлениеТоваровУслуг). Это позволит не снимать основную конфигурацию с поддержки.
Выясним причину необходимости контроля именно в момент проведения. Если мы заблокируем проведение, товар не встанет на остаток, и его нельзя будет продать по любой цене. Это заставит персонал немедленно заняться ценообразованием.
Пример логики проверки в коде (схематично):
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
// 1. Получаем текущие закупочные цены из документа
// 2. Сравниваем их с последними зарегистрированными ценами поставщика
// 3. Проверяем наличие актуального документа "Установка цен номенклатуры" на дату документа
Если ЦеныИзменились И НеНайденаУстановкаЦен() Тогда
ТекстСообщения = "Обнаружено изменение закупочных цен! Проведение запрещено до создания установки розничных цен.";
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , , , Отказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Чтобы не замедлять работу склада, можно пойти по пути автоматизации. Рассмотрим вариант, когда система сама формирует документ переоценки. Это можно сделать двумя способами:
Установка цен номенклатуры создается программно в той же транзакции. Однако здесь кроется нюанс «мертвой петли»: в некоторых конфигурациях установка цен требует ссылки на уже проведенный документ поступления.Проанализируем ситуацию с фоновым заданием. Это наиболее стабильный вариант для высоконагруженных систем, так как он не блокирует работу пользователя в момент нажатия кнопки «Провести и закрыть».
Посмотрим на пример реализации удобного интерфейса для менеджера. Вместо жесткого отказа можно выводить информационное окно при проведении. Если система обнаруживает отклонение цен более чем на заданный процент (например, 1%), пользователю предлагается таблица:
В этом окне можно добавить кнопку «Перейти к переоценке», которая откроет предзаполненную установку цен.
Иногда блокировка поступления на склад недопустима (например, когда идет приемка большой фуры). В этом случае перенесем контроль в Рабочее место кассира (РМК) или в документ Реализация товаров и услуг. Система должна проверять дату последнего поступления. Если ДатаПоступления > ДатаПоследнейПереоценки, программа может блокировать добавление товара в чек до подтверждения старшим менеджером.
Для реализации данных механизмов рекомендуем использовать расширения конфигурации (.cfe). Это современный стандарт разработки в 1С. Основные преимущества:
Прежде чем приступать к коду, проверим типовые возможности вашей программы (УТ 11, Розница 2.3/3.0):
Выбор метода зависит от дисциплины в вашей компании. Если важно исключить любую возможность человеческой ошибки — выбирайте программный запрет через расширение. Если важнее скорость складских операций — внедряйте автоматическое создание документов установки цен через регламентные задания или удобные интерактивные обработки.