Здравствуйте!
После развертывания on-site версии Creatio 7.18.5 и настройки через Docker сервиса Exchange Listener появилась проблема.

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

При попытке подключения к почтовому ящику в логах docker  выдаёт ошибку

 

[ExchangeListener.Service.ServiceFactory] 2022-01-20 12:36:34,447 [12] INFO : [e24a41bc-2438-4c4b-bad9-a112626a7c22] [teachersimulatorfeedback@gmail.com] Successfully loaded EmailMessage MessageId = '<c4e850d7-aa3a-4268-96b3-f3014b1e4e6f@gmail.com>', Id = '<c4e850d7-aa3a-4268-96b3-f3014b1e4e6f@gmail.com>', Subject = 'Тестовое сообщение Creatio'.
 
[ListenerBase.DataSend.EventDataSender] 2022-01-20 12:36:34,447 [12] INFO : [e24a41bc-2438-4c4b-bad9-a112626a7c22] [teachersimulatorfeedback@gmail.com] EventDataSender send 100 bytes to http://localhost:83/0/ServiceModel/ExchangeListenerService.svc/ProcessBinarySerializedEmail
 
[ListenerBase.Email.Load.BaseEmailEventProcessor] 2022-01-20 12:36:34,449 [5] ERROR: [e24a41bc-2438-4c4b-bad9-a112626a7c22] Mailbox teachersimulatorfeedback@gmail.com: error sending emails ['12' in folder INBOX] to http://localhost:83/0/ServiceModel/ExchangeListenerService.svc/NewEmail.
 
System.Net.Http.HttpRequestException: Cannot assign requested address
 
 ---> System.Net.Sockets.SocketException (99): Cannot assign requested address
 
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
 
   --- End of inner exception stack trace ---

Выглядит, как будто доступ к ящику есть (видит темы писем), но не может передать их в Creatio.

Окно проверки email-сервисов показывает все зеленые галочки, тестовые емэил высылаются.

 

Нравится

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

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

Запись "Cannot assign requested address" говорит о том, что микросервис Exchange Listener не имеет доступа к серверу приложений. Вам необходимо проверить значение системной настройки "BpmonlineExchangeEventsEndpointUrl". Для корректного получения почты в адресе настройки должно быть указано доменное имя сайта или Ip. Если Вы указали в адресе "localhost", загрузка писем не будет проходить.

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

Запись "Cannot assign requested address" говорит о том, что микросервис Exchange Listener не имеет доступа к серверу приложений. Вам необходимо проверить значение системной настройки "BpmonlineExchangeEventsEndpointUrl". Для корректного получения почты в адресе настройки должно быть указано доменное имя сайта или Ip. Если Вы указали в адресе "localhost", загрузка писем не будет проходить.

Lev Kuptsov,

Письма начали загружаться после замены localhost на реальный ip. Спасибо!

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

Добрый день, коллеги.

Вопрос. 

Есть группа "офисные сотрудники"

Необходимо при создании нового пользователя в этой группе у нового контакта изменять  поле контрагент на определенного контрагента.

Пользователи создаются не  в ручную. Они попадают в эту группу через ADFS.

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

Мне нужно что бы в Creatio  контрагент проставлялся.

Можно это через БП ?

Я так прикинул, что стартовый сигнал должен быть - создание новой записи в объекте "Вхождение пользователя в роли" в фильтре роль "офисные сотрудники"

Но вот как быть дальше? я пробовал создать бд, но контрагент не проставляется.

Можете подсказать?

Нравится

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

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

Столкнулся со следующей проблемой.

Кейс такой нужно писать логи через NLog в очереди RabbitMQ.

Для этого использую библиотеку Nlog.RabbitMQ.Target.dll

Добавляю ее в папку MyApp\bin\ 

Затем настраиваю файлы nlog.config:

<logger name="GrayLogLogger" writeTo="grayLogAppender" minlevel="Debug" final="true" />

nlog.targets

<extensions>
        <add assembly="Nlog.RabbitMQ.Target" />
    </extensions>
    <variable name="rmqHost" value="localhost" />
    <variable name="rmqUser" value="admin" />
    <variable name="rmqPassword" value="admin" />
    <variable name="rmqvHost" value="logs" />
    <variable name="rmqvPort" value="5672" />
    <variable name="rmqExchange" value="logs" />

<target name="grayLogAppender"
                xsi:type="RabbitMQ"
                appid="CreatioDemo"
                topic="${uppercase:${level}}"
                username="${rmqUser}" 
                password="${rmqPassword}" 
                hostname="${rmqHost}" 
                exchange="${rmqExchange}"
                exchangeType="topic"
                port="${rmqvPort}"
                vhost="${rmqvHost}"
                layout="${Date} [${ThreadIdOrName}] ${uppercase:${level}} ${UserName} ${MethodName} - ${Message}"
                messageSource="nlog://${machinename}/${logger}"
                useJSON ="true">
            <field key="threadid" layout="${threadid}" />
            <field key="machinename" layout="${machinename}" />

 

при перезапуске пула конект к Rabbit создается но логи не пишуться.

Для этого нужно добавить Nlog.RabbitMQ.Target.dll в папку MyApp\Terrasoft.WebApp\bin\

И тут возникает проблема при перезапуске пула или при логине в систему:

[FileLoadException: Could not load file or assembly 'System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
   StackExchange.Redis.PhysicalConnection.BeginConnectAsync(LogProxy log) +0
   StackExchange.Redis.PhysicalBridge.GetConnection(LogProxy log) +461
   StackExchange.Redis.ServerEndPoint.CreateBridge(ConnectionType type, LogProxy log) +98
   StackExchange.Redis.ServerEndPoint.GetBridge(ConnectionType type, Boolean create, LogProxy log) +60
   StackExchange.Redis.ConnectionMultiplexer.ActivateAllServers(LogProxy log) +195
   StackExchange.Redis.<ReconfigureAsync>d__142.MoveNext() +7816

[AggregateException: One or more errors occurred.]
   System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) +4593189
   System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) +13992992
   StackExchange.Redis.ConnectionMultiplexer.ConnectImpl(Object configuration, TextWriter log) +220
   Terrasoft.Redis.StackExchangeAdapters.RedisClientsManagerAdapter..ctor(String connectionStringName, RedisConfigSection configSection) +273

 

Проверил версию  System.Threading.Tasks.Extensions в сборке Nlog.RabbitMQ.Target.dll  и ту что используется в Ceratio - совпадают.

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

Нравится

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

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

Исходя их ошибки попробуйте перезапустить redis.

Поскольку на данный момент система не поддерживает внедрение Nlog.RabbitMQ.Target.dll, то более детальной рекомендации мы дать не можем. Советую ознакомиться с этим обсуждением.

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

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

Давным давно был установлен Change log for Creatio от samarasoft и настроен сбор данных по изменениям контактов, звонков, обращений и чатов.

В течение 4 лет данный модуль собирал данные и не чистился: логи копились годами, а далее систему отдали мне в управление.

Поняв, что это не нормально, в настройках журналирования Change log for Creatio я выбрал очистку логов, указал для теста дату очистки и нажал start.

Через 30 секунд я получил подтверждение запроса с уже подозрительным количеством underfined 🤔

Нажав да, процесс не начался, а логов осталось ровно столько же сколько было.

 

В системе ~239 млн записей логов и полагаю, что модуль просто зависает в попытке выполнить очистку.

Вопрос: можно ли используя SQL TRUNCATE SmrLoggingRecord просто очистить эти логи не поломая систему и не уничтожив работу модуля?

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

Нравится

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

SQL запрос по TRUNCATE SmrLoggingRecord полностью решил проблему. Записи очистились за 3 секунды, после чего модуль вернулся в строй. Очистка теперь работает пользовательскими инструментами. Вопрос закрыт.

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

 

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

 

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

Приложение у нас развернуто onsite, Standalone-приложение.

Пачками удалить 239 млн не выйдет, так как запрос delete top просто положит БД.

"Попробовать сделать и посмотреть, что получится" — это не совсем тот ответ, что я ожидал получить.

 

Возможно ли связаться как-то с samarasoft, чтоб они могли указать на возможные взаимосвязи, если мы через truncate очистим всю таблицу разом?

SQL запрос по TRUNCATE SmrLoggingRecord полностью решил проблему. Записи очистились за 3 секунды, после чего модуль вернулся в строй. Очистка теперь работает пользовательскими инструментами. Вопрос закрыт.

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

Добрый день, коллеги.

Создал пакет,  в нем есть скрипт который добавляет права на записи в разделе обращения для функциональной роли.

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

Если взять и удалить  права на записи для этой роли и добавить по новой, то запуститься процесс актуализации прав на записи в данном разделе.

И  все становится прекрасно.

Почему при переносе не работает актуализация? 

И можно ли запустить процесс на актуализацию прав к записям через SQL  скрипт?

 

Нравится

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

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

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

Добрый день.

Есть необходимость перенести дашборды на другую среду.

Сами дашборды перенести не проблема.

Но как перенести настроенные права для них?

Нравится

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

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

 

Реализовать перенос настроек организационной структуры и прав доступа из одного стенда на другой можно с помощью SQL-скриптов. Для этого на эталонной среде необходимо сформировать insert-запросы на основании записей со следующих таблиц: 

 

- SysAdminUnit (Объект администрирования: пользователи и роли)
- SysUserInRole (Непосредственные вхождения пользователей в роли)
- SysFuncRoleInOrgRole (Вхождение функциональной роли в организационную)
- SysAdminOperation (Системные операции, если необходимо)
- SysAdminOperationGrantee (Доступ к системным операциям, если необходимо)
- SysEntitySchemaOperationRight (Доступ к объектам)
- SysEntitySchemaRecordDefRight (Доступ к записям по умолчанию)
- SysEntitySchemaColumnRight (Доступ к колонкам объекта)
- SysAdminUnitGrantedRight (Делегирование)
- SysWorkplace – (Рабочее место пользователя)
- SysAdminUnitInWorkplace – (Пользователи в рабочем месте)
- SysModuleInWorkplace – (Раздел в рабочем месте)

 

Для формирования запросов можно воспользоваться Microsoft SQL Server Database Publishing Wizard и подобными инструментами. Полученный SQL-скрипт необходимо прикрепить к пакету (вкладка - "SQL-сценарии", https://academy.terrasoft.ru/documents/technic-sdk/7-15/obshchie-sveden… более старые версии и для более новых версий https://academy.terrasoft.ru/docs/developer/development_tools/developme…).

 

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

 

Эти работы необходимо выполнять не в бизнес-время.

Марк, добрый день!

 

Можете ознакомиться с решениями, предложенными в следующих постах: 

1. https://community.terrasoft.ru/questions/perenos-prav-dostupa

2. https://community.terrasoft.ru/questions/nastroyki-prav-dostupa-na-obek…

Спасибо ,  это я все сделал . Но может не правильно  выразился.

В аналитике раздела обращения , создал несколько дашбордов , на каждый дашборд свои права на чтение и  запись . Как их перенести через SQL  сценарий , если да , то может есть пример скрипта ?

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

 

Реализовать перенос настроек организационной структуры и прав доступа из одного стенда на другой можно с помощью SQL-скриптов. Для этого на эталонной среде необходимо сформировать insert-запросы на основании записей со следующих таблиц: 

 

- SysAdminUnit (Объект администрирования: пользователи и роли)
- SysUserInRole (Непосредственные вхождения пользователей в роли)
- SysFuncRoleInOrgRole (Вхождение функциональной роли в организационную)
- SysAdminOperation (Системные операции, если необходимо)
- SysAdminOperationGrantee (Доступ к системным операциям, если необходимо)
- SysEntitySchemaOperationRight (Доступ к объектам)
- SysEntitySchemaRecordDefRight (Доступ к записям по умолчанию)
- SysEntitySchemaColumnRight (Доступ к колонкам объекта)
- SysAdminUnitGrantedRight (Делегирование)
- SysWorkplace – (Рабочее место пользователя)
- SysAdminUnitInWorkplace – (Пользователи в рабочем месте)
- SysModuleInWorkplace – (Раздел в рабочем месте)

 

Для формирования запросов можно воспользоваться Microsoft SQL Server Database Publishing Wizard и подобными инструментами. Полученный SQL-скрипт необходимо прикрепить к пакету (вкладка - "SQL-сценарии", https://academy.terrasoft.ru/documents/technic-sdk/7-15/obshchie-sveden… более старые версии и для более новых версий https://academy.terrasoft.ru/docs/developer/development_tools/developme…).

 

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

 

Эти работы необходимо выполнять не в бизнес-время.

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

Нужно чтобы система автоматически удаляла запись в справочнике через год с момента занесения 

Суть:

Нужно чтобы система автоматически убирала из справочника (Черный список Email адресов) email адреса через год после их внесения в справочник ЧС

Нравится

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

Tigran Gevorgyan пишет:
Что Вы имеете введу  "сделать отдельное представление"  Создать отдельный раздел,  записывать туда все записи из черного списка с полем даты создания и в БП определить запись которая произведена год назад и если да, то удалить запись из раздела и из справочника ?

Не совсем. Я имею ввиду на уровне базы данных создать представление (view), которое настроить таким образом, чтобы оно содержало нужные для удаления записи из черного списка (соответствовало условию дата создания больше года).

А потом для работы с ним из конфигурации создать новую EntitySchema.

 

Чтобы связать EntitySchema с представлением, необходимо убедиться в соблюдении следующих условий:
1. В свойствах объекта установлен признак “Представление в базе данных”.

2. Название объекта соответствует названию представления в БД.
3. Структура объекта и представления идентичны.

Со стороны приложения View воспринимается как обычный объект.

 

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

 

Tigran Gevorgyan пишет:
Я думая это можно как-то осуществить через системные настройки

На данном этапе не вижу необходимости в добавлении новой системной настройки и использовании её  в бизнес-процессе.

Добрый день.

 

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

 

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

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

Добрый день. Спасибо за отклик!

Что Вы имеете введу  "сделать отдельное представление"  Создать отдельный раздел,  записывать туда все записи из черного списка с полем даты создания и в БП определить запись которая произведена год назад и если да, то удалить запись из раздела и из справочника ?

 

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

 

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

 

Tigran Gevorgyan пишет:
Что Вы имеете введу  "сделать отдельное представление"  Создать отдельный раздел,  записывать туда все записи из черного списка с полем даты создания и в БП определить запись которая произведена год назад и если да, то удалить запись из раздела и из справочника ?

Не совсем. Я имею ввиду на уровне базы данных создать представление (view), которое настроить таким образом, чтобы оно содержало нужные для удаления записи из черного списка (соответствовало условию дата создания больше года).

А потом для работы с ним из конфигурации создать новую EntitySchema.

 

Чтобы связать EntitySchema с представлением, необходимо убедиться в соблюдении следующих условий:
1. В свойствах объекта установлен признак “Представление в базе данных”.

2. Название объекта соответствует названию представления в БД.
3. Структура объекта и представления идентичны.

Со стороны приложения View воспринимается как обычный объект.

 

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

 

Tigran Gevorgyan пишет:
Я думая это можно как-то осуществить через системные настройки

На данном этапе не вижу необходимости в добавлении новой системной настройки и использовании её  в бизнес-процессе.

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

Спасибо))

Tigran Gevorgyan,

Если будут вопросы, обращайтесь

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

Добрый день, уважаемое сообщество!
Силами своей разработки, мы пытаемся передать данные по "языку общения" (Language) в карточку контакта с нашей рабочей базы данных в базу данных Creatio.

 

Открыв объект Contacts, я понял, что язык общения указан как Language, который ссылается на объект SysLanguage. Если я правильно понял, то при добавлении/обновлении записей контактов требуется передавать ID языка именно из этого справочника, так как просто текстовая запись вида: Английский (США) не подойдет.

Ознакомившись с документацией api https://academy.terrasoft.ua/documents/technic-sdk/7-16/integraciya-s-sistemoy-i-vneshniy-api мы пытаемся понять, где найти rootSchemaName для списка языков?

Кто-то может подсказать?

Нравится

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

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

 

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

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

Добрый день!

Установила приложение "Custom filter constructor for Creatio" (https://marketplace.terrasoft.ru/app/custom-filter-constructor-creatio) на демо-стенд (версия 7.18.2). Возможности "Открыть настройку фильтров раздела" нет.

В разделе в консоли появляется ошибка (скрин наверху).

 

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

Нравится

6 комментариев

Елизавета, добрый день!

 

это бесплатное приложение и поддерживается разработчиком только по email. Обратитесь к разработчику напрямую.

Лазоренко Ирина, так может стоит тогда исключить это приложение из маркета, раз оно не работает как надо?

Согласен. Оно не работает уже давно. Думаю если его не исправляют его нужно убирать до исправления ошибка

Я вот тоже не понимаю, почему на маркете вообще лежит нерабочее приложение(

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

Добрый день! в последних версиях Creatio была закрыта работа с замещающими клиентскими модулями, поэтому решение перестало корректно работать начиная с версии 7.18.2. Был добавлен комментарий по совместимости на странице решения.

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

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

 

Можно ли с помощью стандартных средств или средств разработки настроить обязательность заполнения поля комментария при плохой оценке ?

Нравится

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

Страница комментария - это схема "CaseRatingFeedbackPage". Там в методе postComment можно добавить необходимую вам логику проверки. Не уверен, подгружается ли в модель страницы оценка пользователя, но в крайнем случае её можно из url'а достать.

Добрый день!
 

Если Вы имеете ввиду возможность сделать поле "Комментарий" на странице благодарности, которая открывается после нажатия на оценку в письме, обязательным, то на данный момент такая возможность отсутствует. Функционал работает таким образом, что сначала проставляется и отправляется оценка, а только после предоставляется возможность заполнить комментарий. А клиент может просто закрыть страницу с комментарием в браузере. Чтобы реализовать необходимую Вам логику, необходимо полностью заменить механизм и логику работы оценки, которая есть сейчас.
На ответственной команде разработки уже зарегистрировано пожелание на реализацию данной возможности в будущих версиях системы.

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