Синтаксис и применение ДоставляемоеУведомление.По умолчанию в платформе 1С:Предприятие. Описание и примеры кода.
Синтаксис
Новый ДоставляемоеУведомлениеПолное описание, параметры и ограничения
ДоставляемоеУведомление.По умолчанию
ДоставляемоеУведомление (DeliverableNotification)
По умолчанию
Синтаксис:
Новый ДоставляемоеУведомление
Методическая информация
Практические примеры
Отправить одно тестовое push-уведомление и разобрать проблемы
Получатель получается на мобильном клиенте; серверный менеджер возвращает отдельный массив проблем отправки.
Где и как запускать
Мобильный клиент получает подписчика; обычный сервер 1С отправляет push.
Подготовка
Вставьте блок в модуль собственной управляемой формы. Из клиентского обработчика кнопки вызовите первую процедуру без параметров. Если указано иное место вставки, используйте его. Экспортные обработчики оповещения вызывает платформа, не вызывайте их вручную.
Нужны собственное учебное мобильное приложение, разрешение на уведомления и настроенный сервис доставки. Используйте только собственный тестовый подписчик и учетные данные соответствующего приложения; отправка требует сети.
Нужен мобильный клиент, подключенный к обычному серверу 1С. На сервере подготовьте файл с собственным действующим маркером сервиса; путь замените. Только локальный учебный просмотр: описание ошибок может содержать служебные сведения.
&НаКлиенте
Процедура ЗапроситьПробноеУведомление()
Подписчик = ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений();
ОтправитьПробноеНаСервере(Подписчик);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОтправитьПробноеНаСервере(Подписчик)
Чтение = Новый ЧтениеТекста("C:\1c-demo\push-access-token.txt");
Маркер = Чтение.Прочитать();
Чтение.Закрыть();
Уведомление = Новый ДоставляемоеУведомление;
Уведомление.Текст = "Учебное уведомление";
Уведомление.Получатели.Добавить(Подписчик);
Исключенные = Новый Массив;
Проблемы = Новый Массив;
Отправитель = ОтправкаДоставляемыхУведомлений;
Отправитель.Отправить(Уведомление, Маркер, Исключенные, Ложь, Проблемы);
Для Каждого Проблема Из Проблемы Цикл
Сообщить("Тип проблемы: " + Строка(Проблема.ТипОшибки));
Сообщить(Проблема.Описание);
Сообщить("Получателей с проблемой: " + Строка(Проблема.Получатели.Количество()));
Сообщить("Уведомление: " + Проблема.Уведомление.Текст);
КонецЦикла;
Сообщить("Проблем отправки: " + Строка(Проблемы.Количество()));
КонецПроцедурыРазбор по шагам
Получите свой идентификатор подписчика на клиенте.
Отправьте ему одно уведомление серверным менеджером.
Переберите настоящие проблемы и прочитайте четыре свойства.
Как проверить результат
Адресат берется из объекта подписчика, не из вымышленного device ID.
Пустой массив проблем не объявляется доказательством показа уведомления пользователю.
Ожидаемый результат
Отправлен запрос доставки и показаны полученные проблемы, если они возникли.
На что обратить внимание
Это будущий сетевой вызов. Не выводите маркер; не публикуйте протокол ошибок. При исключении результат отправки может быть неизвестен: не повторяйте автоматически.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Поместить собственные данные заказа в JSON и прочитать их обратно
Свойство Данные можно использовать для короткого структурированного сообщения. JSON читается как данные, не исполняется как код.
Где и как запускать
Полный серверный модуль своей конфигурации. Только собственный объект уведомления, без подписчиков и отправки.
Подготовка
Создайте в отдельной конфигурации УчебнаяКонфигурацияСинтаксиса серверный общий модуль УчебныеУведомления с флагом Сервер, вставьте полный модуль выбранного урока и вызовите ВыполнитьПример из собственной серверной команды.
Это подготовка объектов уведомления в памяти, не отправка push и не установка локального уведомления. Мобильное устройство, токены, разрешения и регистрация подписчика не требуются этому опыту.
Используется только новая собственная Книга и вымышленные данные заказа. Получатели остаются пустыми: код не читает идентификаторы настоящих подписчиков и не добавляет фиктивный токен.
Не добавляйте к этим примерам методы отправки или планирования: для них нужен отдельный контракт устройств, разрешений и собственных подписчиков.
Дата появления локального уведомления задаётся в UTC, не местным временем Москвы. ТекущаяУниверсальнаяДата вызывается на сервере, потому что функция недоступна в тонком клиенте.
Уроки сверены с установленной справкой 8.5.1.1343. Фактическое появление, звук, наклейка и доставка на устройстве не проверялись исполнением BSL.
Процедура ВыполнитьПример() Экспорт
Уведомление = Новый ДоставляемоеУведомление;
Уведомление.Заголовок = "Учебный заказ Книга";
Уведомление.Текст = "Книга: 3 шт. по 250, итого 750. Это собственный черновик.";
Уведомление.Наклейка = 1;
ИсходныеДанные = Новый Структура("kind,sku,quantity", "lesson-order", "BOOK-OWN", 3);
Запись = Новый ЗаписьJSON;
Попытка
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, ИсходныеДанные);
Уведомление.Данные = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение = Новый ЧтениеJSON;
Попытка
Чтение.УстановитьСтроку(Уведомление.Данные);
ПрочитанныеДанные = ПрочитатьJSON(Чтение);
Чтение.Закрыть();
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Если ТипЗнч(ПрочитанныеДанные) <> Тип("Структура") Тогда
ВызватьИсключение "Свой JSON должен содержать объект";
КонецЕсли;
Сообщить(ПрочитанныеДанные.kind = "lesson-order");
Сообщить(ПрочитанныеДанные.sku = "BOOK-OWN");
Сообщить(ПрочитанныеДанные.quantity = 3);
Сообщить(ТипЗнч(ПрочитанныеДанные.quantity) = Тип("Число"));
Сообщить(Уведомление.Получатели.Количество() = 0);
КонецПроцедурыРазбор по шагам
Создать собственную структуру из трёх известных полей без ссылок на базу и без личных данных.
Записать JSON штатным сериализатором и сохранить строку, возвращённую Закрыть, в Данные уведомления.
Открыть ЧтениеJSON на своей же строке; закрывать reader и writer и при успехе, и при ошибке.
Проверить тип результата и три известные поля, отдельно проверить числовой тип quantity.
Не выполнять значение kind как команду. Не читать внешние JSON-пакеты этим коротким опытом без отдельной проверки схемы.
Как проверить результат
Пять сообщений Истина; количество осталось числом 3, а не строкой "3".
Пустые получатели и отсутствие вызова отправки сохранены.
Ожидаемый результат
Полный реальный пример сериализации и обратного чтения собственной короткой полезной нагрузки.
На что обратить внимание
ПрочитатьJSON не является проверкой разрешённых бизнес-команд или прав пользователя.
Для внешних уведомлений проверяйте типы, обязательные поля, размер, допустимые значения и собственный контекст, прежде чем выполнять бизнес-действие.
Нельзя передавать Данные в Выполнить или Вычислить.
JSON не скрывает чувствительную информацию.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.