Речь о базовом процессе или о каком-то вашем кастомном? Если о кастомном, то нужно, как минимум, посмотреть на него. Можете выложить схему или скриншоты здесь, или обратится для анализа в техническую поддержку на адрес support@terrasoft.ru
Кастомный. Там все просто и тривиально, читаем обращение если оно соответсвует фильтру, то измени его.
Грубо говоря.
старт процесса добавлена запись. Далее читаем добавленное обращение, читаем сервис (который в обращении проставлен), читаем сервисных инженеров (которые в сервисе), и изменяем обращение (устанавливаем группу ответсвенных). Все до жути просто и тривиально
А процесс вообще запускается? Поля, на основании которых должна быть установлена группа ответственных Сервис и сервисный договор заполнены в обращении? С какой ошибкой падает процесс (в логе можно посмотреть)? На каком элементе останавливается?
Добрый день, коллеги! Назрел вопрос: при эскалации назначаем обращение на группу ответственных, эскалируем и автоматически переходим в реестр записей раздела. Группу ответственных мы видим: https://yadi.sk/d/jsQwYbwB3Jcnqa Но когда мы снова переходим в данную запись, то видим, что колонка не заполнена: https://yadi.sk/d/jlqjBIdV3Jcnyr Если нажмем Отмена, то колонка заполнится автоматически тем значением, которое мы указали: https://yadi.sk/d/3LQigNM83JcoA8
"Варфоломеев Данила" написал:
Голикова Елена Евгеньевна пишет:
Что за баг такой, и как его побороть?
Похоже, что какая-то логика перетирает значение поля при открытии карточки? Это коробочная версия bpm service?
На страницы обращений и эскалации добавляли еще свою логику. Например, для страницы эскалации добавляли скрипт для фильтрации значений справочника при выборе группы ответственных. Могло ли это повлиять на работу?
"Голикова Елена Евгеньевна" написал:Могло ли это повлиять на работу?
Точно не могу сказать, но скорее всего фильтрация ни при чём. Я бы посмотрел что приходит в метод setParametersInfo после эскалации (если он вообще используется).
По-умолчанию после эскалации выкидывает в карточку, а не в реестр записей, так что видимо там более крутые доработки)
Здравствуйте, подскажите пожалуйста, при фильтрации задач по контакту, отображаются задачи, где данный контакт является ответственным, а необходимо также отображать все групповые задачи,где указана группа ответственных в которую входит данный контакт. Как это можно реализовать?
Доброго дня! Подскажите пожалуйста, необходимо сделать выборку по групповым задачам.
Начал делать по аналогии с выборкой по "Ответственному"
Добавил Lookup Control, сделал линк на датасет "Группа контактов". Вот только теперь при выборе группы контактов никакие задачи не отображаются. Что я сделал не так? Или может я что то не доделал?
Заранее спасибо
вы внимательно проанализируйте как происходит Инициализация и фильтрация раздела По контакту и вам все станет ясно. Одним добавлением DatasetLink-om там не обойдешься. Плюс прошу описать какая у вас платформа и конфигурация. Чтобы вам подсказать. Если уже будет сложно разобраться как происходит стандартная фильтрация. Я готов вам по полочкам разложить рассказать как это все работает.
Дмитрий, в скрипте той страницы, куда добавляли лукапное поле, посмотрите, как сделано наложение фильтра по ответственному (из уже существующего поля). Вероятно, Вам надо будет сделать аналогично, написав похожий код для группы. Если уже написали код и при фильтрации исчезли все записи, значит нужно проверять, что не так в наложенном фильтре.
Lookup поле работает. Я могу выбрать группу контактов.
Видимо дело в чек боксе. Поскольку после нажатия задачи не фильтруются.
Вот обработчик чек-бокса для фильтрации по "Ответственному"
function chbShowForContactOnClick(Control){if((!IsEmptyValue(edtTaskOwner.Value)||!Control.IsChecked)&&
BaseWorkspace.WasShowed&&(!TasksWorkspace.NoRefresh)){
TasksWorkspace.TaskOwnerIsChanged=true;
RefreshTasks();}}
Подскажите пожалуйста как мне адаптировать этот код для моего чекбокса (
часть логики находится в другом месте. Поищите в этом и во всех скриптах, где происходит считывание этого значения. Возможно, для группы надо будет аналогично.
Создаете свою функцию, в которой будет включаться/отключаться фильтр. Затем вызываете созданную Вами функцию, из функции ApplyTasksWorkspaceFilter.
Пример:
function MyTaskFilter(){
var Dataset = BaseWorkspace.GridDataset;
var MyFilterName ='MyFilter';
var Value = edtMyLookup.Value;if(!IsEmptyValue(Value)){
ApplyDatasetFilter(Dataset, MyFilterName, Value, true);}else{
EnableDatasetFilters(Dataset, false, MyFilterName);}}
function ApplyTasksWorkspaceFilter(){
var Dataset = BaseWorkspace.GridDataset;
ApplyStandardWorkspaceFilter();
var Grid = BaseWorkspace.Grid;
var IsCycleView =(Grid.ActiveView.Name=='dgvCycleTasks')&&!(pcData.ActivePage.Name== pgScheduler.Name)
EnableDatasetFilters(Dataset, IsCycleView, 'IsCycle');if((chbShowForPeriod.IsChecked)||(pcData.ActivePage.Name== pgScheduler.Name)){
var FromDate =
TasksWorkspace.DatePeriodMemoryDataset.ValAsDateTime('From');
var ToDate = TasksWorkspace.DatePeriodMemoryDataset.ValAsDateTime('To');
ApplyTaskDateFilter(Dataset, FromDate, ToDate);if(TasksWorkspace.SchedulerWindow== null){
TasksWorkspace.SchedulerWindow= wndSchedulerArea.Window;}
SetScheduleAreaTimePeriod(FromDate, ToDate);}
ApplyDatasetGroupIDFilter(BaseWorkspace.GroupsDataset, Dataset);
ApplyContactFilter();
MyTaskFilter();}
......
function edtMyLookupOnChange(LookupControl){
RefreshTasks();}
Сделал фильтр по примеру, теперь при выборе группы ответственных в поле выдает ошибку "Исключение брошено и не поймано"
В чем может быть причина? подскажите пожалуйста
У Вас исключение происходит скорее всего в функции ApplyContactGroupFilter.
Необходимо установить debugger в ApplyContactGroupFilter.
Пример кода:
function MyTaskFilter(){
debugger;
var Dataset = BaseWorkspace.GridDataset;
var MyFilterName ='MyFilter';
var Value = edtMyLookup.Value;if(!IsEmptyValue(Value)){
ApplyDatasetFilter(Dataset, MyFilterName, Value, true);}else{
EnableDatasetFilters(Dataset, false, MyFilterName);}}
После чего отладит код, проверяя каждый объект на содержание значения с провалом в функции (горячая клавиша F11)
Одна задача выполнена, но появилась новая проблема...
После фильтрации, при нажатии на "Группу ответственных" в колонке, выдает ошибку: "Не удается найти карточку редактирования для выбранного элемента". А поскольку помимо фильтрации по групповым задачам необходима фильтрация по каждому ответственному, который входит в эту группу, хочу спросить как можно ли реализовать открытие карточки "Группа ответственных"?
(По такому принципу: отфильтровал по группе, посмотрел кто входит в группу, отфильтровал по ответственному №1, №2...)
Если пройдетесь по коду конфигурации, то сможете найти как это реализовано для других колонок.
Советую обратить внимание на источник данных (Dataset) раздела, а также использовать Microsoft Visual Studio для изучения алгоритма работы приложения.
А не подскажете какие изменения нужно добавить в фильтре, если мне необходимо отобразить задачи не только пользователя, но также задачи всех групп, в которые входит этот пользователь?
Или это вообще не в фильтре нужно делать?
Добрый день, подскажите пожалуйста... Если при создании задачи выбираю группу ответственных, во вкладке "Все задачи" группа не отображается.
Как это можно исправить?
Заранее спасибо
Если это поле в карточке редактирования задачи, тогда нужно проверить есть ли оно в списке скрытых колонок. Если в списке скрытых колонок его нет, тогда Вы можете добавить его в грид задачи в TSAdmin.
Если это поле не в карточке редактирования задачи, тогда уточните, пожалуйста, где Вы выбираете группу ответственных(покажите скриншот).
Спасибо, удалось добавить колонку.
В моем случае, в карточке редактирования задачи, если выбирается поле "Ответственный" , то поле "Группа ответственных" становится недоступным и наоборот.
Хотелось бы чтобы все отображалось в одной колонке (выбрал ответственного, в гриде в колонке "Ответственный" отобразился ответственный. Выбрал группу ответственных, в гриде в колонке "Ответственный" отобразилась группа ответственных), можно ли это реализовать?
Дмитрий, можно добавить (в tbl, sq, ds и страницу реестра) третью колонку, текстовую.
И при изменении ответственного или группы заполнять это поле нужным названием или именем.
Логику заполнения можно реализовать как на триггере, так и на датасете или карточке.
Ещё вариант реализации — добавить в сервис sq колонку типа Custom SQL, где будет кусок SQL-кода, получающий то или другое значение при помощи оператора CASE. Затем добавить такую же колонку в ds и страницу реестра. Но тут нужно проверять, будет ли такое работать корректно, поскольку у этих полей есть свои ограничения, может не работать фильтрация.