Подскажите, как в расширенном фильтре в условиях добавить сравнение двух полей?

Как пример вывести все записи где Создал != Ответственный

 

 

Нравится

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

На сколько я понял вопрос, то такой функции пока нет в creatio. 

“Oh, my sweet summer child...."

Вот тут. 1 же пункт. Но судя по всему реализации фичи будем ждать к 2030 году. lowcodenocode все дела)

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

Спасибо. Подозревал, что так и есть. Хотя зимы мы видели, да ещё какие :)

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

Сделано изменение права доступа на объект, добавил к существующим новые роли. Вижу что процесс "актуализация прав по записям" запущен, закончен, но на объекты не были назначены права новые. Пользователи не видят объектов.

Связан ли процесс актуализации ролей с LDAP ? А как ?

 

Нравится

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

Здравствуйте.

Данный процесс и LDAP не связаны. Тут больше похоже что у записей по которым идет актуализация не заполнено значение CreatedById в БД. Актуализация отрабатывает именно от этого значения. Если его нет - актуализация никаких прав не выдаст.

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

Всем доброго времени суток!

Столкнулся с проблемой, при сохранении Entity на событийном слое не срабатывает асинхронные операции.

Сохранение происходит в классе обработчике который подписан на очередь Rabbit

Выдает следующую ошибку:

EntityEventAsyncExecutor SendMessage - OnSavedMyEntityAsyncOperations

System.InvalidOperationException: Не удалось получить контекст выполнения фоновой операции. Для сервисов без авторизации необходимо вызвать Terrasoft.Web.Common.SessionHelper.SpecifyWebOperationIdentity.

   в Terrasoft.Core.ServiceBus.BusUtils.CreateUserContext(String userName, String sessionId, Guid externalAccessId)

   в Terrasoft.WebApp.ActorSystem.UserContextProvider.GetUserContext()

   в Terrasoft.ActorSystem.ActorReference.Tell(AppContextMessage message)

   в Terrasoft.Core.ActorSystem.Entities.EntityEventAsyncExecutor.SendMessage(Object parameters, Type operationType)

Как бороться с такой проблемой, может кто знает?

Спасибо!

Нравится

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

Здравствуйте!

 

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

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

При асинхронном запуске бизнес-процессов  в которых есть элемент - "Читать данные", постоянно выскакивает ошибка - Npgsql.NpgsqlOperationInProgressException: A command is already in progress.



Может кто сталкивался и знает как правильно работать с БД что бы при асинхронных запросах не было таких ошибок? 

Нравится

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

Андрей, что вы имеете ввиду под асинхронными? Фоновый режим? Как воспроизвести описанную проблему? И о какой версии идет речь?

Тарас Пономарёв,

EntityList.SplitOnParts(ChunkSize).AsParallel().AsOrdered().ForAll(EntityListPart=> { foreach(var entity in EntityListPart) {// тут запрос в бд, скажем дорогостоящий поиск по name like});

Здравствуйте!

 

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

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

Здравствуйте!

При удалении одной записи методом DataService с указанием фильтра по  колонке "id" время обработки запроса составляет 20-40 секунд, и это при общем количестве записей таблицы менее 1000. 

 При указании фильтра по любому строковому полю этого-же объекта(не индексируемому полю) , запрос отрабатывает существенно быстрее. 

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

Версия облачная, postgre, доступ к инструментам мониторинга отсутствует.

 

Пример запроса:

{"items": [

        {"__type": "Terrasoft.Nui.ServiceModel.DataContract.DeleteQuery","QueryId":1,"QueryType":1,

                        "Filters":{"FilterType":1,"ComparisonType":3,"LeftExpression":{"ExpressionType":0,"ColumnPath":"Id"},"RightExpression":

                        {"ExpressionType":2,"Parameter":{"DataValueType":0,"Value":"81a45c46-f8df-4913-83ac-1457399f3873"}}},"RootSchemaName":"Account","OperationType":0,"IncludeProcessExecutionData":false}

        ]}

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

 

 

 

Нравится

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

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

Не совсем понятна суть вопроса, что вам необходимо сделать?

Если вы пользуетесь DataService, то рекомендую ознакомиться с примером удаление записи с его помощью.

https://academy.terrasoft.ua/docs/developer/integrations_and_api/data_s…

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

Добрый день,

 

необходимо установить Exchange Listener для срм creatio.

 

Пробовали установить только с докером по этой инструкции https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra… -- работают только старые версии. Не очень интересно.

 

Пробовала по этой инструкции поставить через Kubernetes

https://community.terrasoft.ru/articles/1-realnyy-primer-po-razvertyvan…

 

первое что меня смутило. У меня 20.04 (focal), а репозиторий для 16.04

" Next, we'll add the Kubernetes package repository. Note that at the time of this writing, Ubuntu 16.04 Xenial Xerus is the latest Kubernetes repository available. This should eventually be superseded by Ubuntu 20.04 Focal Fossa, and the following command can then be updated from xenial to focal. " Но его там нет. Этот работает, но под 16.04

deb http://apt.kubernetes.io/ kubernetes-xenial main

Второе, что не работают репозитории. Можно найти заменить. Не проблема.

helm repo add bitnami https://charts.bitnami.com/bitnami

 

Но все равно не работает. Помогите пожалуйста разобраться.

 

 

wget https://get.helm.sh/helm-v3.6.0-rc.1-linux-amd64.tar.gz

 

helm install --namespace default --set usePassword=false --set=slave.persistence.enabled=false --set master.persistence.enabled=false --set cluster.enabled=false redis bitnami/redis

 

wget https://academy.creatio.com/sites/default/files/documents/downloads/Exc…

 

 

$ kubectl get pods

NAME               READY   STATUS             RESTARTS   AGE

elistener-api-0    0/1     CrashLoopBackOff   59         4h57m

redis-master-0     1/1     Running            0          4h58m

redis-replicas-0   0/1     Pending            0          4h58m

 

$  kubectl get service

NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE

elistener-api    NodePort    10.109.70.15            80:30001/TCP   6m14s

kubernetes       ClusterIP   10.96.0.1               443/TCP        11m

redis-headless   ClusterIP   None                    6379/TCP       7m

redis-master     ClusterIP   10.96.133.113           6379/TCP       7m

redis-replicas   ClusterIP   10.102.18.199           6379/TCP       7m

 

$ kubectl get pods -o wide

NAME               READY   STATUS             RESTARTS   AGE     IP           NODE            NOMINATED NODE   READINESS GATES

elistener-api-0    0/1     CrashLoopBackOff   5          5m46s   10.244.0.5   r-creatio-lel             

redis-master-0     1/1     Running            0          6m32s   10.244.0.4   r-creatio-lel             

redis-replicas-0   0/1     Pending            0          6m32s                              

 

 

 

Events:

  Type     Reason     Age                From               Message

  ----     ------     ----               ----               -------

  Normal   Scheduled  91s                default-scheduler  Successfully assigned default/elistener-api-0 to r-creatio-lel

  Normal   Pulling    90s                kubelet            Pulling image "bpmonline/exchangelistener:0.8.39"

  Normal   Pulled     75s                kubelet            Successfully pulled image "bpmonline/exchangelistener:0.8.39" in 15.036026467s

  Warning  BackOff    32s (x2 over 37s)  kubelet            Back-off restarting failed container

  Normal   Created    17s (x3 over 75s)  kubelet            Created container exchangelistener

  Normal   Pulled     17s (x2 over 56s)  kubelet            Container image "bpmonline/exchangelistener:0.8.39" already present on machine

  Normal   Started    16s (x3 over 74s)  kubelet            Started container exchangelistener

 

 

2021-06-21 09:10:07,405 [1] FATAL: Application startup exception

StackExchange.Redis.RedisConnectionException: It was not possible to connect to the redis server(s). There was an authentication failure; check that passwords (or client certificates) are configured correctly. AuthenticationFailure (None, last-recv: 310) on 10.96.133.113:6379/Interactive, Flushed/ComputeResult, last: ECHO, origin: SetResult, outstanding: 0, last-read: 0s ago, last-write: 0s ago, keep-alive: 60s, state: ConnectedEstablishing, mgr: 8 of 10 available, last-heartbeat: never, global: 14s ago, v: 2.1.58.34321

 

Нравится

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

Скажите пожалуйста, а как убрать

Старая синхронизация почты (OldEmailIntegrationFeature, выключена)

Кеш настроек почты (IsMailboxSyncSettingsCached)

 

и заменить на exchangeListener

https://community.terrasoft.ru/articles/1-realnyy-primer-po-razvertyvan…



ответил в комментах, что мне помогло  в вашем случае

после необходимо будет обновить сервис exchangeListener

https://community.terrasoft.ru/articles/obnovlenie-mikroservisa-exchang…

и только после настраивать синхронизацию на стороне crm

Dima Avdoshin,

 

спасибо. Эта проблема решена.

 

Но почему-то http://IP_ExhangeListerVM:30001/api/listeners/status выдает только

 

{
  "ServiceStatus": "Started",
  "version": "0.8.39",
  "connections": {}
}

 

 

в примере должен быть connections с массой параметров

 

:~$ kubectl logs elistener-api-0

2021-06-22 11:09:59,477 [1] WARN : Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container                                      is destroyed.

2021-06-22 11:10:08,770 [1] WARN : No XML encryptor configured. Key {9817fbd1-66c7-41d2-a0b1-464f19d4fbf9} may be persisted to storage in unencrypted form.

Hosting environment: Production

Content root path: /app

Now listening on: http://0.0.0.0:80

Application started. Press Ctrl+C to shut down.

 

:~$ kubectl logs elistener-api-1

2021-06-22 11:10:30,772 [1] WARN : Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container                                      is destroyed.

2021-06-22 11:10:39,866 [1] WARN : No XML encryptor configured. Key {6f72b855-266a-452c-b621-783b0cfb454b} may be persisted to storage in unencrypted form.

Hosting environment: Production

Content root path: /app

Now listening on: http://0.0.0.0:80

Application started. Press Ctrl+C to shut down.

 

 

:~$ sudo ls -l /root/.aspnet/

ls: cannot access '/root/.aspnet/': No such file or directory

 

Нет такой папки на диске или смотреть в кубе?

 

Екатерина Валерьевна,



Статус EXCHANGE LISTENER возвращается корректный. Дополнительные параметры появятся после создания подписки на микросервисе (по результату успешного добавления почтового ящика для синхронизации в систему).

Алёна Доля,

спасибо большое. А как добавить?

Екатерина Валерьевна,

добавить ящик вы можете согласно инструкции:https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/na…

Скажите пожалуйста, а как убрать

Старая синхронизация почты (OldEmailIntegrationFeature, выключена)

Кеш настроек почты (IsMailboxSyncSettingsCached)

 

и заменить на exchangeListener

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

Добрый день.

Есть некий процесс. На развилке "ИЛИ" надо направить на разные ветки в зависимости от роли ответственного.

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

Пользователь может состоять в нескольких ролях. По трассировке я их получаю.

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

Как мне написать формулу в условном потоке чтобы выбрать роль и процесс пошел в определенную ветку?

Нравится

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

Доброе утро.

 

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

 

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

Я сделал по другому. После получения всех ролей, создал бизнес-процесс в котором настроил маршруты исходя из ролей. При этом, ветку по умолчанию завернул на завершение процесс. Получил вложенный процесс который запускает несколько экземпляров. Не соответствующие условиям процессы завершаются, корректный для нужной роли продолжает маршрут и основной бизнес-процесс.

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

Доброго времени суток!



Ситуация такая. В процессе работы над crm в разделе Проекты была одна колонка и бизнес-правило к ней: поле Статус недоступно для редактирования, пока значение в той колонке(поле с дробным числом) равно 0.

Позже это бизнес-правило удалилось из-за ненадобности. И после этого начала появляться ошибка:

23502: null value in column "ITdsMarzha2" violates not-null constraint



ITdsMarzha2 - это и есть та колонка.

Её мы и удаляли в базе данных postgre, и чистили схему страницы от неё, и почистил все бизнес-правила в мастере раздела и в схеме страницы (думал там мог след остаться от удаленных б-правил). Постоянно кучу раз делал полную проверку системы: обновление бд, генерация, компиляция. Ну вот нигде её след больше не можем найти.



И всё равно ошибка появляется при сохранении карточки. При чем карточка то сохраняется успешно, а вот всякие связанные с этим бизнес-процессы не запускаются.

Кстати проблема только на боевой продуктивной среде. На моей локальной разработческой ошибки не возникает.



Может подсказать кто, куда нам ещё нужно залезть проверить эту "несуществующую" колонку?

Нравится

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

Добрый день. Ошибка приходит из постгре - там явно подразумевается, что колонка существует, и что в записи она будет заполнена значением. Вы точно уверены, что в схеме объекта не осталось этой колонки? Из базы может и удалили, но ОРМка может создать колонку обратно, основываясь на метаданных объекта.

Vyacheslav Lipatkin,

Метаданные проверили, там тоже нет следа по этой колонке.

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

Где то ещё может хранятся данные?

Андрей Касаткин,

Поэкспериментируйте над схемой объекта на копии прода. Попробуйте добавить в схему объекта колонку с таким названием, опубликовать объект, потом удалить эту колонку и снова опубликовать. Может по ходу какие ошибки всплывут, и получится хоть как-то найти проблему.

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

Добрый день!



Можно ли добавить на партнёрский портал пользовательские разделы?

Нравится

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

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

 

Партнерский портал доступен в продуктах Sales Creatio enterprise и CRM Creatio.



По условиям лицензии на клиентском портале можно настраивать и использовать до трех пользовательских разделов. Чтобы пользовательский раздел появился на портале, необходимо настроить его в мастере разделов и добавить в рабочее место “Портал”.

 

На страницу раздела можно добавить любые объекты системы, например, детали, поля и т. д. Количество объектов зависит от конфигурации портала (портал самообслуживания, клиентский портал) и регулируется условиями лицензии. Например, на портале самообслуживания можно добавить на страницу не больше 25 объектов, на пользовательском портале — не больше 125. При превышении количества объектов, используемых на странице записи раздела, на портале блокируется возможность добавления и редактирования записей.

 

Более дательная информация в статье на Академии: https://academy.terrasoft.ru/docs/user/instrumenty_prodazh/partnerskie_…

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

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

Подскажите, пожалуйста, какие вообще могут быть причины такой ошибки?

На разных компьютерах, где уже были сайты 7.17, добавляли новый сайт версии 7.18. 

Последовательность действий одинаковая, новая база, восстановление из бекапа, разархивание файлов, новый сайт, новое приложение. Настройки connectionstrings верные. Redis сбрасывали.

На одной из машин получаем эту ошибку, все вроде проверено и идентично с другими, но не работает.

 

 

Нравится

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

Добрый день, Фариз.

Если вы на 100% уверены что БД версии 7.18.0 и бинарные файлы 7.18.0, убедитесь что в бинарных файлах не было замен (правок от поддерки, партнера и т.д.) также проверьте БД скриптом по ссылке, скрипт покажет версию БД. https://drive.google.com/file/d/1AxSnqyKsWhXIvFmt69egnVYsSejXuxpn/view?…

 

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

 

Если это всё не даст понимания в чем причина, выложите файлы ConnectionString.config с обеих сред, результат скрипта и уточните откуда именно взяты бинарные файлы приложения?

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

 

Судя по тексту ошибки, Вы в ConnectionStrings указали не ту версию базы данных.

Вы пытаетесь файлами версии 7.18 подключиться к базе версии 7.14.

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

В том то и дело, что в ConnectionStrings все проверено несколько раз.  

Добрый день, Фариз.

Если вы на 100% уверены что БД версии 7.18.0 и бинарные файлы 7.18.0, убедитесь что в бинарных файлах не было замен (правок от поддерки, партнера и т.д.) также проверьте БД скриптом по ссылке, скрипт покажет версию БД. https://drive.google.com/file/d/1AxSnqyKsWhXIvFmt69egnVYsSejXuxpn/view?…

 

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

 

Если это всё не даст понимания в чем причина, выложите файлы ConnectionString.config с обеих сред, результат скрипта и уточните откуда именно взяты бинарные файлы приложения?

Тарас Пономарёв,

 

Спасибо! Запросом увидели 7.17.4 там, где должно быть 7.18. Либо исполнитель ошибся, либо он ошибся. Пересоздадим базу.

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