Вопрос

Коллеги, привет. 

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

Хочу отфильтровать ответственного по тикету по группе ответственных. (Выбираем группу -> список ответственных уменьшается). 

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

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

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

Вашу задачу можно решить не только с помощью бизнес-правил.

Например, в базовой версии фильтрация поля 'Ответственный' настраивается через атрибуты таким образом:

"Owner": {
	"dataValueType": Terrasoft.DataValueType.LOOKUP,
	"lookupListConfig": {"filter": BaseFiltersGenerateModule.OwnerFilter}
}

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

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

Начните с просмотра этой статьи. В ней несколько ссылок на более подробное описание различных моментов связаных с БП. Так же просмотрите  статью СТРУКТУРА КЛИЕНТСКОЙ СХЕМЫ

 

 

 

Вашу задачу можно решить не только с помощью бизнес-правил.

Например, в базовой версии фильтрация поля 'Ответственный' настраивается через атрибуты таким образом:

"Owner": {
	"dataValueType": Terrasoft.DataValueType.LOOKUP,
	"lookupListConfig": {"filter": BaseFiltersGenerateModule.OwnerFilter}
}

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

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

Алла Савельева,  требуется следующую логику: 

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

И обратное:

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

Sunrise challenge,

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

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

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

Нужно ли где-то определять BaseFiltersGenerateModule.OwnerFilter? 

Sunrise challenge,

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

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

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

Компилятор не выдаёт ошибок, схема сохраняется, при этом фильтрация не осуществляется

Sunrise challenge,

А в консоли браузера есть такие-то ошибки при выборе значения для этого поля?

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

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

Нужна ваша помощь. 

При внесении изменения в БП - "Отправка email сообщения контакту обращения", появляется ошибка. 

Правильно ли я понимаю, что нужно заместить какой-то класс? Какой, если так? 

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

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

Проводите вычисления через элемент "Задание-сценарий" 

Могли бы подсказать зачем, если процесс "из коробки" использует другой элемент? 

В новом (нынешнем) дизайнере процессов серьёзно урезали возможности формул. Если в 5.Х и ранних 7.Х там можно было написать кусочек C#-кода с вызовом функций, то сейчас — только функции из перечня в дизайнере формул.

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

Если такое условие нужно один раз  — проще скрипт, действие же удобнее при многократном использовании.

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

Т.е.: 

1) При обновлении версии приложения, БП, использующие подобные формулы, перестанут работать? 

2) Т.е. при отсутствии знаний С# аналитик решить вопрос не сможет?

1) Новый дизайнер процессов появился довольно давно. Если обновляете систему тех времён со своими доработками, нужно всё тестировать. Кстати, вспомнил, в старых версиях вообще не было элемента-формулы, произвольный код писался в условии потока.

2) Без знания C# он бы не решил и в старой версии, на Вашем скриншоте используются функции и элементы синтаксиса языка.

Также см. аналогичное обсуждение раньше.

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

Добрый день.

Хочется научиться строить пути к другим таблицам через корневую схему.

Здесь все хорошо описано, но у меня почему-то не работает.

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

Есть две таблицы.

ServiceItem и ServiceInServicePact

В ServiceItem есть колонка ITRelatedServiceId для связи со схемой ServiceInServicePact по её колонке ServiceItemId.

Нужно получить колонку Id из ServiceInServicePact

Делаю все как по примеру:

[Имя_присоединяемой_схемы:Имя_колонки_для_связи_присоединяемой_схемы:Имя_колонки_для_связи_текущей_схемы].

EntitySchemaQuery esqServiceItem = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "ServiceItem");
esqServiceItem.AddColumn("[ServiceInServicePact:ServiceItemId:ITRelatedServiceId].Id");
string esqSqlText = esqServiceItem.GetSelectQuery(UserConnection).GetSqlText(); 

И это не работает.

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

 

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

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

А что значит не работает, какая ошибка ?

Григорий Чех пишет:

Григорий Чех пишет:
ОтветитьЦитировать

 

Вот

Ругается на UserConnection, как вы его получаете? Ваш код вызывается из БП  или вєб сервиса???

По идее, если бы UserConnection было равно null, упало бы ещё на верхней строке. Нужно в отладке ещё посмотреть на значения всех упомянутых переменных, с чем что не так.

Как бы не в самой структуре запроса дело, верно была добавлена колонка «Id». Например, в схеме ExchangeEmailSyncProvider похожий запрос строят так:

var mssEntitySchemaQuery = new EntitySchemaQuery(userConnection.EntitySchemaManager, "MailboxSyncSettings");
string primaryColumnName = mssEntitySchemaQuery.AddColumn(mssEntitySchemaQuery.RootSchema.GetPrimaryColumnName()).Name;
//...
string activityRootFolderIdColumnName = mssEntitySchemaQuery.AddColumn("[ActivityFolder:Name:MailboxName].Id").Name;

 

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

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

 

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

1) На форме обращения дублируется поле "Сервисный договор", несмотря на то, что в конструкторе раздела отображается только одно 

2) Порядок полей на форме не соответствует порядку полей в конструкторе

Бизнес-правила отключил. 

Конфигурацию перекомпилировал полностью. 

Скрины вложением

Помогите понять в чём проблема ? 

 

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

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

Это может быть из-за того, что расположение полей задано в схеме кодом, слишком сложным для разбора мастером разделов. Откройте схему CasePageV2 и поищите упоминания этого поля в пакете Custom с Вашими изменениями и в других пакетах.

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

Предлагаете его переопределить?

Когда Вы меняете в мастере, оно и так переопределяется, в пакете Custom создаётся CasePageV2 с новым порядком полей. Но, видимо, в одном из пакетов выше по иерархии описано иначе и конфликтует.

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

Добрый день! 

Есть вопрос по реализации пользовательских кнопок со своими методами, на странице
редактирования для мобильного приложения .

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

Нашел старый топик, но по нему не получается вывести свои кнопки
 

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

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

См. примеры в статье и обсуждениях тут, тут и тут.

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

Добрый день! Наследуюсь от объекта Activity, далее наследуюсь уже от своей Активности .

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

Вопрос: есть ли возможность избежать такой последовательной публикации объектов?

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

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

Добрый день!
Публикацию нужно делать каждого объекта.
Но чтобы ускорить данный процесс, можно сделать для каждого объекта генерацию исходного кода, генерацию метаданных, обновление структуры БД, а потом один раз запустить компиляцию

Добрый день!
Публикацию нужно делать каждого объекта.
Но чтобы ускорить данный процесс, можно сделать для каждого объекта генерацию исходного кода, генерацию метаданных, обновление структуры БД, а потом один раз запустить компиляцию

Сидоров Александр В.,

Спасибо!

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

Добрый день!

В бизнес-процессе у меня имеется параметр типа Справочник MyEmail со значением по умолчанию и задание-сценарий. Могу ли я методом Get не выполняя esq-запроса передать в задание-сценарий в виде строки это значение по умолчанию? При прямом обращении передает только Guid справочника. Спасибо!

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

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

Михаил, Вы можете добавить элемент чтение данных и вычитать значение Name из справочника по Id и присвоить его в параметр БП в элементе формула. Потом использовать c Get.

Или же в другой параметр процесса внести значение поля Name по умолчанию и работать с ним через Get.

Нет, так как в исходном коде параметры с типом "Справочник" и "Уникальный идентификатор" имеют тип Guid. 

Михаил, Вы можете добавить элемент чтение данных и вычитать значение Name из справочника по Id и присвоить его в параметр БП в элементе формула. Потом использовать c Get.

Или же в другой параметр процесса внести значение поля Name по умолчанию и работать с ним через Get.

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

Добрый день!

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

'SysSettings' is an ambiguous reference between 'Terrasoft.Configuration.SysSettings' and 'Terrasoft.Core.Configuration.SysSettings'

Заранее спасибо!

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

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

Либо используйте псевдонимы для юзингов:

либо прописывайте полный путь при использовании системных настроек в коде:

Либо используйте псевдонимы для юзингов:

либо прописывайте полный путь при использовании системных настроек в коде:

Спасибо большое!

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

Добрый день.

 

Как можно запретить добавление/удаление файла при визировании документа. Кейс: после добавления документа на согласование, нужно запретить его удаление или добавление нового.

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

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

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

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

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

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

Это можно реализовать, настроив соответствующие права доступа, которые потом забирать, когда нужно запретить добавление или удаление.

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

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

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

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

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

Добрый день.

Существует ли возможность скрыть печатную форму до изменения значения в определенном поле объекта (например, состояние) или ограничить права на выгрузку определенной печатной формы?

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

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

Есть дополнение Printable forms filtering for bpm'online, реализующее такую фильтрацию.

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