Разрабатывалось для Розницы для Казахстана 2.2.2.7. Механизмы начисления бонусов и отправки СМС в ней, абсолютно такие же, как в Рознице для РФ.
Введение
В статье рассказывается как сделать полностью автоматическую рассылку SMS именинникам.
В статье используется Розница 2.2, но нижеописанный способ подойдет для любых конфигураций, у которых:
- Используется БСП
- Есть документ НачислениеИСписаниеБонусныхБаллов или аналогичный
Задача
Нужно сделать, чтобы всем держателям бонусных карт в день их рождения приходило SMS как изображена выше.
Конфигурация должна остаться на полной поддержке.
Все должно работать полностью автоматически, без участия пользователя.
Как это сделать? (кратко)
- Для отправки SMS понадобится доступ в Интернет из 1С. У меня для этого старый 3G модем.
- Выбираем провайдера, регистрируемся у него на сайте. Я пользуюсь SMS.RU - мне все нравится.
- В режиме 1С:Предприятие переходим Администрирование - Органайзер - Настройка отправки SMS и указываем настройки провайдера. Здесь же список поддерживаемых провайдеров можно посмотреть.
- Пишем дополнительную обработку, чтобы она подключалась к БСП, она будет создавать ДокументНачислениеБонусовИменинникам, на его основе создавать документ ИнформационнаяРассылка и затем отправлять его.
- Используем механизм регламентных заданий, чтобы все работало полностью автоматически.
Как это сделать? (подробно)
Шаг 1. Настройка автоматического начисления бонусов на день рождения
Здесь никаких доработок не нужно делать. Нужно просто выполнить настройку, чтобы автоматически создавался документ НачислениеИСписаниеБонусныхБаллов по владельцам дисконтных карт, у которых сегодня день рождения.
Как это сделать можно прочитать в руководстве пользователя, но на всякий случай кратко опишу:
Администрирование - Маркетинг - Бонусные программы лояльности - Установить флаг.
Маркетинг - Бонусные программы - Создать бонусную программу.
Маркетинг - Правила расчета баллов - Создать правило расчета - здесь есть два момента:
Момент 1:
Нужно указать, чтобы эти бонусы начислялись по расписанию. Именно один раз в день. Потому что иначе конфигурация создаст несколько документов "Начисление и списание баллов" с одинаковыми начислениями именинникам.
Момент 2:
Если Вам нужно, чтобы бонусные баллы на день рождение начислялись заранее, например, за день, то указываете значение в поле "Количество периодов" и всё ОК.
Но если Вам нужно, чтобы бонусные баллы на день рождение начислялись день в день, то программа Вам не даст этого сделать, потому-что поле "Количество периодов" обязательное для заполнения. Решение есть - открываем программу в режиме "Толстый клиент" и нажимаем на кнопку "Редактировать схему компановки данных", там у параметра "Количество периодов" снимаем галочку "Обязательный", смотрите картинку ниже:
Всё, теперь можно указать количество периодов равным нулю и бонусы на день рождения будут автоматически начисляться день в день.
На всякий случай перейдите в раздел: Администрирование - Обслуживание - Регламентные и фоновые задания и убедитесь, что у Вас создалось задание по начислению бонусов и оно активно.
Рекомендую создать специального пользователя Robot. Открыть это регламентное задание и указать, чтобы но запускалось под этим пользователем. Тогда Вы легко сможете определить, какие документы "Начисление и списание баллов" были созданы регламентным заданием, а какие пользователем из режима 1С:Предприятие.
Всё, теперь можно проверить, что у Вас автоматически создаются документы: Маркетинг - Начисление и списание баллов
Для этого создайте новую дисконтную карту с указанием сегодняшней даты рождения владельца и выполните регламентное задание, если всё работает, то переходите к шагу 2.
Шаг 2. Обработка для автоматической отправки SMS
Теперь, когда автоматически создаются документы Маркетинг - Начисление и списание баллов, нужно на основе них автоматически создавать документы Маркетинг - Информационные рассылки.
Для этого потребуется создать дополнительную обработку. Так как нужно отправлять SMS автоматически, то хорошо было бы подключить эту обработку к уже существующему механизму БСП "Администрирование - Обслуживание - Регламентные и фоновые задания".
Для этого создадим внешнюю обработку по технологии БСП, которую будем подключать через Администрирование - Печатные формы, отчеты и обработки - Дополнительные отчеты и обработки.
Какой должна быть такая обработка подробно описано на ИТС, например здесь:
Главная - Инструкции по разработке на 1С - Библиотека стандартных подсистем 2.4.6. Документация - Глава 3. Настройка и использование подсистем при разработке конфигурации - 3.16. Дополнительные отчеты и обработки
Если у Вас нет постоянного доступа на ИТС, то можно использовать пробный доступ на 7 дней.
Там много и подробно написано про программный интерфейс обработки, для нашей простой задачи можно не читать, а просто сделать так:
То есть нужно просто создать пустую внешнюю обработку, вставить в неё этот код, сохранить её и затем подключить к Администрирование - Печатные формы, отчеты и обработки - Дополнительные отчеты и обработки, в итоге это будет выглядеть вот так:
Понятно, что пока обработка ничего делать не будет, потому-что у неё еще не написан обработчик.
Но уже сейчас можно установить расписание. У себя поставил расписание Каждый день, каждый час, потому-что регламентное задание по созданию документов "Начисление и списание баллов" выполняется раз в день, но когда точно неизвестно, поэтому обработка по отправке SMS должна запускаться через промежутки времени и проверять, а не появился ли документ "Начисление и списание баллов" для отправки SMS'ок именинникам.
Также рекомендую поставить для регламентного задания этой обработки пользователя Robot, тогда Вы сможете понимать, какие рассылки были созданы регламентным заданием, а какие пользователем. Как это сделать описано выше.
Не буду прикладывать весь текст обработки под спойлером, но на некоторые моменты обращу внимание.
1. Если Вам нужно получать имя на латинице, то можно воспользоваться функцией:
ИмяЛатиница = СтроковыеФункцииКлиентСервер.СтрокаЛатиницей(ИмяКирилица);
2. Номер телефона желательно нормализовать, убрав из него все скобки, пробелы, тире - это можно сделать так:
3. Длина текста, которую будите отправлять на латинице не должна привышать около 140 символов, но учитывайте, что провайдер может добавлять префикс, например, как у меня он добавляет: KRASOTKA.
Итого: Выполняете шаг 1, затем подключаете обработку и получаете автоматическую отправку СМС без изменения конфигурации.
Дополнение 1. Форма для опроса владельцев дисконтных карт
В качестве номеров дисконтных карт использую номера телефона владельцев - это можно сделать без доработок, через Администрирование - Подключаемое оборудование - Шаблоны регистрации дисконтных карт.
То есть когда покупатель заводит дисконтную карту, он говорит свой номер телефона, его данные вносят в программу и НЕ выдают пластиковую карту - ибо зачем, у покупателя и так их полный кошелек, а для магазина это дополнительный расход.
В принципе уже можно работать без доработок, но посмотрите на эту форму опроса покупателя при регистрации бонусной карты:
Её проблема в том, что она содержит 6 страниц, которые нужно заполнить продавцу.
Большинство вопросов не нужны (мне), например, фактический адрес, год рождения, адрес электронной почты, фамилия, отчество. Да ещё и телефон автоматически не заполняется, хотя продавец его уже ввёл при нажатии на кнопку Штрихкод.
Решение:
Поэтому разработал расширение, которое изменяет форму опроса и вносит ещё пару полезных фишек. Теперь форма опроса выглядит так:
Какой сценарий работы:
1. Создание бонусной карты
При создании бонусной карты продавец нажимает на кнопку Штрихкод, вводит номер телефона покупателя, затем узнает его имя без фамилии и отчества и день рождения без года - нам эти данные не нужны. После этого продавец нажимает сохранить. Обратите внимание, каким после записи становится имя карты (3).
2. Использование бонусов.
Когда покупатель хочет оплатить бонусами, то продавец нажимает кнопку Штрихкод, узнает у покупателя номер телефона, после чего спрашивает, как зовут покупателя и когда у него день рождения. Покупатель отвечает и продавец убеждается, что это скорее всего карта этого покупателя.
В конфигурации есть способ проверки владельца карты путем отправки на его номер СМС, но это деньги, которые тратить не хочется.
Дополнение 2. Работа в РИБ
Все вышеописанное у меня работает в трех магазинах, объединенных в одну РИБ.
Обработку для автоматической отправки SMS я запускаю регламентным заданием только в центральном узле РИБ, таким образом документы Начисления бонусов создаются только в центральном узле и СМС отправляются только из центрального узла.
Расширение для более удобного создания новой бонусной карты подключил в центральный узел, оно мигрировало через стандартные обмены в два других магазина и теперь во всех магазинах удобный ввод данных владельца дисконтной карты.
Что хотелось бы доработать
Вышеописанная методика является законченным решением, которое уже работаете в боевых условиях.
Хотелось бы сделать доработку применимой для многих типовых решений, с учетом того, что во всех решениях есть небольшие отличия - если будет интерес к публикации, то наверное займусь этим.
То есть хочется, чтобы решение работало сразу из коробки и не требовало дополнительной настройки программистом, сейчас, например, чтобы изменить текст SMS сообщения, нужно редактировать внешнюю обработку в режиме Конфигуратор. В принципе не сложно, но лучше было бы просто ввести все требуемые настройки в режиме Предприятие.
Заключение
В статье было показано, как можно реализовать автоматическую отпавку СМС из многих типовых конфигураций на базе БСП.
Данный механизм работает в трех магазинах около месяца - полет нормальный.
Если Вам понравилась статья, то поставьте лайк.
Тогда у меня хватит стармани, чтобы скачивать обработки других разработчиков, например эту //infostart.ru/public/627824/ и я смогу добавить настройки текста и других параметров для отправки СМС и реализовать ещё какие-нибудь фишки.
Напишите в комментариях, какие фишки Вам нужны?