ChatGPT 1С. Практическая разработка ИИ менеджеров, ассистентов
КУРС ИИ + 1С

Курс по разработке ИИ проектов в связке с 1С на реальных проектах.

  1. Изучение с самого нуля
  2. Использование современных фреймворков
  3. Локальные модели
  4. Все исходники прилагаются
  5. Оплата в рассрочку на 12 месяцев

Всем привет! В данном уроке я буду интегрировать 1С мобильный клиент с Управлением торговлей 11.4 и использую возможности отправки push уведомлений. Push уведомления я буду отправлять через сервис GCM, а получать данные для работы с сервисом, через ДоставляемыеУведомления. Подписывайтесь на канал, ставьте лайк, подписывайтесь в telegram. Всем удачи и приятного просмотра.

 

Регистрация аккаунта разработчика Android

1С МОБИЛЬНЫЙ КЛИЕНТ код модулей используемый в видео

PushКлиент

Процедура ПодключитьОбработчикУведомленийИзОбщегоМодуля() Экспорт
	#Если МобильныйКлиент Тогда
		ОписаниеОповещения = Новый ОписаниеОповещения("ОбрабочикPush", PushКлиент);
		ДоставляемыеУведомления.ПодключитьОбработчикУведомлений(ОписаниеОповещения);
	#КонецЕсли 
КонецПроцедуры

 

Процедура ОбрабочикPush(Уведомление, Локальное, Показано, ДопПараметр) Экспорт
	ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Уведомление.Текст);
	ПерейтиПоНавигационнойСсылке(Уведомление.Данные);
КонецПроцедуры

 

Процедура ОбновитьИдентификаторПодписчика() Экспорт
	#Если МобильныйКлиент Тогда
	Идентификатор = ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений("100148411085");
	PushВызовСервера.ОбновитьИдентификаторПодписчика(Идентификатор);
	#КонецЕсли 
КонецПроцедуры

PushВызовСервера

Процедура ОбновитьИдентификаторПодписчика(Идентификатор) Экспорт
      РегистрыСведений.ПолучателиУведомлений.ДобавитьИдентификатор(Пользователи.ТекущийПользователь(), Идентификатор); 
КонецПроцедуры

 

PushСервер

Процедура ОтправитьУведомление_Android(ТекстСообщения, Данные, ИдентификаторПолучателя) Экспорт
	
	Попытка
		Если ТекстСообщения = "" ИЛИ Данные = "" Тогда
			Возврат;
		КонецЕсли; 	
		
		СоединениеHTTP = Новый HTTPСоединение("android.googleapis.com",443,,,,, Новый ЗащищенноеСоединениеOpenSSL(,));
		
		СтруктураЗапроса = Новый Соответствие;
		СтруктураЗапроса.Вставить("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
		СтруктураЗапроса.Вставить("Authorization", "key=AIzaSyAykvnMcmrMR8oNRtq_soSWYtzS6ce_jSk");
		ЗапросHTTP = Новый HTTPЗапрос("gcm/send", СтруктураЗапроса);
		Тело = "registration_id=" + ИдентификаторПолучателя.ИдентификаторУстройства + 
		"&data.data=" + КодироватьСтроку(Данные, СпособКодированияСтроки.URLВКодировкеURL) + 
		"&data.text=" + КодироватьСтроку(ТекстСообщения, СпособКодированияСтроки.URLВКодировкеURL) + 
		"&data.base=" + ИдентификаторПолучателя.ИдентификаторИнформационнойБазы +
		"&data.sound=" + "default" +
		"&delay_while_idle=" + "true";
		
		ЗапросHTTP.УстановитьТелоИзСтроки(Тело,"UTF-8");
		Ответ = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
		
		Если НЕ Ответ.КодСостояния = 200 Тогда
			ЗаписьЖурналаРегистрации("PUSH",,,, "Ошибка отправки PUSH КодСостояния: " + Ответ.КодСостояния + Символы.ПС + Ответ.ПолучитьТелоКакСтроку());
		КонецЕсли; 
	Исключение
	    ЗаписьЖурналаРегистрации("PUSH",,,,ОписаниеОшибки());
	КонецПопытки;
	
КонецПроцедуры

Регистр сведений для хранения идентификаторов подписчика

Модуль менеджера регистра сведений

 

Процедура ДобавитьИдентификатор(Пользователь, Идентификатор) Экспорт
	
	МенеджерЗаписи = РегистрыСведений.ПолучателиУведомлений.СоздатьМенеджерЗаписи();
	МенеджерЗаписи.Получатель = Пользователь;
	МенеджерЗаписи.ИдентификаторПодписчика = Сериализовать(Идентификатор);
	МенеджерЗаписи.Записать();
	
КонецПроцедуры
 
Функция ПолучитьИдентификатор(Пользователь) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ПолучателиУведомлений.ИдентификаторПодписчика КАК ИдентификаторПодписчика
	|ИЗ
	|	РегистрСведений.ПолучателиУведомлений КАК ПолучателиУведомлений
	|ГДЕ
	|	ПолучателиУведомлений.Получатель = &Получатель";
	Запрос.УстановитьПараметр("Получатель", Пользователь);
	РезультатЗапроса = Запрос.Выполнить();
	
	Если РезультатЗапроса.Пустой() Тогда
		Возврат Неопределено;
	КонецЕсли;  
	
	Выборка = РезультатЗапроса.Выбрать();
	Выборка.Следующий();
	Возврат Десериализовать(Выборка.ИдентификаторПодписчика);
КонецФункции
Функция Сериализовать(ОбъектСериализации) Экспорт
	ДеревоВОбъектеXDTO = СериализаторXDTO.ЗаписатьXDTO(ОбъектСериализации);
	МойXML = Новый ЗаписьXML;
	МойXML.УстановитьСтроку();
	ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь); 
	ФабрикаXDTO.ЗаписатьXML(МойXML, ДеревоВОбъектеXDTO);
	Возврат МойXML.Закрыть();
КонецФункции
Функция Десериализовать(XMLСтруктураСериализованногоОбъекта) Экспорт
	ЧтениеXMLДанных = Новый ЧтениеXML;
	ЧтениеXMLДанных.УстановитьСтроку(XMLСтруктураСериализованногоОбъекта);
	ТЗ = СериализаторXDTO.ПрочитатьXML(ЧтениеXMLДанных);
	ЧтениеXMLДанных.Закрыть();  
	Возврат ТЗ;
КонецФункции

Посмотрите подробное видео:

Push 1с. Разработка приема push сообщений в мобильной 1С