При ведении розничной торговли перед компаниями часто встает задача персонализации продаж. Стандартный розничный поток в программе «1С:Управление торговлей 10.3» (УТ 10.3) ориентирован на обезличенного покупателя: оформляется документ ЧекККМ, а в конце смены все продажи сворачиваются в единый документ ОтчетОРозничныхПродажах. При такой схеме данные о том, кто именно совершил покупку, теряются, что делает невозможным полноценный CRM-анализ (оценку LTV клиентов, сегментацию, построение систем лояльности).
В этой статье мы подробно разберем три практических метода решения этой задачи: от использования скрытых штатных механизмов до автоматизации оптовой схемы и доработки конфигурации.
---
Вопреки распространенному мнению, что типовая УТ 10.3 не умеет связывать розничные продажи с контрагентами, в программе существует мощный встроенный механизм, завязанный на карты лояльности. Рассмотрим, как он устроен и как его правильно настроить.
Шаг 1. Настройка связи «Карта — Контрагент»
В системе существует справочник ИнформационныеКарты (доступный через меню Справочники — Предприятие — Информационные карты). При создании новой карты (например, вида «Дисконтная» или «Магнитная») мы можем напрямую связать ее с конкретным клиентом:
ИнформационныеКарты.Контрагенты. Если клиента еще нет в базе, продавец прямо из этого интерфейса может создать новую карточку физического лица.Шаг 2. Оформление продажи в РМК
При оформлении продажи через интерфейс «Рабочее место кассира» (РМК) или непосредственно в документе ЧекККМ продавец считывает штрихкод или магнитный код карты клиента (или находит ее вручную по ФИО/телефону владельца через поиск). Номер карты подставляется в чек.
Шаг 3. Закрытие смены и проведение аналитики
При выполнении операции «Закрытие кассовой смены» система автоматически архивирует чеки и формирует сводный документ ОтчетОРозничныхПродажах. Проанализируем, куда попадают данные о клиентах:
ОтчетОРозничныхПродажах переносится информация в специальную табличную часть — «Продажи по дисконтным картам».ПродажиПоДисконтнымКартам. Измерениями этого регистра являются ДисконтнаяКарта и ВладелецДисконтнойКарты (ссылка на контрагента).Важный подводный камень штатного механизма:
В некоторых релизах УТ 10.3 движения по регистру ПродажиПоДисконтнымКартам формируются только при условии, что по карте была предоставлена хотя бы минимальная скидка (даже 0,01%). Если карта была просто считана кассиром для фиксации визита, но скидка в чеке составила 0%, запись в регистр может не создаться. Чтобы обойти это ограничение без привлечения программиста, рекомендуется настроить в системе автоматическую скидку по картам лояльности в размере, например, 0.1% или 1 копейки.
---
Если бизнес-процесс требует жесткого контроля взаиморасчетов с каждым клиентом, выписки гарантийных талонов или счетов-фактур на физическое лицо, стандартная розничная схема с чеками ККМ не подойдет. В этом случае мы можем использовать схему оптовых отгрузок, адаптированную под розницу.
При такой схеме вместо чека ККМ на каждую продажу оформляется пакет документов: РеализацияТоваровУслуг (РТиУ) + документ оплаты (ПриходныйКассовыйОрдер для наличных или ОплатаОтПокупателяПлатежнойКартой для терминала).
Чтобы продавец не тратил время на ручное создание цепочки документов, этот процесс необходимо автоматизировать с помощью специального АРМ (Рабочего места менеджера/кассира). Выясним, как это работает на практике:
// Псевдокод автоматического формирования документов в АРМ:
НовыйДокументРТиУ = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НовыйДокументРТиУ.ЗаполнитьПоУмолчанию();
НовыйДокументРТиУ.Контрагент = ВыбранныйКлиент;
НовыйДокументРТиУ.ДоговорКонтрагента = ВыбранныйКлиент.ОсновнойДоговор;
// ... (заполнение табличной части товарами)
НовыйДокументРТиУ.Записать(РежимЗаписиДокумента.Проведение);
НовыйДокументПКО = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
НовыйДокументПКО.ЗаполнитьПоУмолчанию();
НовыйДокументПКО.ВидОперации = Перечисления.ВидыОперацийПКО.ОплатаПокупателя;
НовыйДокументПКО.ДокументПланированияПлатежа = НовыйДокументРТиУ;
НовыйДокументПКО.СуммаДокумента = СуммаОплаты;
// ... (запись, проведение и пробитие чека на ККМ)
НовыйДокументПКО.Записать(РежимЗаписиДокумента.Проведение);
Преимущества оптовой схемы:
---
Если мы хотим сохранить классическую и быструю розничную схему с использованием чеков ККМ и документа ОтчетОРозничныхПродажах, но при этом иметь жесткую аналитику по контрагентам в стандартном регистре продаж, нам потребуется небольшая доработка конфигурации.
Разберем по шагам, какие изменения необходимо внести в систему:
Шаг 1. Модификация документов
ЧекККМ добавляем новый реквизит Контрагент (тип ссылки: СправочникСсылка.Контрагенты). Выносим этот реквизит на форму Чека ККМ и в форму интерфейса РМК.ОтчетОРозничныхПродажах также добавляем реквизит Контрагент в табличную часть Товары (так как в одном сводном отчете за день могут быть продажи разным клиентам).Шаг 2. Изменение логики закрытия смены
Нам необходимо скорректировать обработку закрытия кассовой смены, которая переносит данные из чеков в финальный отчет. Проанализируем алгоритм:
В модуле обработки закрытия смены находим код, отвечающий за сворачивание табличных частей чеков ККМ. Изменяем группировку так, чтобы при свертке товаров учитывался добавленный нами реквизит Контрагент. Это позволит перенести информацию о конкретных покупателях из каждого чека в соответствующие строки табличной части Товары документа ОтчетОРозничныхПродажах.
Шаг 3. Корректировка движений по регистрам
Чтобы информация попадала в аналитические отчеты, необходимо изменить проведение документа ОтчетОРозничныхПродажах по регистру накопления Продажи.
В модуле проведения документа находим формирование движений по этому регистру и в поле ДоговорКонтрагента (или в кастомное добавленное нами измерение Покупатель) передаем значение Контрагент из строки табличной части Товары.
Пример изменения кода проведения в модуле документа ОтчетОРозничныхПродажах:
// В цикле обработки строк табличной части Товары:
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
// Вместо обезличенного розничного покупателя подставляем конкретного контрагента из строки:
Если ЗначениеЗаполнено(ТекСтрокаТовары.Контрагент) Тогда
Движение.ДоговорКонтрагента = ТекСтрокаТовары.Контрагент.ОсновнойДоговор;
Иначе
Движение.ДоговорКонтрагента = ДоговорРозничногоПокупателяПоУмолчанию;
КонецЕсли;
Движение.Количество = ТекСтрокаТовары.Количество;
Движение.Стоимость = ТекСтрокаТовары.Сумма;
Благодаря такому подходу все стандартные отчеты по продажам начнут показывать реальных покупателей в разрезе розничных документов без усложнения работы кассира.
---
Выбор оптимального варианта зависит от бизнес-процессов вашей компании и готовности к доработке системы:
ОтчетОРозничныхПродажах, но при этом иметь кастомную детальную аналитику в регистре продаж.