Доработка программы лояльности в 1С:УТ 11: анкета клиента, автобонусы и печать согласия

Расширение конфигурации для розничной сети: маркетинговая анкета, автобонусы за её заполнение и печатная форма согласия — без правки типовой УТ

Заказчик: Розничная сеть магазинов
Стек: 1С:Предприятие 8.3, Управление торговлей 11.4, расширение конфигурации, дополнительные реквизиты и сведения, печатные формы MXL, бонусные программы лояльности

Задача

Розничная сеть на 1С:Управление торговлей 11 хотела собирать по клиентам не только контакты, но и полный маркетинговый профиль — каналы связи (мессенджеры и соцсети), семейное положение, наличие и возраст детей — чтобы делать адресные рассылки и акции. Заполнять такую анкету вручную кассиры не спешили. Нужен был стимул для клиента и продавца, контроль полноты данных и печатное согласие на обработку персональных данных. При этом типовую конфигурацию менять было нельзя — сеть регулярно обновляет УТ.

Результат

Всю логику вынесли в отдельное расширение конфигурации, поэтому типовая УТ осталась нетронутой и обновляется штатно. Маркетинговый профиль клиента собирается через дополнительные реквизиты — без изменения структуры справочников. Полностью заполненная анкета автоматически и без задвоений начисляет клиенту бонусные баллы, а мастера регистрации не дают завести клиента с неполными или некорректными данными. Печатная форма анкеты-согласия выводится в один клик — с галочками по профилю и штрихкодами действующих карт лояльности.

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

Задача

Сеть работает на 1С:УТ 11.4. Клиенты в системе — это справочник «Партнёры» с картами лояльности. Бизнесу было мало телефона и e-mail: маркетологи хотели знать, в каких мессенджерах клиент на связи, женат ли он, есть ли дети и какого возраста — чтобы делать сегментированные рассылки (например, акции на детские товары только тем, у кого есть дети до 6 лет). Проблема была в мотивации: кассиры и клиенты не хотели тратить время на длинную анкету. Плюс требовалось печатное согласие на обработку персональных данных с подписью клиента.

Что сделали

1. Маркетинговый профиль через дополнительные реквизиты

Новые поля анкеты — согласие на рассылку, набор мессенджеров (Viber, WhatsApp, Telegram, ВКонтакте, Одноклассники и «свой» вариант), семейное положение, наличие детей и пять возрастных групп — завели не как новые реквизиты справочника, а как дополнительные реквизиты и сведения (план видов характеристик). Это штатный механизм 1С: структура типового справочника «Партнёры» не меняется, а значит расширение не конфликтует с обновлениями УТ.

2. Мастера регистрации клиента с усиленной проверкой

Типовые формы «Помощник нового партнёра» и мастер регистрации карты лояльности переопределили через адаптеры расширения (&Вместо). Для клиента-физлица сделали обязательными дату рождения, пол и контактную информацию, добавили проверку формата e-mail и паспортных данных — чтобы в базу не попадал «пустой» клиент, по которому потом нельзя ни начислить бонус, ни сделать рассылку.

&После("ОбработкаПроверкиЗаполнения")
Процедура nsm_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    Если ЭтотОбъект.Клиент = Истина
        И ЭтотОбъект.ЮрФизЛицо = Перечисления.КомпанияЧастноеЛицо.ЧастноеЛицо Тогда
        ПроверяемыеРеквизиты.Добавить("ДатаРождения");
        ПроверяемыеРеквизиты.Добавить("Пол");
    КонецЕсли;
КонецПроцедуры

3. Автоначисление бонусов за полную анкету

Главная механика мотивации: как только клиент заполняет анкету целиком (ФИО, дата рождения, контакты, согласие на рассылку, хотя бы один мессенджер, семейное положение и — если есть дети — их возраст), расширение само создаёт и проводит документ «Начисление и списание бонусных баллов» на фиксированную сумму по маркетинговому мероприятию. Точка входа — адаптер &После("ПриЗаписи") в модуле объекта «Партнёры»:

&После("ПриЗаписи")
Процедура nsm_ПриЗаписи(Отказ)
    nsm_Партнеры.ПроверкаЗаполненияДопРеквизитов(ЭтотОбъект, Отказ);
    nsm_Партнеры.НачислениеБонусныхБаллов(ЭтотОбъект, Отказ);
КонецПроцедуры

Важная деталь — идемпотентность: перед начислением расширение запросом проверяет, что бонус по этому мероприятию клиенту ещё не давали. Иначе каждая пересохранённая карточка задваивала бы баллы.

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ Начисление.Ссылка
|ИЗ Документ.НачислениеИСписаниеБонусныхБаллов.Начисление КАК Начисление
|ГДЕ Начисление.Партнер = &Партнер
|   И Начисление.Ссылка.МаркетинговоеМероприятие = &Мероприятие";
// ...
Если РезультатЗапроса.Пустой() Тогда
    НовыйДокумент = Документы.НачислениеИСписаниеБонусныхБаллов.СоздатьДокумент();
    НовыйДокумент.БонуснаяПрограммаЛояльности = БонуснаяПрограмма;
    НовыйДокумент.МаркетинговоеМероприятие    = МаркетинговоеМероприятие;
    НовСтр = НовыйДокумент.Начисление.Добавить();
    НовСтр.Партнер = Объект.Ссылка;
    НовСтр.Баллы   = 500;
    НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;

4. Печать анкеты-согласия на ПДн

Для бумажного согласия сделали печатную форму (макет MXL): расширение собирает данные клиента из контактной информации и дополнительных реквизитов, проставляет галочки по каждому пункту профиля и подтягивает штрихкоды действующих карт лояльности. Клиент подписывает — сеть получает законное основание на обработку ПДн и рассылки.

Макет = Справочники.КартыЛояльности.ПолучитьМакет("ПФ_MXL_Анкета1");
ОбластьМакета = Макет.ПолучитьОбласть("Анкета");
ОбластьМакета.Параметры.ФИО      = Партнер;
ОбластьМакета.Параметры.Telegram = ДанныеКонтрагента["Telegram"]; // "v" — галочка
ОбластьМакета.Параметры.ДетиДа   = ДанныеКонтрагента["ДетиДа"];
ОбластьМакета.Параметры.ШККарты  = ДанныеКонтрагента["ШККарты"];
ТабличныйДокумент.Вывести(ОбластьМакета);

Почему так

  • Расширение вместо правки типовой. Вся доработка — заимствованные объекты и модули-адаптеры (&Вместо, &После). Типовая УТ обновляется без конфликтов, а доработку можно снять одним отключением расширения.
  • Дополнительные реквизиты вместо новых полей. Профиль клиента расширяется без изменения структуры справочника — гибко и совместимо с обновлениями.
  • Идемпотентность начислений. Автобонус завязан на запрос-проверку, поэтому повторные записи карточки не задваивают баллы.

Тот же подход к работе с клиентскими данными мы применяли в интеграционных проектах — например, в кейсе интеграции 1С:УТ с Bitrix24 CRM, где карточки клиентов и воронка уезжают в CRM. Здесь же весь маркетинг остаётся внутри 1С.

Нужна доработка 1С под ваш маркетинг?

Если типовой программы лояльности в 1С не хватает под ваши акции и рассылки — мы дорабатываем УТ, КА и ERP расширениями, не ломая обновляемость. А чтобы разобраться в самом механизме расширений 1С (заимствование объектов, адаптеры &Вместо/&После), на котором построено это решение, посмотрите курс по разработке расширений 1С.

Частые вопросы

Нужен похожий проект?

Опишите задачу — оценю сроки и стоимость.