Добрый день!

 

Есть проблема с импортом записей из Excel. При импорте не заполняется номер обращения, который автозаполняется при добавлении записей. Маска и текущий номер.

 

Реализация автозаполнения сделана на серверной стороне посредством событийного слоя, триггер - после добавления записи. 

 

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

Нравится

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

После установки пакета, необходимо запустить сервис написанный на C#.

Может кто в курсе как можно это реализовать?

Нравится

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

в теории можно попробовать поставить через sql скрипт, который выполниться после установки пакета, задачу - job в scheduler на исполнение бп с нужным тебе кодом c# я бы туда копал.

Добрый день!

Вы можете запустить бизнес процесс по сигналу после установки пакета:

С уважением,
Богдан

Bogdan,

если установка задействует уровень entity

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

Добрый день. 
Глобальный поиск и дедубликация ранее корректно работал на версии 2.0, после перевода его на 3.0, стал странно работать.
В системе есть раздел Purchase в нем порядка 25 млн записей. 
Глобальный поиск его судя по всему не проиндексировал, поиск по нему не происходит, хотя я принудительно пытаюсь его проиндексировать через 
/indexation/SiteName/Purchase/reindex/full мне в ответе приходит ОК, но ничего не происходит. 
 После запуска дедубликации по этому разделу она в базе mongo сразу стает завершенной без ошибок, а в интерфейсе остается на 0%. 
 По базовому разделу контакты дедубликация проходит тоже частично успешно, находит не все дубли. В mongo пишет, что обработано меньше записей, чем должно.

В mongo залазил согласно https://community.terrasoft.ua/articles/kak-proverit-nalichie-zapuschen…

 Ошибок по логам контейнеров не нашел. Подскажите может, кто-то сталкивался с такой проблемой, возможно есть дополнительные настройки?  Спасибо.

Нравится

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

Добрый день, Владимир!

 

Возможно, очередь не долшла к записям из этого раздела.

Полная переидексация для БД только в разделе Purchase может проходить достаточно долго.

Можно посмотреть значения колонки LastIndexeOn для раздела Purchase в таблице IndexingEntity в базе глобального поиска Postgres. Когда индексация дойдет к этому разделу значения из этой колонки начнет расти и можно будет поискать записи после завершения индексации раздела.

 

Как узнать завершилась ли индексация глобального поиска в on-site?

 

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

В ней есть 2 колонки, которые важны для понимания завершилась ли первичная индексация или нет:

  • LastIndexedOn - дата последней итерации индексации.

  • InProcess - в процессе ли индексация (одной итерации) по текущей сущности.

Индексация завершилась для конкретной сущности, лишь тогда, когда LastIndexedOn = дата подключения сайта к ГП и в InProcess установлено значение “false“.

Полностью индексация завершена, когда для всех записей из таблицы "IndexingEntity" значения в LastIndexedOn и InProcess установлены аналогично описанию выше.

Порядок настройки

  1. Зайти в контейнер с БД глобального поиска.

     

    docker exec -it gs-postgres bash

  2. Подключиться к БД глобального поиска.

     

    psql -d postgres -U postgres

  3. Выбрать, все записи из таблицы IndexingEntity.

     

    SELECT "EntityName", "LastIndexedOn", "InProcess" FROM "IndexingEntity";

 

P.S. Планировщик (который ответственный за первичную индексацию) запускается раз в 50 дней, таким образом доиндексирует\актуализирует необходимое.

То есть, это к тому, что каждые 50 дней эта дата будет обновляться.

Жмурко Сергей,

Спасибо за совет. Таблица показала, что LastIndexedOn везде пусто и InProcess везде false. То-есть индексация совсем не начиналась, хотя по контактам даже дубли находит. В логах контейнера с прогрессом были ошибки по вставке дублей в эту таблицу. Таблицу очистил попробую перезапустить все.

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

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

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