Добрый день.

Есть вопрос по органичению количества записей в таблице SysSSPEntitySchemaAccessList, при превышении которого закрывается доступ к сайту для портальных пользователей. У нас сейчас, судя по значениям в колонках SSPSchemaCount, SSPAdministratedSchemaCount таблицы SysLic, данное ограничение = 400 записей. Как можно увеличить данное значение?

Нравится

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

Дмитрий, здравствуйте.



Данное ограничение обусловлено механизмом лицензирования портала, информация есть на Академии.



Количество разрешенных объектов, можно проверить SQL-запросом:

select Operations from SysLicPackage (nolock) where name = 'тут название портальной лицензии'.

В полученном результате найдите свойство SSPAllowedEntitySchemaCount :тут число.

Чтобы посмотреть, сколько объектов Вы уже вывели, выполните запрос: select Count(*) from SysSSPEntitySchemaAccessList (nolock) where IsPreset = 0

Дмитрий, здравствуйте.



Данное ограничение обусловлено механизмом лицензирования портала, информация есть на Академии.



Количество разрешенных объектов, можно проверить SQL-запросом:

select Operations from SysLicPackage (nolock) where name = 'тут название портальной лицензии'.

В полученном результате найдите свойство SSPAllowedEntitySchemaCount :тут число.

Чтобы посмотреть, сколько объектов Вы уже вывели, выполните запрос: select Count(*) from SysSSPEntitySchemaAccessList (nolock) where IsPreset = 0

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

Добрый день.

Нужна подсказка по использованию функции Charindex в SQL запросах.

 

Используется класс Select для формирования SQL запроса к БД, т.к. подключение некоторых фильтров выполняется при определённый условиях.

К основной таблице идет подключение дополнительной таблицы, которое использует в условии подключения функцию Charindex(и Concat).

Реализовать условие подключения таблицы получилось используя класс Column метод SqlText, но он помечен как Obsolete.

Подскажите каким образом нужно правильно реализовать задуманный функционал?

 

.From("UsrJobPosting")

.InnerJoin("City")

.On("City", "Id")

.IsEqual("UsrJobPosting", "UsrLocationId")

.Or(Column.SqlText("CHARINDEX(CONCAT(City.Name,';'), UsrJobPosting.UsrAdditionalLocations)"))

.IsGreater(Column.Parameter(0))

Нравится

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

Добрый вечер.

 

У меня 2 системы Creatio: ServiceEnterprise и SalesServiceEnterprise. Обе системы развернуты onsite. И теперь надо сделать бесшовную интеграцию систем в части справочника контрагентов. Так чтобы при изменении в одной систем изменения передавались в другую. Структура справочника одинаковая. 

Есть варианты как это лучше сделать? кто какие решения использовал для подобных целей.

Нравится

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

1) можно прикрутить бп, который по odata при изменении/добавлении/удалении объекта отсылает данные в др. систему (будет событийка, в двух системах)

2) можно прикрутить жесткий update/create/delete в др базу. мб даже на уровне тригеров. (без событийки)

3) можно накрутить своих сервисов

 

в любом случае скорее всего встанет вопрос: "а как разграничить одновременное редактирование одного и того же КА" и тут видимо придется городить огороды.

 

в нашем случае мы 1 из систем с доработками перенесли в другую дабы не было проблем)

1) можно прикрутить бп, который по odata при изменении/добавлении/удалении объекта отсылает данные в др. систему (будет событийка, в двух системах)

2) можно прикрутить жесткий update/create/delete в др базу. мб даже на уровне тригеров. (без событийки)

3) можно накрутить своих сервисов

 

в любом случае скорее всего встанет вопрос: "а как разграничить одновременное редактирование одного и того же КА" и тут видимо придется городить огороды.

 

в нашем случае мы 1 из систем с доработками перенесли в другую дабы не было проблем)

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

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

 

Подскажите в какую сторону смотреть?

 

define("ClientUnit_8926375", [], function() {

    return {

        entitySchemaName: "",

        attributes: {},

        modules: /**SCHEMA_MODULES*/{

            "Chart91fd6d56-8c0e-438d-90d1-dbd7e159c555": {

                "moduleId": "Chart91fd6d56-8c0e-438d-90d1-dbd7e159c555",

                "moduleName": "CardWidgetModule",

                "config": {

                    "parameters": {

                        "viewModelConfig": {

                            "widgetKey": "Chart91fd6d56-8c0e-438d-90d1-dbd7e159c555",

                            "recordId": "b420b58a-9774-4f1a-86df-e118903c50ed",

                            "primaryColumnValue": {

                                "getValueMethod": "getPrimaryColumnValue"

                            }

                        }

                    }

                }

            },

Нравится

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

Алексей, здраствуйте!

Изменить фильтр виджета на странице редактирования не получиться, запрос строится через метод createSelect в BaseWidgetViewModel коллекцию фильтров получаем с таблицы SysWidgetDashboard (SysWidgetDashboardLcz).

Однако вы можете фильтровать результат виджета относительно записи, в которой вы находитесь, через заполнение параметра "Как связать с разделом" в настройках итога.

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

Добрый день

 

Был у меня справочник EPMProject. Пришло время его расширить и сделать из него раздел. Использовал новую функциональность создания раздела на основе существующего объекта. Все было Ок. Создался раздел, создал страничку, добавил новые поля. Единственное что смущало, так это то что в родительском объекте раздела остался BaseLookup, а не BaseEntity.

Решил добавить деталь. Через мастер деталей добавил деталь, переименовал сгенерированное имя в осмысленное EPMProjectResources, переименовал схему детали и сделал схему странички детали. На деталь добавил поле для связи с разделом EPMProject. 

Захожу в раздел, чтобы добавить через мастер раздела деталь на страницу и все... приплыли. Раздел не открывается, в консоли 2 ошибки

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

Открываем источник и ругается на 9 строку

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

Редиску чистил, сгенерировать все и перекомпилировать все делал. - не помогло.

Откатил системы из бэкапа. Повторил действия - результат тот же 

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

Нравится

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

Алексей, добрый день!
Проблема в самой детали EPMProjectResources, а если конкретнее, в приставке Resources. Дело в том, что вместе с раздел EPMProject создался объект EPMProjectResources, в котором хранится информация о разделе. На скриншоте видно, что EPMProjectResources даже указан в зависимостях для EPMProject. В конфигурации вы этого объекта не увидите, однако, по факту он есть. Создав деталь с идентичным названием, вы посути переписали этот объект и теперь в нём нет свойств. По этой причине мы и получаем такую ошибку. При создании чего либо не стоит использовать формулировку [Код объекта]Resources.

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

Добрый день. Необходимо обновить поле Тип контакта на существующих контактах. Сделала выгрузки контактов с Id, т.к. по ФИО могут дублироваться. Создала новый файл который содержит колонку Id, ФИО, Тип. Делаю импорт и данные не обновляет в системе. Пишет что такой ID уже есть, дубликат, данные не загружены. Как мне обновить данные поля? Возможно я что-то неверно делаю. Спасибо.

Нравится

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

А вы указали Id как поле в настройке проверки дублей при импорте?

Добрый день!

 

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

Поэтому для того что бы обновить значения поля "Тип контакта" Вам необходимо при импортировании данных на  странице [ Параметры дублей ] использовать в качестве условия Id контакта.

 

Детальнее об обновление данных с помощью импорта Вы можете ознакомиться на Академии по ссылке:

 

https://academy.terrasoft.ru/docs/user/bazis_platformy/dannye/excel_imp…

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

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



Нужно реализовать уведомление пользователю, что через 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. если время разрешение попадает в промежуток параметров - высылаю уведомление

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

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

Прикрепленные файлы

Нравится

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

Для таких целей нужно использовать элемент "Преднастроенная страница", а в нем уже делать на поле "Дата" проверку через валидацию

Для таких целей нужно использовать элемент "Преднастроенная страница", а в нем уже делать на поле "Дата" проверку через валидацию

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

Добрый день! Как можно поставить активный линк (тек. Запись объекта) в элементе "Вопрос пользователю". 

В БП использую элемент "Вопрос пользователю" В БП на входе есть параметр (ID тек. записи), Как сделать чтобы при отображении вопроса пользователю был линк на  (ID тек. записи). 

Прикрепленные файлы

Нравится

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

Tigran Gevorgyan, добрый день!

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

Sorotiuk Anna, добрый день!

Решил проблему иначе ) Создал БП на основе системного БП, (Отправка уведомлений с раздела обратная связь ). теперь тек запись отправляется пользователю как информация  со ссылкой .

 

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

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

Нравится

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

Добрый день, Евгений.

Снизу прикрепил пример, где я добавил конкретный участок кода в исключение при компиляции. В результате warning CS4014 не появился. Можно реализовать не только препроцессором.

Более детально можно найти в официальной документации:

https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/supp…

using System;
using System.Threading.Tasks;
 
public static class Test{
 
	static void CallingMethodAsync(int millisecondsDelay)
	{
		Console.WriteLine("  Entering calling method.");
 
		// Call #1.
		// Call an async method. Because you don't await it, its completion
		// isn't coordinated with the current method, CallingMethodAsync.
		// The following line causes warning CS4014.
		#pragma warning disable CS4014
		CalledMethodAsync(millisecondsDelay);
		#pragma warning restore CS4014
	}
 
	static async Task CalledMethodAsync(int millisecondsDelay)
	{
		Console.WriteLine("    Entering called method, starting and awaiting Task.Delay.");
 
		await Task.Delay(millisecondsDelay);
 
		Console.WriteLine("    Task.Delay is finished--returning from called method.");
	}
}

 

Добрый день, Евгений.

Снизу прикрепил пример, где я добавил конкретный участок кода в исключение при компиляции. В результате warning CS4014 не появился. Можно реализовать не только препроцессором.

Более детально можно найти в официальной документации:

https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/supp…

using System;
using System.Threading.Tasks;
 
public static class Test{
 
	static void CallingMethodAsync(int millisecondsDelay)
	{
		Console.WriteLine("  Entering calling method.");
 
		// Call #1.
		// Call an async method. Because you don't await it, its completion
		// isn't coordinated with the current method, CallingMethodAsync.
		// The following line causes warning CS4014.
		#pragma warning disable CS4014
		CalledMethodAsync(millisecondsDelay);
		#pragma warning restore CS4014
	}
 
	static async Task CalledMethodAsync(int millisecondsDelay)
	{
		Console.WriteLine("    Entering called method, starting and awaiting Task.Delay.");
 
		await Task.Delay(millisecondsDelay);
 
		Console.WriteLine("    Task.Delay is finished--returning from called method.");
	}
}

 

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