Скидка по промокоду с рассылкой трех СМС. Розница 2.3

11.09.24

Интеграция - SMS рассылки

Условия тех. задания. Создать скидку при покупке номенклатуры в определенном сегменте с генерацией промокода и рассылкой трех СМС. СМС1 посылается на следующий день после покупки с шаблоном - "Вам будет доступна скидка %3% с %1 по %2". СМС2 посылается через заданное количество дней указанных в скидке с шаблоном - "Доступна скидка %3% по промокоду %4 с %1 по %2". СМС3 посылается через половину срока действия скидки. Срок действия скидки указывается в днях, шаблон СМС - "Скидка %3% по промокоду %4 заканчивается %2". Где параметры %1, %2 - дата начала и окончания действия скидки, %3 - процент скидки, %4 - промокод.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
СМС рассылка
.zip 55,21Kb ver:1
0
0 Скачать (2 SM) Купить за 2 150 руб.

Создание скидки

Создаем новую скидку. Условие предоставления - "При предъявлении промокода / купона"

Указываем тип скидки, размер скидки, сегмент номенклатуры. В наименование скидки добавляем "SMS". После сохранения названия, активируется закладка "Рассылка СМС".

 

Переходим на закладку "Рассылка СМС" и вводим данные: "Количество дней отсрочки акции", "Количество дней действия акции" и шаблоны СМС. Сохраняем скидку.

 

Помещаем обработку "Рассылка СМС" в дополнительные отчеты и обработки и настраиваем расписание. Для файловых баз с  распределенной структурой, обработка запускается только на главном узле.

 

 

Алгоритм действия обработки следующий.

1. По регистру сведений СостоянияОднократныхСкидокИКупонов ищутся записи со скидкой "SMS" рассылки по условию текущая дата больше даты активации скидки  (период) и меньше дата начала акции, имеющие дисконтные карты с заполненным номером телефона.

2. Если документ информационная рассылка на текущую дату найден, то в него добавляются записи в таблицу адресаты с текстом СМС1, если  документа нет, то он создается.

 

 

3. Ищется документ информационная рассылка на дату начала акции если документ найден, то в таблицу адресаты добавляются записи с текстом СМС2, если  документа нет, то он создается.

 

 

4. Ищется документ информационная рассылка на дату середины акции если документ найден, то в таблицу адресаты добавляются записи с текстом СМС3, если  документа нет, то он создается.

5. В регистре сведений СостоянияОднократныхСкидокИКупонов изменяются записи на период = дата начала акции и период действия = дата окончания акции

 

 

6. Адресатам документов с датой = текущая дата посылаются СМС. И в случае успешного отправления состояние строки адресата меняется на доставлено.

Обработка имеет следующие переменные.

Ответственный = Справочники.Пользователи.НайтиПоНаименованию("Администратор", Ложь);
СтоимостьСМС = 2.78;
МинимальнаяСуммаНасчету = 100;
ОтправитьДокументом = Ложь;

Ответственный - пользователь ссылка на которого пишется в документ "Информационная рассылка"

МинимальнаяСуммаНасчету - сумма после которой рассылка СМС блокируется. Перед блокировкой ответственному,  если у него есть номер телефона в справочнике "Пользователи" или "Физические лица", посылается СМС с текстом "На баланссе меньше 100 р."

ОтправитьДокументом - если у вас настроена передача СМС документом "Информационная рассылка", то эту переменную необходимо установить в Истину. Переработанный код модуля формы документа "Информационная рассылка" ОтправитьНаСервере,  вставлен в обработку. При этом необходимо помнить, что номер телефона берется почему то не из документа "Информационная рассылка", а из контактной информации. 

Функция ОтправитьНаСервере(Объект)
	
	КоличествоОтправленных = 0;
	Если Не ОтправкаSMS.НастройкаОтправкиSMSВыполнена() Тогда
		// Почму разработчики закомментировали этот код не разбирался
		//ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Не выполнены настройки отправки SMS.'"), , "Объект");
		//Возврат КоличествоОтправленных;
	КонецЕсли;
	
	МассивАдресатов = ПолучитьСтруктуруКонтактнойИнформациейНаСервере(Объект.Адресаты.Выгрузить(,"Контакт").ВыгрузитьКолонку("Контакт"));
	
	Для Каждого СтрокаАдресата Из Объект.Адресаты Цикл
		
		Если не СтрокаАдресата.СостояниеСообщения= Перечисления.СостоянияСообщенияSMS.Исходящее Тогда
			Продолжить;
		КонецЕсли;
		
		СтруктураОтбора = Новый Структура("Контакт", СтрокаАдресата.Контакт);
		МассивКонтактнойИнформации = МассивАдресатов.НайтиСтроки(СтруктураОтбора);
		Если МассивКонтактнойИнформации.Количество() > 0 Тогда
			КонтактнаяИнформация = МассивКонтактнойИнформации[0].КонтактнаяИнформация;
		КонецЕсли;
		
		ТекстСообщения = СтрокаАдресата.ТекстСообщения;
		
		МассивНомеров = Новый Массив;
		МассивНомеров.Добавить(КонтактнаяИнформация);
		РезультатОтправки = ОтправкаSMS.ОтправитьSMS(МассивНомеров, ТекстСообщения, Неопределено, Объект.ОтправлятьВТранслите);
		СтрокаАдресата.СостояниеСообщения = Перечисления.СостоянияСообщенияSMS.ПустаяСсылка();
		
		Если РезультатОтправки.ОтправленныеСообщения.Количество() = 0 Тогда
			СтрокаАдресата.ИдентификаторСообщения = "";
			СтрокаАдресата.СостояниеСообщения     = Перечисления.СостоянияСообщенияSMS.НеУдалосьПередатьПровайдеру;
		Иначе
					
			Для Каждого ОтправленноеСообщение Из РезультатОтправки.ОтправленныеСообщения Цикл
				СтрокаАдресата.ИдентификаторСообщения = ОтправленноеСообщение.ИдентификаторСообщения;
				СтрокаАдресата.СостояниеСообщения     = Перечисления.СостоянияСообщенияSMS.ОтправляетсяПровайдером;
			КонецЦикла;
			
		КонецЕсли;
		Если РезультатОтправки.Свойство("ОписаниеОшибки")
			И ЗначениеЗаполнено(РезультатОтправки.ОписаниеОшибки) Тогда
			СтрокаАдресата.ТекстОшибки = РезультатОтправки.ОписаниеОшибки;
			СтрокаАдресата.ИдентификаторСообщения = "";
			Если НЕ ЗначениеЗаполнено(СтрокаАдресата.СостояниеСообщения) Тогда
				СтрокаАдресата.СостояниеСообщения = Перечисления.СостоянияСообщенияSMS.НеУдалосьПередатьПровайдеру;
			КонецЕсли;
		Иначе
			СтрокаАдресата.ТекстОшибки = "";
		КонецЕсли;
		КоличествоОтправленных = КоличествоОтправленных + РезультатОтправки.ОтправленныеСообщения.Количество();

	КонецЦикла;  
	
	Возврат КоличествоОтправленных;
		
КонецФункции	

 

Изначально обработка настроена на передачу СМС сервисом smsdelivery.ru - код в обработке

Функция ОтправитьSMSНаНомер(Номертелефона, ТекстСообщения) Экспорт
	
	Если ТекстСообщения = "" Тогда
		Возврат Ложь;	
	КонецЕсли;
	
// Сдесь вводятся реальные данные провайдера
	Логин = "ЛогинУчетнойЗаписиSMSСервиса";
	Пароль = "ПарольУчетнойЗаписиSMSСервиса";
	ИмяОтправителяSMS = "ИмяОтправителяSMS";
	
//////////////////////////////////////	
	Возврат "OK";    // Это тестирование - после настройки удалить
/////////////////////////////////////	
	
	// Подключаем сервис 
	Определение = Новый WSОпределения("http://ws1.smsdelivery.ru/SMSWebservice.asmx?WSDL");
	Прокси = Новый WSПрокси(Определение,"http://smsdelivery.ru/","SMSWebService","SMSWebServiceSoap");
	
	Фабрика = Прокси.ФабрикаXDTO;
	СтруктураБаланса = Прокси.GetBalance(Логин,Пароль);
	
	Баланс = СтруктураБаланса.Balance;
	
	Если СтруктураБаланса.Balance < МинимальнаяСуммаНасчету Тогда	
		
		Если СтруктураБаланса.Balance > МинимальнаяСуммаНасчету-2*СтоимостьСМС Тогда
		
			Запрос = Новый Запрос;
			Запрос.Текст = 
				"ВЫБРАТЬ
				|	ПользователиКонтактнаяИнформация.НомерТелефона КАК НомерТелефона,
				|	ФизическиеЛицаКонтактнаяИнформация.НомерТелефона КАК НомерТелефона1
				|ИЗ
				|	Справочник.Пользователи КАК Пользователи
				|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи.КонтактнаяИнформация КАК ПользователиКонтактнаяИнформация
				|		ПО (ПользователиКонтактнаяИнформация.Ссылка = Пользователи.Ссылка)
				|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация
				|		ПО Пользователи.Ссылка.ФизическоеЛицо = ФизическиеЛицаКонтактнаяИнформация.Ссылка
				|ГДЕ
				|	Пользователи.Ссылка = &Ссылка";
			
			Запрос.УстановитьПараметр("Ссылка", Ответственный);
			РезультатЗапроса = Запрос.Выполнить();
			Если РезультатЗапроса.Пустой() Тогда
				Возврат "На баланссе меньше 100 р.";
			КонецЕсли;
			Выборка = РезультатЗапроса.Выбрать();
		
			Пока Выборка.Следующий() Цикл
				Если ЗначениеЗаполнено(Выборка.НомерТелефона) Тогда
				    Номертелефона = Выборка.НомерТелефона;
				ИначеЕсли ЗначениеЗаполнено(Выборка.НомерТелефона1) Тогда
				    Номертелефона = Выборка.НомерТелефона1;
				Иначе
					Возврат "На баланссе меньше 100 р.";
				КонецЕсли;
				ТекстСообщения = "На баланссе меньше 100 р.";
			КонецЦикла;
		Иначе
			Возврат "На баланссе меньше 97 р.";
		КонецЕсли;
		
	КонецЕсли;
	
	ВремяЖизни = 6; // время жизни СМС в часах в течении этого времени будут производится попытки отправки СМС
	Результат = Прокси.SendMessage(Логин, Пароль, 0, ВремяЖизни, Сред(Номертелефона,2), ИмяОтправителяSMS, ТекстСообщения);
	
	Возврат Результат.Result;
	
КонецФункции

Для тестирования и отладки обработка имеет форму с кнопкой "Разослать СМС".

Обработка и расширение тестировались на платформе  8.3.16.1063, конфигурация Розница 2.3.3.12, режим совместимости с 8.3.12.

В архиве расширение и обработка.

Проверено на следующих конфигурациях и релизах:

  • Розница, редакция 2.3, релизы 2.3.12.34

Розница 2.3 - Скидка по промокоду с рассылкой трех СМС.

См. также

SMS рассылки Пользователь Платформа 1С v8.3 1С:Управление торговлей 10 Беларусь Россия Абонемент ($m)

Внешняя обработка, с открытым программным кодом, для создания автоматизации рассылок.

2 стартмани

29.11.2024    230    1    IvanovAV    0    

0

SMS рассылки Программист Пользователь Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Бесплатно (free)

Бесплатное расширение, предназначенное для отправки SMS-рассылок из 1С по событиям проведения платежных документов, по кнопке из "Заказа клиента", а так же рассылки сообщений о задолженности контактным лицам партнеров (контрагентов) с использованием сервиса рассылки смс - SMS.RU. Шаблоны сообщений хранятся в справочнике. Для работы необходимо подключение расширения с отключенным безопасным режимом.

03.09.2024    743    22    zhuravlev_as    0    

4

SMS рассылки Платформа 1С v8.3 1С:Розница 3.0 Россия Абонемент ($m)

Внешняя обработка на управляемых формах для отправки SMS-сообщений через сервис Bytehand

1 стартмани

26.08.2024    393    0    b2bro    0    

3

Мессенджеры и боты SMS рассылки Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Решение реализовано в виде расширения. Заменяет отправку смс на отправку в WhatsApp через Green-api. Отправка чека картинкой.

7800 руб.

15.05.2024    1771    3    10    

6

SMS рассылки Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Расширение для конфигураций 1С, позволяющее осуществлять подключение к сервису Bytehand и отправку СМС.

1 стартмани

27.09.2023    807    1    user1984097    0    

6

SMS рассылки Абонемент ($m)

Расширение предназначено для оправки СМС по списку телефонов. Является универсальным и подойдёт для любой конфигурации.

2 стартмани

14.09.2023    2010    4    Viki_push    3    

54

SMS рассылки Email рассылки Пользователь Платформа 1С v8.3 1С:Розница 2 Управленческий учет Абонемент ($m)

Расширение конфигурации Розница 2.3 для включения автоматического формирования документа "Информационная рассылка" (SMS, E-Mail) при начислении бонусов регламентным заданием по правилу расчета бонусных баллов.

1 стартмани

05.12.2022    2624    2    Saipl    0    

0

SMS рассылки Пользователь Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Управленческий учет Абонемент ($m)

Обработка формирует информационную рассылку клиентам (физическим лицам) на основании продаж по бонусам в течение дня.

2 стартмани

25.10.2022    2867    0    Andreyka2795    0    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dj_tol 104 04.08.20 09:33 Сейчас в теме
Интересная система. Однозначно +
2. KHoroshulinAV 171 19.04.23 13:47 Сейчас в теме
3. IVC_goal 227 20.04.23 14:43 Сейчас в теме
(2)Я умаю можно. На вход блока передается текст сообщения и массив номеров.

РезультатОтправки = ОтправкаSMS.ОтправитьSMS(МассивНомеров, ТекстСообщения, Неопределено, Объект.ОтправлятьВТранслите);

Собственно это функция отправки смс. Как она реализована в общем модуле расширения это ваше усмотрение
Оставьте свое сообщение