Собственно, сабж. Картинкой будет более понятно, с пояснениями:

 

1) Добавляем активность используя выборку объектов, предположим неких кастомных "эмейлов" (отдельный объект, не активность) 

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

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

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

Спасибо.

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

Роман, зарегистрировали идею в элементе БП «Добавить данные» при выборе значения в поле добавляемого объекта из пункта меню 'Колонка из выборки' дать возможность выбрать колонки других объектов по связям. Спасибо за предложение.

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

Решал ли кто-то задачу смена типа результата активности? Поделитесь опытом.

Это цвет покраски кнопок результатов активности в задачах по БП.

Нравится

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

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

 В коде зашиты только эти три цвета и это касается задач созданных через элемент Выполнить задачу в БП

Литвинко Павел,

это прозрачно.Может можешь подсказать где зашито?

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

Если у Вас в разделе «Активности» создана новая пользовательская страница (например, «Визит»), то для поля «Результат» значения в выпадающем списке будут отсутствовать (Рис. 1).


Рис. 1

Для того, чтобы в поле «Результат» был выпадающий список со значениями, необходимо, чтобы в данном поле присутствовали значения результата.
Т.е. нужно перейти в справочник «Результаты активностей по категориям» и для необходимых значений добавить соответствующую категорию (например, «Визит») (Рис. 2).


Рис. 2

В результате выбор доступных значений для пользовательской страницы будут отображаться (Рис. 3).


Рис. 3

Нравится

Поделиться

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

Добрый день.

Давно я не задавал здесь вопросов и сам ничего не отвечал. :smile:

Есть проблема следующего рода:

Стандартный элемент бизнес-процесса "Вопрос пользователю" очень не удобен, когда пользователь должен дать простой ответ "Да/Нет" на какой-то вопрос. В связи с этим сделал отдельное окно с двумя кнопками, которое запускается после очередного шага в процессе. А вот дальше двигается с огромным трудом. Кнопки реагируют на нажатие хорошо если один раз из 10. То есть нажимаем на кнопку "Нет", но ничего не происходит. Нажимаем много раз подряд и каким-то чудом при одном из кликов процесс продвигается вперед в нужно направлении.

На обработчик нажатия кнопок уже каких только процедур не вешал. Сейчас они выглядят примерно вот так:

System.ProcessMessages();
NotifyObject = Self.Attributes('NotifyObject');
if (Assigned(NotifyObject)) {  
        NotifyObject.Notify(Self, MSG_OK, null);               
}
return true;

Пробовал также вместо return true; ставить Self.ModalResult = wmrCancel;, и пробовал еще просто Self.Close();.

Видимо где-то я не до конца понял, как уведомить процесс о том, что нажата та или иная кнопка. Как это правильно нужно делать?

И еще одно замечание, перед появлением этого окна происходит отправка уведомления через почту (может это как-то влияет).

Нравится

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

Добрый день!
я так понимаю, что все манипуляции связаны с тем, что что-то из базового функционала работает не так как хочется.
Предлагаю, все таки, работать с коробочными элементами, а не придумывать свои из-за проблем с работой коробки.
Давайте разберемся, что именно не работает и почему не срабатывает "вопрос пользователю".
Опишите немного подробней сам процесс.

Так же, укажите версию продукта и продукт.

Добрый день, Сергей.

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

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

"Sergey Karpenko" написал:Предлагаю, все таки, работать с коробочными элементами, а не придумывать свои из-за проблем с работой коробки.

Коробочные универсальные элементы далеко не всегда являются самыми удобными с точки зрения пользовательского интерфейса. И когда встают вопросы влияния интерфейса на скорость работы приходится изобретать велосипеды. Тут уж ничего не поделаешь. :smile:

Продукт: Terrasoft CRM 3.4.1.119

Если не сложно, предоставьте, пожалуйста весь код, какие обработчики для wa_ ......

Вот так выглядит кусочек бизнес-процесса, относящийся к запуску этой формы:

Это настройки элементы в бизнес-процессе:

А вот все, что есть в скрипте этого окна:

//-----------------------------------------------------------------------------
// wnd_OpenForm2ConfirmScript
//-----------------------------------------------------------------------------
 
var NotifyObject;	
 
function btnYesOnClick(Control) {
	Log.Write(2, "Yes click.");
//	var NotifyObject = Self.Attributes('NotifyObject');
	System.ProcessMessages();
	if (Assigned(NotifyObject)) {	
		NotifyObject.Notify(Self, MSG_OK, null);		
		Log.Write(2, "MSG_OK.");
	}
	Log.Write(2, "Before close OK.");
	return true;
//	Self.ModalResult = wmrOK;		
//	Self.Close();
}
 
function btnNoOnClick(Control) {
	Log.Write(2, "No click.");
//	var NotifyObject = Self.Attributes('NotifyObject');	
	System.ProcessMessages();
	if (Assigned(NotifyObject)) {
		Log.Write(2, "MSG_CLOSE.");
		NotifyObject.Notify(Self, MSG_CLOSE, null);
	}	
	Log.Write(2, "Before close Cancel.");	
	return false;
//	Self.ModalResult = wmrCancel;		
//	Self.Close();
}
 
function wnd_OpenForm2ConfirmOnPrepare(Window) {
        Log.Write(2, "OnPrepare");
	NotifyObject = Self.Attributes('NotifyObject');	
}
 
function wnd_OpenForm2ConfirmOnCloseQuery(Window, CanClose) {
	CanClose.Value = true;
}

То что закомментировано - это мы попытки по разному реализовать обработчики.

Неужели так и нет информации? Может кто-нибудь хотя бы скажет где и что почитать по этому поводу?

Здравствуйте, Алексей.

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

Можем только посоветовать делать с дебагером по аналогии с другими wa..

Я не совсем понял, почему нужно делать новый workflow action, если уже есть "Открыть окно". Мне по сути и нужно открыть окно, а потом продолжить процесс в зависимости от того, нажали ли в открытом окне "ОК" или "Отмена" (то что на кнопках надписи другие - это не важно).
Разница-то только в том, что я не какое-то стандартное окно использую, а собранное мной с нуля.

Алексей,

Необходимо использовать wa, так как обработка возврата результата происходит в нем. wa открывает окно, окно получает результат нажатия кнопки, записывает себе в атрибуты, wa читает атрибуты открытого им окна и продолжает процесс в зависимости от полученного значения. В скрипте окна Вам необходимо реализовать возврат значения используя атрибуты этого окна (переданные при открытии окна из wa). Так, как это реализовано, например, в окне wnd_Decision:

По нажатию на ОК происходит вызов функции CheckResult, в теле которой отстраивается набор вариантов для выбора и собирается массив с результатом. Вам необходимо в результат записать просто свое значение. Затем, происходит вызов функции ProcessClose, в теле которой массив с результатами собирается в строку разделенную ";" и происходит толчок процесса ID которого взят из атрибутов.

В конце концов разобрался. Выкладываю решение здесь.

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

Для того, чтобы все заработало нужно было либо снять галочку "Запретить закрытие окна без сохранения/выбора", либо при инициализации окна прописать вот это:

SetAttribute(Self, 'DisableClose', false);

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

var NotifyObject;	
 
function btnYesOnClick(Control) {
	System.ProcessMessages();
	if (Assigned(NotifyObject)) {	
		NotifyObject.Notify(Self, MSG_OK, null);		
	}
}
 
function btnNoOnClick(Control) {
	System.ProcessMessages();
	if (Assigned(NotifyObject)) {
		NotifyObject.Notify(Self, MSG_CLOSE, null);
	}	
}
 
function wnd_OpenForm2ConfirmOnPrepare(Window) {
	NotifyObject = Self.Attributes('NotifyObject');	
}
 
function wnd_OpenForm2ConfirmOnCloseQuery(Window, CanClose) {
	CanClose.Value = true;
}

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

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

Бизнес-процесс Sale по умолчанию, пытаюсь выполнить шаг (первый шаг - задача первый звонок)
Ставлю тип "исходящий звонок", состояние выполнена, а результат нельзя выбрать (пусто), поэтому шаг не выполняется. В базе по умолчанию все работает, в своей базе у меня изменены только справочники (тип в задачах). Причем если в своей базе делать задачу с такими же параметрами (исходящий звонок, состояние выполнена), то результат там отображается, то есть в справочниках у меня все сопоставлено правильно. Получается надо будет править Workflow Diagramm для своих справочников? Если да, то что именно подправить?

Нравится

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

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

Да, уже разобрался. Понял, что лучше создать свой бизнес-процесс с нуля, благо workflow diagramm хорошо мне понятна

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