Есть необходимость отправлять динамические структуры как в js, к примеру через тип JObject, но получаем 500 когда пробуем в веб-сервисе вернуть данный тип.



Как сделать что-то типо такого: 

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers().AddNewtonsoftJson(x => x.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
}

 

.net core

Нравится

2 комментария

Стас, добрый день!

Для сериализации/десериализации вы можете в сервисе использовать либу Newtonsoft.

Для этого сперва нужно добавить следующие using:

using Newtonsoft.Json;

using Newtonsoft.Json.Linq;

После чего в методе сервиса вызвать:

var content = JsonConvert.SerializeObject(objectToSerialize);

Хочется что бы это был стандартный сериализатор, а не возвращать строку которая ещё раз будет сериализирована стандартным .net  сериализатором. 

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

Коллеги, приветствую.



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

 

2 часа (120 минут) буду зашивать в системную настройку (чтобы можно было варьировать админу)

 

Хочу реализовать с помощью БП по таймеру, который раз в час будет отбирать обращения по определенным критериям. 

далее, из записи вычитаю поле "время разрешения" (тип поля - дата/время) и тут главная загвозка.... как мне высчитать, что обращение должно разрешиться через 2 часа (120 минут)?

 

если должно решиться больше 2 часов - пропустить запись

если меньше, то по идее, должно было уже отправиться уведомление.

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



из идей:

  1. пробовать преобразовать поле с помощью формул .TotalHours/.TotalMinutes в часы/минуты и сравнивать..
  2. попробовать с помощью формул .AddMinutes(), .AddHours() добавить настройке "текущее время и дата" значение системной настройки и сравнить...

в общем, буду рада советом, а сама пошла пока пробовать :) 

Нравится

3 комментария
Лучший ответ

Aleksei Efimenko, 

я прибегла к другому решению:

  • сделала системную настройку, которая хранит значение за сколько нужно уведомление (в минутах)
  • сделала 2 параметра: 

Параметр 1: [#Системная переменная.Текущее значение времени#]. AddMinutes([число из системной настройки])

Параметр 2: параметр 1. AddMinutes(59) - чтобы получился час

 

  • и развела условными потоками:

1. если время разрешение больше моих параметров или меньше - проскакиваю

2. если время разрешение попадает в промежуток параметров - высылаю уведомление

Создаю новое поле - Reminding time. И его сравниваю.

 

Ещё процессы, которые его заполняют. И поле с временем, когда уведомление было отправлено. Это позволит избежать ситуации, когда таймер не сработает, например. Надо всего лишь выбирать те, у которых время уведомления прошло, но уведомление не было отправлено

Александра Дубс, подскажите, решило ли вашу задачу предоставленное решение от Владимира?

Aleksei Efimenko, 

я прибегла к другому решению:

  • сделала системную настройку, которая хранит значение за сколько нужно уведомление (в минутах)
  • сделала 2 параметра: 

Параметр 1: [#Системная переменная.Текущее значение времени#]. AddMinutes([число из системной настройки])

Параметр 2: параметр 1. AddMinutes(59) - чтобы получился час

 

  • и развела условными потоками:

1. если время разрешение больше моих параметров или меньше - проскакиваю

2. если время разрешение попадает в промежуток параметров - высылаю уведомление

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

Представляем новое дополнение для Creatio – Viber for Creatio Service. Дополнение позволит вашим клиентам оставлять запросы на портале Creatio не используя Creatio. Создавать новые обращения, контролировать существующие и общаться с поддержкой прямо из Viber! С помощью уведомлений в телефоне клиенты смогут быстро реагировать, отвечать и дополнять обращения. Удобная синхронизация позволит просматривать обращения с любого поддерживающего Viber устройства Детальная информация на станице продукта Viber for Creatio Service.

Доступен тестовый 14-дневный период!

Переходите по ссылке в маркетплейс Creatio, тестируйте и наслаждайтесь удобным сервисом для Creatio!

Нравится

Поделиться

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

Добрый день, у нас есть настроенный exchange listener. Если попробовать отправить письмо по желтому значку почты из обращения(в рабочем месте Сервис), то письмо отправляется. Так же у нас есть собственное рабочее место и Наряды, схожие по функционалу с обращениями. Вот из нарядов письмо не уходит, хотя штатный функционал, подскажите в какую сторону копать? В документации не смог найти ничего чтобы помогло.

Нравится

1 комментарий

Добрый день.

Вам нужно проанализировать логи микросервиса Exchange Listener и самого приложения.

В логах будет зафиксирована ошибка, которая может описать проблему отправки писем.

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

Вызвал сервис методом callService, но не понимаю, как получить данные из своего сервиса. В методе сервиса возвращается аргумент типа String. Хотел бы его на клиентском коде как-то вывести.

runService: function () {
				ServiceHelper.callService({
					serviceName: "CustomService",
					methodName: "ReturnCurrentUser",
					callback: function() {
                        Terrasoft.utils.showMessage({
                            caption: "Сервис запустил ",
                            buttons: [Terrasoft.MessageBoxButtons.OK.returnCode],
                            defaultButton: 0,
                            scope: this
                        });
					},
					scope: this
				}, this);
			},

 

Нравится

1 комментарий
Лучший ответ

в аргументе метода

callService передайте параметр callback: function(response) {
var answer = response.ReturnCurrentUserResult;
ваш обработчик ответа
}
И scope: this 

В самом callService this не нужен

 

в аргументе метода

callService передайте параметр callback: function(response) {
var answer = response.ReturnCurrentUserResult;
ваш обработчик ответа
}
И scope: this 

В самом callService this не нужен

 

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

Всем добрый день. Версия 7.12.

Есть стандартная функциональность комментирования - Лента https://academy.terrasoft.ru/documents/customer-center/7-14/predstavlenie-lenta

Возможно ли запретить комментарии к отдельным записям раздела? В каналах, насколько я знаю, это регулируется правами на изменение канала, а где это можно задать для комментариев к разделу? Интересует именно возможность ограничить комментирование в конкретной записи раздела.

Как альтернативный вариант - можно ли закрыть возможность комментирования отдельных записей не для конкретных пользователей, а вообще для всех, не закрывая при этом комментарии в соседних записях раздела.

Нравится

1 комментарий

Логика детали ленты сделана в схеме SocialFeed, там при нажатии кнопки «Опубликовать» или Enter на клавиатуре вызывается функция onPostPublishClick.

Как вариант, добавить в интересующий раздел новое логическое поле (не забыв запретить его менять тем, кому не надо) и в доработанной onPostPublishClick проверять это значение у текущей записи раздела, если такое поле в разделе есть. Или сделать проверку в вызываемой при обновлении детали функции initModuleViewModel, а также функции onRender, чтобы при запрете отключить возможность отправки вообще.

Или вообще не лезть в логику детали и просто её не инициализировать, переопределив updateDetails в BaseSectionPage для страницы нужного раздела, чтобы при нужном условии исключить инициализацию детали ленты и другие связанные с ней события.

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

Добрый день ! Тестирую метод создания пользователей через DataService.

Предварительно авторизуюсь через POST http://localhost/ServiceModel/AuthService.svc/Login от имени supervisor. В BPM supervisor имеет орг.роль System administrators, с разрешением управления справочником пользователей. После авторизации добавляю header BPMCSRF в заголовок запроса POST http://localhost/0/DataService/json/reply/InsertQuery.

Получаю ответ 500 SecurityException

"responseStatus": {

    "ErrorCode": "SecurityException",

    "Message": "Текущий пользователь не имеет прав на объект \"SysAdminUnit\"",

    "Errors": []

  }

Просьба прокомментировать, каких прав пользователю supervisor не хватает для создания пользователя в SysAdminUnit, возможно надо использовать другой способ

Текст запроса создания пользователей и ответ приложены

 

 

Нравится

3 комментария

См. причину тут.

Зверев Александр,

Есть ли рабочее решение для программного создания пользователей через DataService или другой интерфейс ?

Страница UserPageV2 работает через методы AdministrationService, такие как метод UpdateOrCreateUser.

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

Есть БП с автогенерируемой страницей, с полем типа справочник. Необходимо это поле сделать обязательным, при определенном условии. Как это сделать именно в автогенерируемой странице?

В академии попытался найти что-то похожее, но про автогенерируемую страницу ничего не нашел. Помогите пожалуйста.

Нравится

1 комментарий
Лучший ответ

На сколько я помню - никак. Используйте преднастроенную страницу.

На сколько я помню - никак. Используйте преднастроенную страницу.

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

Всем добрый день. Версия 7.15.

Существует инструкция: https://academy.terrasoft.ru/documents/administration/7-15/individualnye-nastroyki-uchetnoy-zapisi-pochty?document=administration#CSH_6 по добавлению подписи в письма.

Можно ли настроить, чтобы подпись добавлялась только в письма, отправленные на определённые домены?

Нравится

1 комментарий

Можно воспользоваться функциональностью мультиязычных шаблонов: выставлять контактам из разных доменов разный язык и в зависимости от этого выводить разные шаблоны, с подписью или без.

scr_chapter_content_designer_create_template_multilanguage.gif

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

Добрый день!

Версия продукта: 7.14.1.935

Bpm Online Service

Если на странице есть 2 поля типа справочник, которые опираются на разные объекты, то можно ли для них настроить фильтрацию друг от друга только на уровне js (например, за счет использования filtration)?

Или требуется пересаживать их на новый объект, который содержит в себе значения обоих полей (скажем, join этих объектов + объекта, который содержит в себе описание связей)?

Нравится

5 комментариев
Лучший ответ

Александр Кулиш,

Мне ранее помогали коллеги из Сообщества Террасофт c фильтрацией по группе ответственных и Сервису. Возможно что-то пригодится Вам для реализации Вашей задачи. Посмотрите следующий пост:

https://community.terrasoft.ru/questions/kak-nastroit-filtr-po-servisu-i-gruppe-otvetstvennyh

Добрый день!

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

Например, это может быть, как Вы указали, таблица развязки или же просто в одном из справочников должно быть поле-связка с другим (часто это встречается в примерах, когда у Вас есть тип и подтип, который зависит от типа).

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

Алла Савельева,

Добрый день!

Извините за задержку с ответом. Ожидал оповещения на почту в случае комментариев, но видимо они уже не ходят.

На карточке обращения есть поля:

1) группа исполнителя

2) исполнитель

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

Григорий Чех,

 

Добрый день!

Да, смотрел подобные ссылки. Если не ошибаюсь, они относятся к простым примерам, когда есть одна форма, на которой присутствуют поля и которое выводим, и по которому фильтруем. В моем случае несколько сложнее потребуется реализация.

Александр Кулиш,

Мне ранее помогали коллеги из Сообщества Террасофт c фильтрацией по группе ответственных и Сервису. Возможно что-то пригодится Вам для реализации Вашей задачи. Посмотрите следующий пост:

https://community.terrasoft.ru/questions/kak-nastroit-filtr-po-servisu-i-gruppe-otvetstvennyh

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