Вопрос:

Пользователю дали права только на Чтение \ Создание.  Редактирование и удаление в настройках прав - пусто.

При этом, у пользователя появляются права на редактирование и удаление.

Пример: справочник Звонки.

Как запретить?

Ответ:

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

Для того, чтоб изменить данную логику, можно создать бизнес-процесс, который будет забирать права у автора и/или ответственного после создания записи. Стартовый сигнал у процесса сделать "Добавление записи", объект - Звонок, следующие элементы - "Читать данные" из записи, по которой отработал стартовый сигнал (условие по id), поля "Создал" и "Ответственный" и "Изменить права доступа". 

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

https://academy.terrasoft.ru/documents/technic-bpms/7-12/nachalnyy-signal

https://academy.terrasoft.ru/documents/technic-bpms/7-12/element-processa-chitat-dannye

https://academy.terrasoft.ru/documents/technic-bpms/7-12/element-processa-izmenit-prava-dostupa

Также ограничить права для удаления и изменения записей для автора и ответственного можно не прибегая к реализации процесса. Для этого необходимо включить в настройках прав на объект «Звонок» администрирование по операциям, а на вкладке «Доступ к объекту» убрать права на изменение и удаление.

 

Нравится

Поделиться

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

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

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

Реальный, частый кейс:

Пользователю открывается задача по БП с текстом: "Оформите счет и договор по заказу", в системе есть 2 стандартных бп, которые это делают, но, когда пользователь прямо из задачи по ссылке переходит к заказу и через действия пытается это сделать, ничего не происходит (он так думает), но на самом деле процессы то запускаются, просто в фоне...

Очень хотелось бы иметь возможность в конструкторе бп установить признак для процесса "Запускать поверх других процессов". В данном случае у пользователя запускался процесс создание счета и договора.

Нравится

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

А если и у второго процесса галка стоит, что делать? Ещё одну настройку добавлять, «Запускать поверх вообще всех процессов»?

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

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

Нет, достаточно одной галки, она будет означать, что этот процесс начинается поверх любого другого. Вопрос не в ходе процесса, а в его начале-старте.

Вы не поняли сути проблемы. Проблема заключается в том, что человеку ставится задача, создать заказ из продажи или создать счет из заказа и ему удобнее прямо из задачи перейти в продажу или заказ и нажать кнопку, которая запустит другой процесс, процесс создания заказа или счета. Ему неудобно нажимать сохранить (в задаче), ждать когда его вернет система на последнюю карточку, открывать расписание, находить задачу, переходить по ссылке и нажимать на кнопку создать заказа или счет. Прочувствуйте разницу во времени, предложите альтернативу. Какие тут изменения в процессе, нам нужно запустить бп, чтобы он не в фоне начался.

П.С. Я не говорю про вариант подвязывания скрипта для кнопки создания продажи или счета.

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

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

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

Уважаемый Александр!

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

Простейший кейс: У вас в бп 2 задачи, всего 2 задачи. Выполнятся бп начал при изменении статуса продажи, соответственно перед Вами открылась карточка задачи. В задаче написано: "Александр, дорогой, пожалуйста, создай счет к заказу, который связан с продажей". В задаче, естественно, есть связь с заказом.

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

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

А то, что вы говорите вообще никак не решает ситуацию, ведь эти страницы и есть часть бп, которые никогда не всплывет, пока активен другой бп.

Добрый день, Д. В таком случае попробуйте прямо в этом БП сделать не 2 блока, а 6, при этом вторые 2 будут связаны с заказом, а третьи 2 — со счётом. Если пользователь будет идти по процессу, ему не нужно будет ни вручную создавать счёт, ни нажимать дополнительные кнопки в карточках, а карточка нового счёта  с уже заполненными полями связи с продажей и заказом автоматически появится при сохранении заказа в соответствии с логикой процесса. Дополнительную информацию пользователю, что от него хочет в этот момент система, можно показывать как раз в автогенерируемых страницах.

Коллеги, если есть возможность создать такой признак (стартовать бп поверх запущенного), это будет супер.

Спасибо.

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

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

Коллеги всем доброго времени суток. Нужна Ваша помощь.

В БП есть элемент Web-сервис в  котором есть массив - http://prntscr.com/kyim63.

Данный массив объектов состоит из двух полей Number и Description - http://prntscr.com/kyimnk

Данные поля необходимо заполнять по следующему правилу из двух выборок - http://prntscr.com/kyin8y

Правила заполнения реализовал следующим образом через тернальные выражения в формуле поля - http://prntscr.com/kyio17http://prntscr.com/kyioa3

Но при отработке элемента Web-сервис видим что массив Communications пустой - http://prntscr.com/kyip7z

Если же посмотреть на данные трассировки двух элементов из которых должна осуществляться выборка видим:

Идем в "Читать Контакты СТО в платформе" - http://prntscr.com/kyiq70 здесь по нулям следовательно логике должно брать значение из другого элемента, идем в "Читать Основной контакт Контрагента" - http://prntscr.com/kyir2v, здесь данные есть, вопрос почему не заполнились в веб-сервисе?

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

Нравится

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

Нужно ещё больше ссылок на prntscr.com.angry

В 7.12 поддержка работы с веб-сервисами из БП только появилась. В 7.13 обещают усовершенствовать, улучшить работу в том числе и с массивами. Есть смысл дождаться релиза и переделать с учётом его возможностей.

Показать все комментарии
Идея
Обсуждение

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

Было бы не плохо реализовать возможность интерполяции строк в формулах БП.

например: http://prntscr.com/kt1dor

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

Это как? Хотите вычислить среднее арифметическое между фамилией и отчеством?

Мотков Илья,

Формула: 

http://prntscr.com/kt1q3j

В данном параметре формируем имя из Фамилии Имени и Отчества (это как для примера) сейчас используется Композитное форматирование (http://prntscr.com/kt1rie) При использовании интерполяции строк запись сокращается меньше вероятность запутаться в параметрах подстановки.

А причём тут интерполяция?

Понятно, оказывается, есть и такая интерполяция. Появилась с С# 6. Передал информацию.

 

Благодарю.

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

Коллеги, всем привет!

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

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

Есть ли какие-то варианты решения данной проблемы, чтобы поле активировалось автоматически?

Спасибо!

Нравится

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

Видимо, механизмы импорта и интеграции работают не через ESQ, а по Select. Поэтому, при смене значения поля сигнала нет и БП не запускается.

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

Зверев Александр, спасибо! 

Уже разобрались, поменяли БП на создание вместо изменения

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

Вопрос

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

Ответ

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

1. Перейти в дизайнер кейсов и добавить подпроцесс (см. скриншот_1). Более подробно функционал элемента "Подпроцесс" описан на Академии: https://academy.terrasoft.ru/documents/technic-bpms/7-12/element-keysa-podprocess

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

2. В БП добавить элемент «Вопрос пользователю», и добавить варианты ответов. После чего добавить условные потоки с привязкой ответа. Более подробно функционал элемента "Условные потоки" описан на Академии:https://academy.terrasoft.ru/documents/technic-bpms/7-12/uslovnyy-potok



3. Добавить элемент "Изменить данные", где указать изменение состояние нужного объекта подпроцесс (см. скриншот_2). Более подробно функционал элемента "Изменить данные" описан на Академии: https://academy.terrasoft.ru/documents/technic-bpms/7-12/element-processa-izmenit-dannye

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

 

Нравится

Поделиться

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

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

В web-клиенте реализован бизнес-процесс. Как обеспечить запуск данного процесса в мобильном клиенте?

Нравится

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

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

Бизнес процессы запускаются и выполняются на сервере, а не на клиенте. А запустить БП из мобилки можно попробовать при помощи ProcessEngineService.svc - это сервис, который позволяет запускать БП сторонним приложениям. По ссылке статья в Академии по этому сервису.

https://academy.terrasoft.ru/documents/technic-sdk/7-12/web-servis-proc…

Вызвать сервис из мобильного приложения можно так вызвать:

Terrasoft.AuthService.login({
    name: Terrasoft.CurrentUserInfo.login,
    password: Terrasoft.CurrentUserInfo.password,
    success: function () {
 
        Ext.Ajax.request({
            method: "POST",
            url: Terrasoft.CurrentUserInfo.serverUrl + '/0/rest/ServiceName/MethodName',
            scope: this,
            jsonData: { 
                // Параметры. Названия такие же, как и названия параметров в методе сервиса.
            },
            success: this.onRequestSuccess,
            failure: this.onRequestFailure
        });
    },
    failure: function (e) {
        Terrasoft.Mask.hide();
        Terrasoft.MessageBox.showMessage("Не удалось выполнить авторизацию.");
    },
    scope: this
});

 

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

7.11

Товарищи нужна помощь.

Поле в карточке имеет тип boolean(checkbox)

В бизнес процессе это поле является условием перехода.

Само условие выглядит так:

![#Данные лида.Первый элемент результирующей коллекции.Взять лид из ПВО в работу#]

Т.е если не фига не нажато(false), идем дальше.

Но условие не работает.

 

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

 

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

 

Нравится

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

[#Данные лида.Первый элемент результирующей коллекции.Взять лид из ПВО в работу#] == false

И сейчас в голову пришла еще идея: проверить, заполняется ли по-умолчанию колонка "Взять лид из ПВО в работу" значением false (без этого, к примеру, в дет. с ред. реестром происходит жесть. по крайней мере в версии 7.12.0. спс тому, кто догадался validate прикрутить на сохранение ряда).

[#Данные лида.Первый элемент результирующей коллекции.Взять лид из ПВО в работу#] == false

И сейчас в голову пришла еще идея: проверить, заполняется ли по-умолчанию колонка "Взять лид из ПВО в работу" значением false (без этого, к примеру, в дет. с ред. реестром происходит жесть. по крайней мере в версии 7.12.0. спс тому, кто догадался validate прикрутить на сохранение ряда).

Добрый день, Роман!



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

Попробуйте использовать элемент процесса "Читать данные" параметр процесса (см. скриншоты).

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

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

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

Может я что-то не так делаю?

Нравится

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

Я обычно переношу БП, ПКМ (по схеме бп)-> сгенерировать для выбранных, потом компилирую для изменённых. Вроде срабатывает

Варфоломеев Данила, тут скорее интересно, почему через сохранение не срабатывает компиляция? Неужели система не видит, что процесс ни разу не компилировался?

Алексей-Карягин,

¯\_(ツ)_/¯ Ну тут мои полномочия всё) Надо спрашивать разрабов ядра(?).

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

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

Вопрос - как мне перевести их в состояние отменен аналогично как если бы я нажал кнопку "Отменить выполнение" в журнале процессов?

На клиенте есть ProcessModule.services.cancelExecution(this, data, responseCallback);, есть ли аналогичное на стороне сервера?

Нравится

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

Пример из ScriptTask:

Guid id = ...

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

IProcessEngine processEngine = userConnection.ProcessEngine;

IProcessExecutor processExecutor = processEngine.ProcessExecutor;

processExecutor.CancelExecutionAsync(id);

VladKapitanchyk пишет:

CancelExecutionAsync

такой метод не найден нигде, даже в гугле. причем версия bpm 7.12.2. как он у вас работает? 

Данько Дмитрий Леонидович,

прекрасно работает даже в 7.11.2. Откопал его исходниках Террасофта.

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