Вопрос

Как создать уведомление в коде C#

Как создать уведомление в коде C#?

Нравится

9 комментариев

1) Если это активность, то:

var Activity = UserConnection.EntitySchemaManager.GetInstanceByName("Activity");
var EntityActivity = Activity.CreateEntity(UserConnection);
EntityActivity.SetDefColumnValues();
EntityActivity.SetColumnValue("OwnerId", contactID);
EntityActivity.SetColumnValue("Title", "Активность с уведомлением");
EntityActivity.SetColumnValue("RemindToOwner", true);
EntityActivity.SetColumnValue("RemindToOwnerDate", DateTime.UtcNow);
EntityActivity.Save(false);

2) Если другой объект системы, для которого есть  NotificationProvider, то можно сделать аналогичный инсерт в таблицу reminding. Наполнение как из скриншота (скрин из бп, переделывать под createEntity немного лень). Единственное что в поле "Объект" надо вставить ID нужного объекта из вью, в "Уник. индетификатор заголовка" - id конкретной страницы

3)  Если другой объект системы, у которого нет NotificationProvider, то обходной вариант - в активность прикреплять ссылку на ваш объект, уведомление прикреплять к активности. Или лепить собственный NotificationProvider, где-то тут на форуме уже обсуждалась данная тема.

И комментируя ваш батхёрт в соседней теме. "смотрите примеры в конфигурации" - это , пожалуй, девиз террасофта. так было полтора года назад, так осталось и сейчас. никто на форуме (за исключением 5-6 отдельных товарищей) не выкладывает отдельных решений кодом для вопрошающих.

Варфоломеев Данила,

спасибо за инф. у меня свой раздел. провайдера не было. провайдера нового написал. занес запись о нем в таблицу NotificationProvider. Создаю из кода уведомление, не вижу его нигде. Подскажете что еще нужно? может настройка какая-нибудь или еще какое-то сообщение нужно послать?

 

Данько Дмитрий Леонидович пишет:

Подскажете что еще нужно?

Насколько я помню надо проверить наличие записи в Reminding (isread должно быть false), проверить, чтобы был зарегистрирован провайдер для раздела в NotificationProvider, проверить ошибки в консоли (отрабатывает ли C# код провайдера) и самое главное надо для коммуникационной панели сделать описание айтема уведомления (верный способ, что всё работает, но нет описания для уведомления — в коммуник. панели "пустое" место, нет картинки, что нет напоминаний, как на скрине)

Варфоломеев Данила,

1) в таблицу NotificationProvider добавил 1 строку - описание провайдера ClassName = 'xxxxxxxxxx' (полное название моей схемы), Type=1 (Notification)

2) в таблицу Reminder добавил уже несколько строк - все заполнены. они как бы и должны появляться в уведомлениях. но не появляются.

В коде стоит обработка исключений они не появляются, записи успешно уходят в SQL.

3) у меня выглядит так как вы выложили на фото. пусто. что означает сделать описание итема для комуник панели? подскажите пож.

Варфоломеев Данила,

слушайте, у меян работают уведомления, вы помогли. но они работают только вод супервизором. А под моим аккаунтом, который я себе создал не работают, нужно что-то настраивать. подскажете что? под моим локальным аккаунтом вообще нигде ни одно уведомление не отображается, но код срабатывает я проверил

отбой. я кажется разобрался. я в коде инициализирую получателя - в коде C# это всегда супервизор. надо как-то по другому пользователя указывать, другой контакт. 

Данько Дмитрий Леонидович пишет:

что означает сделать описание итема для комуник панели? подскажите пож.

 Надеюсь вы разобрались, но на всякий случай отпишусь.

Загляните в ReminderNotificationsSchema (в схеме из пакета nui - свалка, можете глянуть в пакете Invoice). По сути там в diff описывается как отрисовывается единичное уведомление для конкретного объекта.

Добрый день,

можно ли поподробнее про пункт "создать описание айтема уведомлений"? Что это и , где хранится? Цель создать визу для кастомного объекта через свой кастомный Approval процесс. Notification provider описан и зарегистрирован, никаких ошибок он уже больше не кидает, в конечном результате имею именно пустое, без картинки пространство в коммуникационной панели.

Видимо, речь о пункте 3 в инструкции:

3. Заместить схему вкладки напоминаний ReminderNotificationsSchema

1. Чтобы отображались напоминания по требуемому объекту, создайте в пользовательском пакете замещающую схему ReminderNotificationsSchema и добавьте в нее необходимую программную логику.

...

Показать все комментарии