Задаю довольно таки распространенный вопрос, как ни странно, я не нашел подобной темы. Допустим есть поле статус, при его изменении должно автозаполняться другое поле - дата(возможно текстовое или даже справочник). И сразу усложню задание, изменения должны вступить в силу когда поле статус меняет одно конкретное значение в другое(например из "В работе" в "Выполнено").
BPMonline 7.x
Заранее спасибо.
А по скольку Вы говорите про статусы "В работе", "Выполнено" могу предположить что речь идет про карточку активности, а в ней уже есть, если посмотреть исходный код, в родительских схемах, атрибут:
В котором задан метод "onStatusChanged" на изменение данной колонки, и метод этот уже написан, достаточно его переопределить, и дописать недостающей логики.
К примеру:
define("ActivityPageV2", ["ActivityPageV2Resources", "GeneralDetails"],
function(resources, GeneralDetails){return{
entitySchemaName:"Activity",
details:/**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff:/**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
attributes:{"StatusValue":{
dataValueType:this.Terrasoft.DataValueType.TEXT}},
methods:{
onEntityInitialized: function(){this.callParent(arguments);
var statusValue =this.get("Status");this.set("StatusValue", statusValue);},
onStatusChanged: function(){this.callParent(arguments);
var oldStatus =this.get("StatusValue");
var statusValue =this.get("Status");
console.log("был: "+ oldStatus.displayValue+", стал: "+ statusValue.displayValue);// тут любая логика проверки, и установкиif(oldStatus.displayValue==="Не начата"&& statusValue.displayValue==="В работе"){this.set("DetailedResult", "Взята в работу");}this.set("StatusValue", statusValue);}},
rules:{},
userCode:{}};});
"Щиголь Максим" написал:А по скольку Вы говорите про статусы "В работе", "Выполнено" могу предположить что речь идет про карточку активности
Это карточка заказа, нужно поставить дату окончания(текущую дату) в определенное поле когда статус стает определенным значением. Не знаю как это работает но у меня выбивает ошибку, с помощью вывода данных в консоль определил что выбивает на
подумал раз это поле то и тип должен быть не DataValueType.TEXT а DataValueType.LOOKUP, но ничего не помогло, этот код: var statusValue = this.get("Status"); срабатывает(вывожу в консоль данные из statusValue)
Получилось, поменял местами немного, написал так:
this.set("StatusValue", statusValue.displayValue);
а в остальных местах пользовался просто statusValue и oldStatus