Подскажите как установить свою вкладку "по умолчанию" в панели действий.Изображение удалено.

Сейчас открывается на вкладке "Следующие шаги", а нужно вкладку отправки сообщения(portal-message-tab)

Нравится

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

Добрый день.

Просьба повторно отправить скриншот.

При открытии нового обращения панель действий выглядит так

Нужно сделать что бы было как у портальных, открыта вкладка "сообщения"

 

Добрый день

Игорь, страница портала имеет свой модуль ActionsDashboard - PortalCaseSectionActionsDashboard. В нем есть пример как инициализировать DefaultTab. 

Значит можете заместить CaseSectionActionsDashboard и сделать то, что вам нужно

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

Здравствуйте. Добавил Tost в систему как в дополнении https://marketplace.terrasoft.ru/app/toast-notifications-creatio, добавил в него элемент процесса что бы из бизнес процесса было удобно на фронт отправлять сообщения в Tost, работает отлично и красиво, спасибо ребятам за их реализацию, но проблема в том что работает только когда включен режим "Отладки" в системных настройках, кода он выключен выдает ошибку

Изображение удалено.

Нравится

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

Александр, по вашим словам понятно, что вы создали свои схемы на основе аналогичных из дополнения. На вашем месте я бы попробовал проверить работу самого дополнения при аналогичных условиях. Возможно у вас включен режим бандлирования или что-то прочее, что мешает данному коду работать не в режиме отладки. Если же дополнение работает, но ваша реализация нет, то тут стоит обратить внимание, на то, правильно ли она была переделана и вс1 ли соотвествует оригиналу.

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

Начал разбираться в стандартных чатах и возникли вопросы

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

2. Как я могу обработать сообщение и давать на них автоматические ответы7 

К примеру человек ввел /status ему выдается сообщение о статусе груза к примеру. Или он  ввел номер записи и ему выдало данные по ней из системы?

Нравится

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

Добрый день!



По п.1. В данный момент данный функционал отсутствует в продукте, есть пожелание на доработку.



По п.2, данный вопрос лежит в плоскости интеграций по API и настройки чат-ботов, к сожалению, не располагаю такой информацией.

Здравствуйте! Я пробовал делать отправку из задания-сценария. Перехатить сообщения пока не получилось, но если есть у кого-то есть пример, то буду признателен.

 

Пример кода на отправку, что бы сообщение отправилось, необходим чат с контактом, собственно переменная chatId:

using Terrasoft.Configuration.Omnichannel.Messaging
using System.Linq
using OmnichannelMessaging
using OmnichannelProviders.Domain.Entities
using MessageDirection = OmnichannelProviders.Domain.Entities.MessageDirection
 
//Сам код:
 
UserConnection userConnection = Get<UserConnection>("UserConnection");
Guid chatId = Get<Guid>("ChatId");
string textMessage = Get<string>("TextMessage");
 
DateTime foo = DateTime.Now;
long unixTime = ((DateTimeOffset)foo).ToUnixTimeSeconds();
 
var messageManager = new MessageManager(userConnection);
var messages = messageManager.GetMessagesByChatId(chatId);
var unifiedMessage = messages.FirstOrDefault();
 
if (unifiedMessage != null) {
	UnifiedMessage message = new UnifiedMessage {
		Recipient = unifiedMessage.MessageDirection == MessageDirection.Incoming ? unifiedMessage.Sender : unifiedMessage.Recipient,
		Sender = unifiedMessage.MessageDirection == MessageDirection.Incoming ?	unifiedMessage.Recipient : unifiedMessage.Sender,
		MessageDirection = MessageDirection.Outcoming,
		ChatId = chatId.ToString(),
		ChannelId = unifiedMessage.ChannelId,
		Source = unifiedMessage.Source,
		MessageType = OmnichannelProviders.Domain.Entities.MessageType.Text,
		Message = textMessage,
		Timestamp = unixTime
	};
    messageManager.Send(message);
}

 

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

Добрый вечер. Может кто-то стакивался или знает возможно ли реализовать веб-сервис (rest - сервис), который будет передавать файл Excel.

Реализация через стандартный интерфейс веб-сервисов Creatio

Нравится

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

Вопрос собственно в заголовке, есть примеры что дергать? 

Нравится

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

Добрый день, Андрей!

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

 

using Terrasoft.Configuration.ServiceSchema;
 
//...
 
try {
    // Создаем экземпляр ServiceSchemaClient
    var client = ClassFactory.Get<IServiceSchemaClient>();
    // Настраиваем параметры вызова
    var parameters = new Dictionary<string, object>() {
        {"id", 1}, {"name", userName}
    };
    // Получаем результат выполнения
    var serviceResponse = client.Execute(UserConnection, serviceName, methodName, parameters);
} catch (Exception e) {
    // Обрабатываем ошибки
}

Также вам может помочь обсуждение тут.

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

Есть раздел договоры, когда проваливаюсь в запись и нажимаю на контрагента, то система просто зависает и пишет Uncaught TypeError: Cannot read property 'entitySchemaName' of undefined , не совсем понимаю куда копать, при это когда захожу в контрагента из раздела контрагент этой ошибки нет

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

core-base.js:704 user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647

 file: https://support.ru/0/conf/content/SchemaBuilderV2.js?hash=fb899ee9f0b54…

 line: 543

 column: 57

 message: Uncaught TypeError: Cannot read property 'entitySchemaName' of undefined 

 stack: TypeError: Cannot read property 'entitySchemaName' of undefined

    at i. (https://support.ru/0/conf/content/SchemaBuilderV2.js?hash=fb899ee9f0b54…)

    at https://support.ru/core/c9cf54cfbeb445fbb561c4bf11e53272/combined/all-c…

    at Object.execCb (https://support.ru/core/057665f97324038f6c7c326b6734de6b/requirejs/requ…)

    at Module.check (https://support.ru/core/057665f97324038f6c7c326b6734de6b/requirejs/requ…)

    at Module.enable (https://support.ru/core/057665f97324038f6c7c326b6734de6b/requirejs/requ…)

    at Module.init (https://support.ru/core/057665f97324038f6c7c326b6734de6b/requirejs/requ…)

    at https://support.ru/core/057665f97324038f6c7c326b6734de6b/requirejs/requ…

Нравится

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

Добрый день!

 

Такая ошибка может быть по нескольким причинам.

 

1) Попробуйте выполнить следующее действия:

1. Открыть конфигурацию, найти последнюю измененную схему страницы и реестра Контрагента. Их названия будут соответствовать Страница - AccountPageV2, Раздел - AccountSectionV2.

2. Выполнилть пересохранение схемы раздела и старицы, ничего изменять не нужно, просто пересохранить модули.

3. Скомпилируйте приложение.

4. Очистите кэш браузера для пользователей у которых наблюдается ошибка и проверьте её воспроизведение еще раз.

 

2) Ошибка может возникать из-за неактуальной версии браузера.  Проблема в синтаксической ошибке в схемах, которую более новые версии игнорируют. Попробуйте обновить браузер до последней актуальной версии, и очистить кэш в браузере. 

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

Использую очень простой метод (см. ниже)  в контексте двух событий:

1) onEntityInitialized

2) при изменении поля Account на карточке.

В первом случае формируется запрос без использования фильтра по идентификатору контрагента, во втором с фильтром. В обоих случаях "var account = this.get("Account");" успешно вычисляется. Как добиться гарантированной фильтрации в обоих случаях?

 

         setIsAffiliated: function() {

                var account = this.get("Account");

                

                var esq = Ext.create("Terrasoft.EntitySchemaQuery", {

                    rootSchemaName: "Account"

                });

                //esq.rowCount = 1;

                esq.addColumn("IsAffiliatedLegalEntity");

                esq.filters.add("Account", esq.createColumnFilterWithParameter(

                    Terrasoft.ComparisonType.EQUAL,

                    "Id",

                    account.Id));

                esq.getEntityCollection(function(result) {

                    if (result.success) {

                        var first = result.collection.firstOrDefault();

                        if (!Ext.isEmpty(first)) {

                            var isAffil = first.get("IsAffiliatedLegalEntity");

                            this.set("IsAffiliatedLegalEntity", isAffil);

                        }

                    }

                }, this);

            }

Нравится

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

                var accVal = account.value;

                var accId = account.Id;

Нашел причину. Она в том, что возвращаются разные объекты в двух случаях, но в обоих идентификатор контрагента доступен так "account.value;"

Добрый день, Сергей!

Следует посмотреть какое значение возвращает строка  

var account = this.get("Account"); 

Если оно одно и тоже, то довольно странно, что в одном случае фильтр не используется.

                var accVal = account.value;

                var accId = account.Id;

Нашел причину. Она в том, что возвращаются разные объекты в двух случаях, но в обоих идентификатор контрагента доступен так "account.value;"

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

Проблема в работе утилиты CLIO, но удаться собрать в один пакет несколько, хотя данная функция завялена на странице проекта:

 

Compress more than one packages to a single .gz file if the command runs from a directory that contains the package.

clio generate-pkg-zip <PACKAGE_NAME_1>,<PACKAGE_NAME_2>,<PACKAGE_NAME_3>

Нравится

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

Александр Тыра, здравствуйте.

Можете уточнить где именно была заявлена данная функциональность?

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

https://github.com/Advance-Technologies-Foundation

Sorotiuk Anna,

 Вот тут в wiki

https://github.com/Advance-Technologies-Foundation/clio/wiki/generate-p… в самом низу " Compress more than one packages to a single .gz file if the command runs from a directory that contains the package. "

Александр Тыра,

Спасибо за уточнение.

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

https://github.com/Advance-Technologies-Foundation/clio/issues/190

Могу только предложить ожидать ответа там.

Sorotiuk Anna,

Это я и написал)

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

Коллеги, здравствуйте!

Беру [#Системная переменная.Текущее значение времени#] и мне из нее необходимо:

  • вычитать день и месяц из текущей даты;
  • сравнить день и месяц текущей даты с другими значениями дня и месяца;
  • написать сравнение в Формулу условного потока.

Фактический пример: сегодня 19.07.2021.

19.07 < 15. 11 и 19.07 > 01.01, поэтому идем по условному потоку 1, иначе по условному потоку 2.



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

Нравится

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

Коллеги, решили вопрос такой формулой.

В каждый условный поток поставили формулу в зависимости от требуемого периода.

Например, в одном потоке такая формула для промежутка времени 01.01 - 31.08:

([#Системная переменная.Текущее значение даты#].Day >= 1 && [#Системная переменная.Текущее значение даты#].Month == 1) || ([#Системная переменная.Текущее значение даты#].Month == 2) || ([#Системная переменная.Текущее значение даты#].Month == 3) || ([#Системная переменная.Текущее значение даты#].Month == 4) || ([#Системная переменная.Текущее значение даты#].Month == 5) ||  ([#Системная переменная.Текущее значение даты#].Month == 6) ||  ([#Системная переменная.Текущее значение даты#].Month == 7) || ([#Системная переменная.Текущее значение даты#].Month == 8)



в другом потоке такая формула для промежутка времени16.11 - 31.12:

([#Системная переменная.Текущее значение даты#].Day >= 16 && [#Системная переменная.Текущее значение даты#].Month == 11 ) || ([#Системная переменная.Текущее значение даты#].Month == 12 )

Правильно ли я понял, вы хотите, чтоб ваш поток срабатывал ежегодно в определённый период дат (с 01.01 по 15.11)? Поэтому вы хотите отделить год от даты?

Николай Ходаковский,

да, верно

Александра Дубс, добрый день!

Отделить год, к сожалению, не получится. Но возможно, указанная ниже реализация покроет Ваш кейс:

В параметр процесса записываем текущую дату по формуле:

new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day)

Во второй параметр записываем дату сравнения с текущим годом:

new DateTime(DateTime.Now.Year, [#Дата сравнения 1#].Month,[#Дата сравнения 1#].Day)

Созданные параметры можно сравнивать в формуле или условном потоке в виде:

[#Текущая дата#] < [#Дата сравнения#]

Коллеги, решили вопрос такой формулой.

В каждый условный поток поставили формулу в зависимости от требуемого периода.

Например, в одном потоке такая формула для промежутка времени 01.01 - 31.08:

([#Системная переменная.Текущее значение даты#].Day >= 1 && [#Системная переменная.Текущее значение даты#].Month == 1) || ([#Системная переменная.Текущее значение даты#].Month == 2) || ([#Системная переменная.Текущее значение даты#].Month == 3) || ([#Системная переменная.Текущее значение даты#].Month == 4) || ([#Системная переменная.Текущее значение даты#].Month == 5) ||  ([#Системная переменная.Текущее значение даты#].Month == 6) ||  ([#Системная переменная.Текущее значение даты#].Month == 7) || ([#Системная переменная.Текущее значение даты#].Month == 8)



в другом потоке такая формула для промежутка времени16.11 - 31.12:

([#Системная переменная.Текущее значение даты#].Day >= 16 && [#Системная переменная.Текущее значение даты#].Month == 11 ) || ([#Системная переменная.Текущее значение даты#].Month == 12 )

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

Изображение удалено.

Может кто знает как можно скрыть в ActionsDashboard в активностях кнопку выполнения. В коде вижу что в базовом классе данная кнопка просто уcтановленyа в true

Изображение удалено.

 

Как изменить для определенного вида активности этот атрибут в false?

Нравится

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

После загрузки всех элементов страницы, либо в любой другой момент:

this.set("ExecuteButtonVisible"false);

 

Добрый день.

Для скрытия этой кнопки правильнее всего будет переопределить метод, который устанавливает значение ExecuteButtonVisible в true.



Создайте модуль UsrBaseDashboardItemViewModel и переопределите метод initExecuteButtonVisibility:

 

define("UsrBaseDashboardItemViewModel", ["BaseDashboardItemViewModel"],
	function(resources, MaskHelper) {
		Ext.define("Terrasoft.configuration.UsrBaseDashboardItemViewModel", {
			override: "Terrasoft.configuration.BaseDashboardItemViewModel",
			initExecuteButtonVisibility: function() {
				this.set("ExecuteButtonVisible", false);
			}
		});
	});



После этого добавьте этот модуль в BootstrapModulesV2, заместив его:



 

 define("BootstrapModulesV2", ["UsrBaseDashboardItemViewModel"], function() {
    return {};
});





Пример и инструкцию можно найти по ссылке.

Тимофей Ромах,

 

на странице где грид, или активности?

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