Я столкнулся с проблемой, что подпроцесс, который я вызываю из основного бизнес процесса не запускает вообще никаких элементов.
Дело было так: У меня есть основной процесс, который вызывает веб сервис и обрабатывает ответ. Я настроил метод для веб сервиса. Настроил обработку ответа с помощью инструмента "Быстрая настройка" и передаю параметры, которые получил от веб сервиса подпроцессу.

Изначально всё работало как часы. Подпроцесс запускался и обрабатывал параметры.
Далее мне потребовалось добавить ещё один  параметр в "Обработку ответа" для метода веб сервиса. Изначально я руками создал параметр и настроил его. Пусть к элементу (JSONpath) я указал верный!
Далее я перешёл в основной процесс и увидел, что только что добавленный параметр я не могу выбрать, потому что блок веб сервиса его попросту не имеет. Я пошёл обратно к веб сервису, удалил параметр и создал его уже с помощью инструмента "Быстрая настройка". Перешёл в бп и наконец-то увидел нужный мне параметр.
Далее я поставил этот параметр в подпроцесс и тут всё сломалось.
После сохранения и запуска подпроцесс запускается, ему ставиться состояние "Выполняется", но даже первый элемент процесса не запускается. В журнале процессов у него нет данных об элементов процесса, чего не может быть впринцыпе.
Я подумал что всё дело в "Задании-сценари" в моём подпроцессе. Я удалил его и сохранил. По непонятной мне причине подпроцесс начал работать.
Но возникла другая проблема с вызовом веб сервиса.

Мой веб сервис обращается к телеграм api с помощью метода "getUpdates", параметры ответа которого я обрабатываю в моём веб сервисе.
Если раньше ответ от нажатия на inline нопки в телеграмме я получал и всё работало прекрасно, то теперь, возникала ошибка:

Terrasoft.Common.UnsupportedTypeException: Тип "System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" не поддерживается

С этого момента я попробовал поменять работу с передаваемыми параметрами, но ничего не помогло. После я заново переопределил параметры ответа для параметра в веб сервисе, но после этого подпроцесс вновь перестал запускаться. Я пробовал с 0 создавать мои 2 процесса, но это не помогло. Что делать в такой ситуаци?

Нравится

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

Добрый день.

Данная ошибка может быть связана с некорректной обработкой массива параметров в ответе (Result) веб сервиса.
Попробуйте убрать масив параметров из ответа  веб сервиса.

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

Добрый день.

 

раньше создавал обычные пакеты для проектов, в которых после создания обьекта генерировались соответствующие обьекты в проекте Terrasoft.Configuration (Autogenerated\Src папка). Таким образом можно было удобно их использовать в своих целях при написании c# кода.

все что начинается на QSoft... это были наши обьекты.

Но в новом проекте я использовал опцию  Компилировать в отдельную библиотеку и теперь нету этих исходников. как я понял вы рекомендуете использовать эту опцию и создавать все проекты как библиотеки.

Поддерживается ли генерация исходников в таком случае? Где их найти? может необходимо теперь делать ссылку на библиотеку?

 

Спасибо

Нравится

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

Добрый день!
Если не ошибаюсь, вы говорите о механизме пакета-сборки.

В таком случае файлы пакета будут находиться по пути \Terrasoft.WebApp\Terrasoft.Configuration\Pkg\[Имя пакета].
В любом случае используйте поиск по папкам находясь внутри Terrasoft.Configuration на необходимые вам исходники дабы точно определить их местоположение.

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

Добрый день, интересует следующий вопрос - надо ли добавлять файлы из Files/obj/ папки в пакет? И стоит ли их коммитить в Git?

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

 

Спасибо!

Нравится

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

Добрый день.

Все верно, файлы из Files/obj/ временные и их можно удалить.

Добрый день.

Все верно, файлы из Files/obj/ временные и их можно удалить.

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

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

 

Ищу информацию о системной настройке "Order of first/last names".

Несколько вопросов:

1. Данная настройка отражает:

  • как будет заполнено значение в колонке полного имени (Name) контакта,
  • как будут заполнены колонки Surname, GivenName и MiddleName,
  • действительны оба пункта?

2. При изменении настройки на паттерн, не включающий Middle Name, каким будет значение Name для записей, у которых не пустое значение в колонке Middle name?

 

Заранее благодарю за ответ!

Нравится

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

Добрый день!

 

Да. Оба пункта действительны. При изменении Last name или Middle name или First name, изменяется поле Full name и наоборот. 

 

Логика разделения ФИО контакта на Surname GivenName MiddleName настривается системной настройкой ContactFieldConverter, выбором необходимого с# конвертера, которые находятся в таблице ShowNamesBy.

 

В базовой функциональности существуют два конвертера First name [Middle name] Last name и Last name, First name [Middle name]. 

Оба шаблона включают Middle Name.

 

Указанные поля заполняются автоматически на основании данных, которые внесены в поле ФИО, с учетом разделителей. В качестве разделителя система распознает пробел и . , ;


Для заполнения по умолчанию используется конструкция "Фамилия, Имя и Отчество" и разделяется на "Имя" и "Фамилия" согласно формата ФИО (Фамилия Имя Отчество).

 

Правило, которое установлено в системной настройке ContactFieldConverter будет распространятся на новые или редактируемые контакты.

 

 

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

Доброго дня. 
Турбує відсутність дистрибутивів версії 8.0.5 та 8.0.6. 

По перше там наявне новий функціонал якій потрібен при розробці.

По друге як буде проходити оновлення наших клієнтів, які запускаються зараз на 8.0.4? Одразу на реліз який буде доступний для завантаження  с пропуском 8.0.5 та 8.0.6 (якщо буде доступний тільки 8.0.7, наприклад)?

 

Нравится

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

Доброго дня,

Дистрибутиви для версії 8.0.5 доступні, отримати ви їх можете звернувшись до підтримки.

Оновлення повинно бути покрокове (не відрізняється від оновлень до 8.0.4.)

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

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

необходимо создать след функционал - при изменении Sender counterparty должно устанавливаться значение в колонках Sender City & Sender door. при это при изменении поля Sender City надо фильтровать список Sender door по городу. Я сделал правила для:

- установки значения города

- установки значения двери

- фильтрации Sender door лукапа в зависимости от поля Sender City.

но сейчас получается так, что значение в Sender door пустое при изменении Sender counterparty. я подозреваю что влияет правило фильтрации по городу. при отключении его значение ставится, но это не устраивает, нужна фильтрация.

как решить такую проблему?

Нравится

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

Добрый день!

 

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

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

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

а есть ли на текущий момент решение которое поможет с помощью джаваскрипт кода решить данную проблему? пускай оно будет только для этого случая, но для нас этого хватит.

спасибо за ответ!

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

Добрый день!

Есть задача: привязать условие определения родительского инцидента/обращения не к цепочке в хэдере, а к значению в теме письма. Не могу разобраться в том, в какой момент срабатывает логика, заполняющая CaseId у активности типа email (или соответственно ConversationId в EmailMessageData, т.к. насколько я вижу это связанные факторы и в дальнейшем именно на ConversationId построено разграничение связанных и не связанных email).
Где она запускается и можно ли как-то написать класс-расширение который переопределил бы эти методы?
Заранее спасибо!

Нравится

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

Добрый день,

 

Логика проверки активности на привязку к существующему обращению или создания нового обращения находится в бизнес процессе "IncidentRegistrationFromEmailProcess" (который запускается после каждой завершенной сессии синхронизации писем в системе). В элементе скрипт-таск процесса вызывается метод RegisterIncidentFromEmail, который в конце выполнения делает вызов:

 

result = helper.GetRegisterIncidentId(activityId);

 

helper - это класс IncidentRegistrationFromEmaillHelper.

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

 

Поэтому, если нужно изменить логику, нужно смотреть в сторону замещения метода GetRegisterIncidentId внутри IncidentRegistrationFromEmaillHelper и прописывать свою кастомную логику там.

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

Добрый день.

Есть необходимость скрывать кнопку "+" (кнопка добавления записи) на детали, в зависимости от того, на какой странице она находится.

1.На странице контакта, кнопки "+" никогда не должно быть.

2. На странице заявки, кнопки "+" никогда не должно быть.

3. На преднастроенной странице БП, кнопка должна отображаться, в зависимости от наличия записи в этой детали, по определенным типам и т.д.

Реализовали следующую логику:

На схеме детали создано сообщение, которое срабатывает на Init. Передаем сообщение с параметрами. В ответ получаем:

1. Если открываем страницу контакта, то там срабатывает подписка и всегда передаем false

2. Если открываем страницу заявки, то там срабатывает подписка и всегда передаем false

3. Если открываем преднастроенную страницу, срабатывает подписка, дальше срабатывает функция которая делает проверку наличия записей в таблице детали, с определенными параметрами, и если запись есть передаем false если записей нету передаем true

 

Вроде все работает. Но заметили, что если сначала открыть страницу Контакта или Заявки, а потом открыть преднастроенную страницу, то подписка на преднастроенной странице не отрабатывает, а отрабатывает именно Контакт (либо заявка), и соответсвеноо получаем false. 

Т.е. при ините странице контакта, срабатывает подписка, которая "висит" и отвечает постоянно отвечает всем подряд.

 

Можно ли как-то отменять подписку, после "ухода" со страницы? Именно ухода, не по нажатию кнопки закрыть (я так понимаю тут можно пойти через destroy) ? 

 

Или есть какие-то еще варианты?

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

Нравится

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

А мы просто делаем 2 разные схемы детали на одном объекте. Одна с "+", другая без него (а ещё без Copy, Import и т.п.)

И используем на странице ту, которая нужна

Владимир Соколов,

Да, тоже пришли в итоге к этом варианту. Но думали немного "покопать" в сторону универсального решения)

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

Добрый день,

 

для локальной разработки я использую докер версию креатио 7.18.5. Хочу обновить до 8.0, но такого образа нету в Вашем докер хабе - https://hub.docker.com/r/creatio/creatio/tags .

Вы планируете добавлять докер образы для 8 версии продукта? Если нет, тогда для разработки использовать только полностью локальную среду или клауд?

 

Спасибо!

Нравится

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

Добрый день,

 

Новые версии не будут добавлены в публичный Docker Hub. 

 

 

Команда сейчас работает над  внутренним Docker Hub и вскоре добавит возможность предоставлять образы версий продукта.

 

 

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

Спасибо за ответ, сейчас я использую докер приложения чтоб понимать креатио и все зависимости. Это удобно тем, что можно сделать несколько окружений которые не зависят друг от друга никак. С локальным окружением(установка сайта в iis) это будет сложнее, да и в целом процедура настройки приложения в иис сложнее чем в докере (так и не получилось). Минус клауд решения в том что медленное и сложно ориентироваться в сгенерированном коде, а это экономит время. 

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

Добрый день,

 

появилась необходимость в проект подключить АПИ гугла чтоб получать данные, но возникла проблема - получаю вот такую ошибку

System.IO.FileLoadException: Could not load file or assembly 'Google.Apis, Version=1.57.0.0, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Google.Apis, Version=1.57.0.0, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab' ---> System.IO.FileLoadException: The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Весь свой код я собираю в библиотеку, которую потом добавляю как внешнюю сборку в пакет. В итоге в моей пакете моя либа + либы гугла. К этой либе подключена гугл библиотека с версией указанной в ошибке - 1.57.0 . Если я работаю локально, то проблем нету и все загружается, несмотря на то, что у меня локальная версия креатио 7.18.5, в ней лежит библиотека Google.Apis 1.37.0.0.

я так же попробовал обновить проект до 1.37.0.0 и загрузить ее на демосайт креатио 8 версии, это не сработало.

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

 

Нравится

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

Добрый день!

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

И тут два варианта:

1) Обращаться в поддержку дабы по возможности обновить уже имеющуюся библиотеку

2) В вашей сборке использовать туже версию библиотеки, что уже присутствует в приложении.

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