Вопрос

У меня запускается некоторый БП, в котором почти на старте открывается страница на редактирование, соответственно там создается задача с заголовком, который я прописываю.

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

Я пытался сделать это по задаче, но она никак не ссылается на страницу/объект редактирования. 

Как быть?

У меня такой же вопрос

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

БП запускается как по сигналу по какому то действию оператора?

Самое простое решение перед открытием окна менять статус задачи (как вариант добавить в объект какой то признак Передан в работу) И не запускать (или завершать) БП у которых этот признак установлен.

Те

старовый сигнал

проверка что признак не установен

и либо выход

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

БП запускается как по сигналу по какому то действию оператора?

Самое простое решение перед открытием окна менять статус задачи (как вариант добавить в объект какой то признак Передан в работу) И не запускать (или завершать) БП у которых этот признак установлен.

Те

старовый сигнал

проверка что признак не установен

и либо выход

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

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

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

Можно, но очень не советую вам на них завязыватся. Они активно изменяются от версии к версии.

Добрый день, как отметил Григорий лучше иметь признак запуска процесса, но вы можете просматривать текущие задачи по процессам они отображаются у клиента из таблицы  SysProcessElementToDo или через js найти и распарсить элемент(если он есть) такого типа там вшит id записи к которой относится страница редактирования id="ProcessDashboardSchemaNotificationContainer-cce9076d-fa47-49a3-bec5-e53450fc421b-ViewModule_RightSideBarModule_ProcessDashboardModule"

В начале БП свяжите процесс с записью. И затем можно искать такие связи

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

Есть желание, чтобы при проставлении статуса Активности "Завершена", автоматически проставлялся Результат - первый доступный для данной категории активности, у которого (у результата) категория Успех.

Как лучше это сделать, чтобы не выбирать все результаты запросом и не фильтровать их самому?

У меня такой же вопрос

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

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

Зверев Александр,

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

Знаете как, в обычном выпадающем списке вы в коде пишите comboBox.SelectedIndex = 0 и у вас выбирается первый элемент.

Есть ли аналогичный способ сделать это в ВРМ? Сейчас я отфильтровываю нужный результат для данной категории активности с категорией успех и при изменении статуса на "завершена" прописываю его, но это какое-то не красивое решение.

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

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

Всем привет!

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

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

Какой метод отвечает за обработку пунктов меню "задача", "звонок", "email".

Так же вопрос,  как можно скрыть данную кнопку с этой страницы?

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

Может есть какой-то обработчик отвечающий за видимость этой кнопки?

У меня такой же вопрос

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

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

Кнопку можно изменить и скрыть. Например, убрать/скрыть кнопку можно так - в замещающей схеме в разделе diff написать 

{
	"operation": "remove",
	"name": "addActions"
}

Или же переопределить метод getQuickAddButtonVisible. Методы обработчики на пункты меню добавляются в методе initQuickAddMenuItems из миксина QuickAddMixin.

Для того что бы определить это я сделал следующее: открыл консоль разработчика (F12), на нужном элементе на странице нажал правую кнопку мыши, выбрал Inspect. У меня открылась вкладка Elements и выделилась строка с нужным элементом. После префикса «ActivityPageV2» я увидел название элемента «addActions». Далее в глобальном поиске(Ctrl-shift-f) я запустил поиск. Нашел ссылку на BasePageV2. Увидел diff данного «флажка», а также интересные методы «QuickAddMenuItems» и «getQuickAddButtonVisible». Нашел данные методы, поставил точки останова, перегрузил страницу, и далее с помощью клавиш F10 и F11 проследил цепочку вызовов.

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

 Добрый день!

Возникла необходимость указания значений кастомных колонок при создании активности элементом "Выполнить задачу". Нужно, чтобы сразу при открытии пользователю карточки этой активности там уже были нужные значения в пользовательских колонках (На основе их будет приниматься решение о состоянии активности). Как я понял, пользовательскими средствами это сделать нельзя, нужно использовать мини-сценарий "После сохранения активности" в расширенном режиме. После этого я столкнулся с проблемой, которую описывает Михаил в посте https://community.terrasoft.ru/questions/vypolnit-zadacu-i-dobavit-dann… то есть ограниченность контекста выполнения этого скрипта. На данный момент у меня не получается заставить работать даже простой

 

var userConnection = Get<UserConnection>("UserConnection");

Потому как "Get" не существует в данном контексте. Мне же хотелось использовать параметры процесса и запросы в базу в этом сценарии. По совету Михаила передал в текстовом виде параметр процесса в Переменную "Контекст выполнения" элемента, но не понимаю на данном этапе, как получить из него значение в сценарии и распарсить в GUID.

Подскажите, пожалуйста, кто побеждал эту проблему, как работать с ESQ, переменными самого элемента "Выполнить задачу" и параметрами процесса в сценарии "После сохранения активности"? 

У меня такой же вопрос

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

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

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

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

Логвин Андрей Витальевич,

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

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

Андронов Олег Алексеевич,

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

Но если Вы всё же хотите именно в рамках сценария После сохранения Активности, то алгоритм примерно следующий:

Создать параметр процесса, заполнить, передать его в Контекст выполнения в Выполнить задачу, а в сценарии обращаться напрямую к параметру:

var TitleFromExecutionContext = ExecutionContext;//Здесь в ExecutionContext передали ранее параметр процесса
var update = new Update(UserConnection, "Activity")
        .Set("Title", Column.Parameter(TitleFromExecutionContext)).
        Where("Id").IsEqual(Column.Parameter(CurrentActivityId));
        update.Execute();

 

Удачи в реализации.

Андронов Олег Алексеевич,

Доброго дня, скажите, получилось ли решить Вашу задачу? Каким способом?
У меня сейчас такая же, и это совсем беда))

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

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

Есть кастомный раздел "Каталог услуг".

Есть БП, в котором ставится Активность "Согласовать Каталог услуг" как в этой Активности указать связь с "Каталогом услуг" по аналогии с "контактами" "контрагентами" и т.д.

Какие объекты нужно заместить?

В какие из замещенных объектов нужно изменить?

и что нужно изменить?

У меня такой же вопрос

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

Евгений, здравствуйте.

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

- добавить элемент Добавить данные, объект = Активность, для созданного поля заполнить Каталог услуг

- с помощью элемента Открыть страницу редактирования для существующей записи открыть созданную запись.

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

Логвин Андрей Витальевич,

Спасибо, понимаю, что решение рабочее.

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

Евгений.,

По поводу миникраточки - для этого необходимо замещать карточку ActivityMiniPage, выводя на нее созданное поле.
Информацию можно по работе с миникарточкой можно найти на Академии.
По второму вопросу - исходящие потоки с условием на результат Активности можно добавить только в рамках элемента Выполнить задачу.
Для того, чтобы в этом элементе отображалась колонка (в блоке Связи), необходимо в БД явно указать связь. Реализация рассматривалась на community.
Запись связи вносится в таблицу entityConnection, где SysEntitySchemaUid - uid объекта Активности (можно определить в sysschema по колонке name),
ColumnUid - uid кастомной колонки в объекта Активности (например, можно найти в метаданных объекта).

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

Войдите или зарегистрируйтесь, чтобы комментировать
Идея

Было бы хорошо отметку о напоминаниях автору и ответственному вынести в мини-карточку Активности, так как это одна из основных функций, которую заполняют при создании задач

Одобрена
1 комментарий

Здравствуйте, Владимир!

 

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

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

Добрый день, подскажите, можно ли сделать так, чтобы логическое "Отображать в расписании" всегда было выбрано при создании новой активности. Но и была возможность убрать галочку.

У меня такой же вопрос

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

Алёна, самый простой способ (если не прибегать к использованию кода):

Создать бизнес-процесс, который при создании активности(стартовый сигнал) будет устанавливать "галочку" в поле "Отобразить в расписании".

Это, собственно, вариант по-быстрому)

А почему не сделать замещающий объект и там поставить значение по умолчанию?

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

спасибо, попробую

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

Добрый день!

В бизнес-процессах есть возможность создавать активности с помощью элемента "Выполнить задачу" или "Добавить данные" в объект Activity

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

Спасибо!

У меня такой же вопрос

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

Добрый день!
Существенные различия между этими двумя методами создания активности, которые заметила наша команда, были как визуальные так и на уровне работы с колонками самой активности.

1. Визуальные.
При создании задачи через элемент "Выполнить задачу" мы можем четко ограничивать пользователя в выборе предоставляемых результатов завершения активности. При использовании элемента "Добавить данные" при данном кейсе придётся на уровне схемы подменять фильтрацию поля результат, что по факту трудоёмко и необходимо вводить дополнительные флаги к активности, мол, что это за активность открыта и какие результаты нужно в ней показывать, что в свою очередь не применяется для схем миникарточек активности.
Т.е. допустим вы добавили 3 новых варианта, привязали их к категории выполнить и типу Задача, если править только схему карточки Активности то в карточке всё будет гуд отображаться, но при этом в миникарточке активности станут доступны все нововведенные результаты.
Плюс при использовании Выполнить задачу вы ограничиваетесь потоками выполнения в зависимости от выбранного результата, тогда как при "Добавить данные" вам необходимо под каждый тип активностей создавать отдельный БП по обработке результатов активности.

2. При работе с данными колонок Активности и сторонними параметрами БП.
При создании через добавить данные у вас не возникнет проблем с заполнением какой-то кастомной колонки и set'е туда значения из параметра БП.
При создании через Выполнить задачу вы ограничены определенным набором доступных колонок, которые можно посмотреть через расширенные настройки. Если вам потребуется что-то устанавливать в нововведенные колонки значения, то в целом можно использовать С# модуль под названием "После сохранения активности" в этом же элементе. Но есть одно но, context выполнения этого кода ограничен только параметрами самого элемента Выполнить задачу, т.е. простым путём у вас не получится выполнить SetColumnValue со сторонним параметром БП, нужно будет этот сторонний параметр пробрасывать в контекст и потом парсить (если это потребуется).

Вот с чем мы столкнулись в последний месяц при работе с этими элементами.
На мой взгляд лучше всего использовать Выполнить задачу, так как даже на уровне js'a будет проще выполнять иные действия при клике на тот или иной результат, но это сугубо моё мнение.

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

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

Подскажите, пожалуйста, как можно решить такую задачу.

Есть Активность, в которой Автор и Исполнитель отличаются. Как только Исполнитель завершает задачу Автору должно выводиться уведомление (в коммуникационной панели во вкладке уведомлений) о том, что конкретная задача завершена.

Сделал бизнес-процесс, который добавляет Уведомление по сигналу изменения состояния Активности. Само уведомление в панели появляется, но счётчик не меняется.

Попробовал создать отдельного провайдера (по аналогии с DocumentNotificationProvider и ForecastNotificationProvider), но словил ошибку 400. Подозреваю, что на один раздел может быть только один провайдер уведомлений.

Получилось отловить ошибку, которая выдаётся в консоли:

Сервер обнаружил ошибку при обработке запроса. Сообщение об исключении: "Значение не может быть неопределенным.

Имя параметра: type". Дополнительные сведения см. в журналах сервера. Трассировка стека исключений:
в System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
в System.Activator.CreateInstance(Type type, Object[] args)
в Terrasoft.Configuration.RemindingsHelper.GetResult(Guid sysAdminUnitId, NotificationProviderType type, DateTime date, String methodName)
в Terrasoft.Configuration.RemindingsHelper.GetCount(Guid sysAdminUnitId, NotificationProviderType type, DateTime date)
в Terrasoft.Configuration.RemindingsHelper.GetRemindersCounter(Guid sysAdminUnitId, String dueDate)
в Terrasoft.Configuration.RemindingsHelper.GetPopupConfigResponse(Guid sysAdminUnitId, String dueDate)
в SyncInvokeGetPopupConfig(Object , Object[] , Object[] )
в System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
в System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
в System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

У меня такой же вопрос

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

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

Проверьте в таблице Reminding корректные ли добавляются записи (время отображения уведомления, прочитано или нет).

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

"Попробовал создать отдельного провайдера (по аналогии с DocumentNotificationProvider и ForecastNotificationProvider), но словил ошибку 400."
- Скорее всего могли быть допущены ошибки в созданном провайдере.
Но если уже есть базовый провайдер уведомлений по Активностям, то нет смысла создавать новый(только если хотите использовать другой тип уведомлений).

Илья, да, записи в Reminding добавляются корректно (и время и прочитано), все записи корректно отображаются на коммуникационной панели.

Запись для нового провайдера тоже добавлял.

Я как раз и хочу добавить провайдер уведомлений по Активностям с типом "Уведомления" (базовый работает с напоминаниями).

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

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

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

Добрый день, у нас возникли следующие проблемы с активностью при создании активности через БП:
- при выборе “тип сообщения” = исходящее в активности все равно выставляется входящее:

- к активности подсоединяется контакт, но в самом контакте в истории активность не отображается, но сам заголовок активности, связанной с данным контактом отображается в категории email (даже при типе и категории "задача) ":

- в разделе “Туры“ также в истории не отображаются активности, однако отображается вверху в панели “следующие шаги”:

Подскажите, пожалуйста, как можно устранить данные проблемы? :smile:

У меня такой же вопрос

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

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

Попробуйте заполнять не поле "Направление звонка", а поле "Тип сообщения". Внесите исправления в процесс.

Также создаваемые активности имеют тип "Email". Активности с типом "Email" отображаются на детали "Email", однако на детали "Активности" они не отображатся, т.к. на ней установлена фильрация по типу записи.

Войдите или зарегистрируйтесь, чтобы комментировать