Добрый день!

Автогенерируемая страница работает в фоновом режиме без возможности переключения.

При этом тех настроек которые указываются на Академии (кнопки переключения в фоновый режим) просто нет, причем в расширенном режиме таких настроек нет, и хоть в параметрах есть "Показывать страницу выполнения автоматически" в данном случае не работает. Тогда как по бизнес процессу данная страница должна открываться пользователю автоматически а не уходить в задачи по бизнес процессам. Уже все перепробовал, и пересмотрел все элементы но возможности отключить работу в фоновом режиме нигде не нашел 

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

 

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

Нравится

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

Попробуйте через элемент "привязать процесс к объекту" связать объект в котором должна отображаться автогенерируемая страница (например Продажа) и процесс. В таком случае она будет отображаться автоматом, на сколько помню

Связь в процессах делается сразу, так что это не помогает

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

А у вас процесс в фон не уходит? 

 

Виктор Корниенко,

Рекомендую проверить ещё следующее:

1. Элемент автогенерируемой страницы не должен начинаться после элемента таймера, так как элемент таймера переводит работу БП в фоновый режим.

2. Необходимо проверить работоспособность веб-сокетов, без работающих веб-сокетов страницы автоматически открываться не будут.

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

Добрый день, коллеги! Может кто-то сталкивался с подобной проблемой

 

После обновления црм 7.15 до 7.18.1.2800.

В Бизнес процессах в которых присутствует интерактив - 

"Вопрос пользователю, Открыть страницу редактирования, Автогенерируемая страница, Преднастроенная страница" на этих элементах происходит ошибка:

Значение с именем "GroupType" не найдено

 

Terrasoft.Common.ItemNotFoundException: Значение с именем "GroupType" не найдено at 
Terrasoft.Core.Entities.EntityColumnValueCollection.GetByName(String name) at 
Terrasoft.Core.Entities.Entity.GetIsColumnValueLoaded(String valueName) at 
Terrasoft.Core.Entities.EntityUtilities.SafeGetColumnValue[TValue](IEntity source, String 
columnValueName, TValue defaultValue) at 
Terrasoft.Core.Process.SysProcessElementToDoListener.OnElementNotificationChanged(Object sender, 
EntityAfterEventArgs eventArgs, EntityChangeType entityChangeType) at 
Terrasoft.Common.CollectionUtilities.ForEach[T](IEnumerable`1 source, Action`1 action) at 
Terrasoft.Core.Entities.Entity.OnInserted(EntityAfterEventArgs e) at Terrasoft.Core.Entities.Entity.
<InsertToDBAsync>d__302.MoveNext() --- End of stack trace from previous location where exception was
 thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at 
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at
 Terrasoft.Core.Entities.Entity.InsertToDB(Boolean skipLookupColumnValues, Boolean validateRequired)
 at Terrasoft.Core.Entities.Entity.<InternalSaveAsync>d__288.MoveNext() --- End of stack trace from 
previous location where exception was thrown --- at 
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at 
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at
 Terrasoft.Core.Entities.Entity.InternalSave(Boolean validateRequired, Boolean setColumnDefValue) at 
Terrasoft.Core.Entities.Entity.<SaveAsync>d__300.MoveNext() --- End of stack trace from previous location
 where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at Terrasoft.Core.Entities.Entity.Save(Boolean validateRequired, Boolean setColumnDefValue) at 
Terrasoft.Core.Process.ProcessNotificationManager.Create(ProcessElementNotification notification) at 
Terrasoft.Core.Process.CommonProcessUtilities.ExecuteAndPublishDurationMetric(ProcessActivity 
source, Action action, String operationName) at Terrasoft.Core.Process.ProcessActivity.
<PublishNotification>b__111_0() at Terrasoft.Core.Process.ProcessActivity.RunInCultureScope(Action 
action) at Terrasoft.Core.Process.ProcessUserTask.AfterInternalExecute() at 
Terrasoft.Core.Process.ProcessActivity.ExecuteItem(ProcessExecutingContext context) at 
Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

 

Упоминание этого поля есть в:

\Terrasoft.WebApp\bin\Terrasoft.Core.xml

\Terrasoft.WebApp\DesktopBin\WorkspaceConsole\Terrasoft.Core.xml

В версии 7.17 таких ошибок не было.

Нравится

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

как вариант процесс или отдельные его элементы нужно пересоздать, возможно поможет.



Также, думаю, имеет смысл через Workspase Console провести генерацию и сборку

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

Алексей Клещевников,

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



 

Аскар Абильгазин, создавал бизнес процесс такого вида - ошибка по-прежнему появляется 

Аскар Абильгазин,

Алексей Клещевников,

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



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

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

Добрый день! В бизнес-процессе есть элемент "Автогенерируемая страница". Необходимо при нажатии кнопки "Открыть" перейти по ссылке. Подскажите, пожалуйста, где прописать код обработки данной кнопки?

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

Нравится

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

Вам нужно после элемента Автогенерируемая  страница добавить элемент ИЛИ и в исходящих из него потока выбрать какую кнопку обрабатывать. Соответственно, для кнопки Отмена нужно отправить на элемент Задание-сценарий и там написать обработчик, который вам требуется. Пример, на скрине

Вам нужно после элемента Автогенерируемая  страница добавить элемент ИЛИ и в исходящих из него потока выбрать какую кнопку обрабатывать. Соответственно, для кнопки Отмена нужно отправить на элемент Задание-сценарий и там написать обработчик, который вам требуется. Пример, на скрине

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

Добрый день! Обновили систему с очень старой версии, точнее 7.12 => 7.17. В одном из разделов были бизнес процессы, один использовал автогенерируемую страницу, а другой преднастроенную. До обновления при их срабатывании они автоматически отображались пользователю поверх других страниц. После обновления же такое поведение больше не наблюдается. Кто-нибудь сталкивался с подобным? Как это удалось решить?

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

Нравится

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

Добрый день.

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

Вам необходимо в первую очередь пошагово пройти по статье:

https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

 

Самый простой способ проверить что вебсокеты настроены корректно описан тамже:

"В консоли разработчика веб-браузера введите команду Terrasoft.ServerChannel.ping(). При корректной настройке вебсокетов сервер ответит pong. При любом другом ответе сервера необходимо проверить правильность настройки вебсокетов."

 

 

Добрый день.

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

Вам необходимо в первую очередь пошагово пройти по статье:

https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

 

Самый простой способ проверить что вебсокеты настроены корректно описан тамже:

"В консоли разработчика веб-браузера введите команду Terrasoft.ServerChannel.ping(). При корректной настройке вебсокетов сервер ответит pong. При любом другом ответе сервера необходимо проверить правильность настройки вебсокетов."

 

 

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

Terrasoft.ServerChannel.ping() - это работает. Как я понял, проблема возникает, когда процесс работает в фоне. 

Бершеда Д. Н.,

Значит ранее БП не работали в фоне, в любом случае для элементов выполняющихся в фоне поведение когда они не всплывают пользователю - корректно.

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

Добрый день!

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

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

Так что думал решить этот момент за счет автогенерируемой страницы.

Один нюанс - логика должна отрабатывать до сохранения записи в разделе.

Нравится

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

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

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

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

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

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

Доброе время суток !



Вопрос:

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



Задача:

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

Это нужно сделать в бизнес-процессе, т.е отобразить пользователю страницу для ввода.



Клиентской схемы я так понимаю нет у Автогенерируемой страницы, да ?



Примечание:

(использовать Автогенерируемую страницу не обязательно)

Нравится

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

Ну не используй автогенерируемую страничку используй стандартный элемент БП "Открыть страницу редактирования".

Ну не используй автогенерируемую страничку используй стандартный элемент БП "Открыть страницу редактирования".

Григорий Чех,

использовал элемент [Преднастроенная страница], там так можно

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

Есть в БП автогенерируемая страница, за которой идет завершение. 

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

Нравится

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

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

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

нажал закрыть или закрыл окно

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

Но если вы используете элементы "Открыть страницу редактирования" или "Открыть преднастроенную страницу", то в данном случае на пользователя создается Активность, а так же появляется специальный вариант, кнопка "Выполнить позже" (обуславливающая напоминание пользователю).

Как вариант решения кейса - заменить автогенерируемую страницу - преднастроенной.

Зарицкий Олег,

Значит в этой базовой схеме "баг" - ее логика не правильная. Как разработчику ее исправить? Или как построить БП, так чтобы обойти этот момент?

Может, как-то можно поймать сигнал, что БП показал страницу? И по этому сигналу завершить БП?

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

можно перед автогенерируемой страницей параллельную пустить ветку с таймером в 1 минуту.

Вне зависимости от того, что пользователь выберет на странице (и выберет ли что-то вообще), процесс будет завершен.

Севостьянов Илья Сергеевич пишет:

Как вариант решения кейса - заменить автогенерируемую страницу - преднастроенной.

Таким образом пользователь получит Активность и сможет выполнить ее позже... 

1) Преднастроеная страница - сразу после открытия, элемент считается выполненным и БП двигается дальше

2) Страница редактирования - присутствует специальная настройка

можно задать условие - всегда выполняющееся.

БП - двинется дальше после любого пользовательского действия с карточкой: "Сохранить" / "Закрыть" / "Отмена"

Как-то так...



У Вас кейс какой: Вам необходимо чтобы пользователь что-то сделал, и только потом БП продолжился, или вне зависимости от этого ?

Демьяник Алексей пишет:

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

А если этот пользователь сейчас не в системе? И когда он появится в системе, то БП уже завершится, и он не увидит страницу 

Демьяник Алексей,Спасибо!

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

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

Насколько проблематично задать фильтр определенному лукапу на автогенерируемой странице? Кто сталкивался с такой проблемой может подсказать в каком направлении копать или может есть небольшие наработки на этот план?

Нравится

Поделиться

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

Отказался от автогенерируемых страниц в пользу преднастроенных страниц

Добрый день!

Базовые схемы (в том числе и схемы элементов БП) недоступны для редактирования.

Для подобных задач используйте преднастроенную страницу.

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

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

В рамках реализации процессов и создания автогенерируемых страниц по процессу появилась необходимость использования правил, типа BusinessRuleModule. Можете подсказать каким образом можно реализовать данные требования?

1) Закрытие полей на редактирование на автогенерируемой странице
2) Использования фильтра в справочном поле (Выбор сотрудника из раздела Физ. лица, но только из тех, у кого есть определенные роли в системе)

С уважением,
Дмитрий

Нравится

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

Добрый день!

Элемент [Автогенерируемая страница] недоступен для редактирования, т.е. настроить бизнес-правила не получится.
Для решения задачи используйте [Преднастроенная страница]. Тут вы можете настроить все необходимые правила/фильтры.

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

Всем привет.

Используется BPMonline Bank Sales Версия 7.5.0.1275
Возникает проблема с параметром процесса типа Коллекция. Диаграмма процесса приложена.

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

System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: Значение индекса находится вне допустимого диапазона значений
   at Terrasoft.Core.Entities.EntityCollection.FindNodeByIndex(Int32 index)
   at Terrasoft.Core.Process.BirthdayQuery.ScriptTask2Execute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

Индекс при этом равен 1. То есть, от коллекции, похоже, осталась только одна запись.

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

Код сценария Выборка данных у кого ДР

        var esqBirthdays = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Contact");
        contactIdFieldName = esqBirthdays.AddColumn("Id").Name;
        esqBirthdays.AddColumn("GivenName");
        esqBirthdays.AddColumn("MiddleName");
               
        esqBirthdays.IsDistinct = true;
                       
        //Получение сегодняшней даты
         today = DateTime.Today;
       
        var esqMacrosTypeMonth = EntitySchemaQueryMacrosType.Month;
        var esqFilterByMonth = esqBirthdays.CreateFilter(FilterComparisonType.Equal, "BirthDate", esqMacrosTypeMonth, today.Month);
        esqBirthdays.Filters.Add(esqFilterByMonth);
               
        var esqMacrosTypeDay = EntitySchemaQueryMacrosType.DayOfMonth;
        var esqFilterByDayToday = esqBirthdays.CreateFilter(FilterComparisonType.Equal, "BirthDate", esqMacrosTypeDay, today.Day);
        esqBirthdays.Filters.Add(esqFilterByDayToday);
       
        //Есть моб тел?
        var esqFilterWithMobilePhone = esqBirthdays.CreateFilterWithParameters(FilterComparisonType.Equal, "[ContactCommunication:Contact].CommunicationType", new Guid("F039972E-470E-457F-9B77-65054B3534B0"));
        esqBirthdays.Filters.Add(esqFilterWithMobilePhone);
       
        //Выполнение запроса и получение результирующей коллекции
        entitiesBD = esqBirthdays.GetEntityCollection(UserConnection);
    numberOfentitiesBDInCollection = entitiesBD.Count;
        currentIndexBD = 0;
        esqSqlText = esqBirthdays.GetSelectQuery(UserConnection).GetSqlText();
               
        return true;

Код сценария Формирования текста СМС и номера

        Entity element = entitiesBD[currentIndexBD];
        Guid contactID = element.GetTypedColumnValueGuid>(contactIdFieldName);
    string contactName = element.GetTypedColumnValuestring>("GivenName");
        string contactMiddleName = element.GetTypedColumnValuestring>("MiddleName");
        string BirthDateText = DateTime.Today.ToString("dd MMMM");
        string messageText = "Дорогой(ая) "+contactName+"! Росинбанк поздравляет Вас с Днем Рождения "+BirthDateText+"  и желает Вам всех благ! Росинбанк";
        if(contactMiddleName!=null) messageText = "Дорогой(ая) "+contactName+" "+contactMiddleName+"! Росинбанк поздравляет Вас с Днем Рождения "+BirthDateText+"  и желает Вам всех благ! Росинбанк";
        SMSTextBD = messageText;
       
        var contactComm = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "ContactCommunication");
        var contacctNumberFieldName = contactComm.AddColumn("Number").Name;
       
        var esqFilter1 = contactComm.CreateFilterWithParameters(FilterComparisonType.Equal, "Contact", contactID);
        contactComm.Filters.Add(esqFilter1);
       
        var esqFilter2 = contactComm.CreateFilterWithParameters(FilterComparisonType.Equal, "CommunicationType", new Guid("F039972E-470E-457F-9B77-65054B3534B0"));
        contactComm.Filters.Add(esqFilter2);
       
        var mobilePhoneCollection = contactComm.GetEntityCollection(UserConnection);
        if(mobilePhoneCollection.Count>0)
        {
        phoneNumberBD = mobilePhoneCollection[0].GetTypedColumnValuestring>(contacctNumberFieldName);
        } else
        {
        phoneNumberBD = "No number";
        }
       
        //var SMSObject = new SendSMSClass(SMSServiceAddress);
        //SMSObject.SendSMS(phoneNumber, messageText);

return true;   
csharp>

Нравится

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

Добрый день!
Попробуйте выполнять проверку и автоинкремент индекса в элементе “Задание сценарий”. Например,

if(IndexBD < entitiesBD.Count){
...
IndexBD++;
} else {
...
}
return true;

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