Значения по умолчанию

Добрый день.
В настройках BPMOnline CRM + SD есть значения по умолчанию. Например, значение статуса запроса на обслуживания.
Сделал настройку DefaultUrgencyOfServiceCall - значение срочности запроса на обслуживание и сделал значение "Средняя" из справочника "Срочность обслуживания". Как теперь эту настройку привязать к необходимому полю "Срочность" в карточки запроса на обслуживание?
Спасибо.

Нравится

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

В карточке запроса на обслуживание (wnd_...Edit), есть событие OnPrepare (это событие окна) в нем напишите следующее

function wnd_YourWindowNameEditOnPrepare(Window) {
...
edtYourControl.Value = GetSystemParameterValueEx('DefaultUrgencyOfServiceCall');
}

GetSystemParameterValueEx - Взять с сис. настроек параметр DefaultUrgencyOfServiceCall. Функция определена в scr_Utils

Спасибо, но у меня нет события OnPrepare.
Вы не путаете с Terrasoft 3.x? У меня BPMOnline.

Кажется, АльфаКрыса немного переволновалась :wink:

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

Поэтому открываем процес страницы редактирования запроса на обслуживание. Ищем событие PageLoadComplete и после вызова базового (синего конверта) добавляем свой скрипт:

if (IsNew || IsCopy) {
    var defaultStatusId = (Guid)Terrasoft.Core.Configuration.SysSettings.GetValue(UserConnection, "DefaultUrgencyOfServiceCall");
    Page.DataSource.ActiveRow.SetColumnValue("DisplayStatusId", defaultStatusId);
}

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

Надеюсь, логика понятна. Если есть ещё вопросы - спрашивайте

Спасибо.
Вот как я делал:
- открыл процесс страницы редактирования запроса на обслуживания;
- нашел событие PageLoadComplete (синий конверт)
- добавил после него элемент "задание-сценарий" и списал туда скрипт, который вы привели.
- сохранил и опубликовал. При компиляции выдал ошибку:
Terrasoft.WebApp.ServiceCallEditPageEventsProcess.ScriptTask3Execute(Terrasoft.Core.Process.ProcessExecutingContext)': not all code paths return a value

Потом, я изменил в вашем скрипте StatusId на UrgencyId, т.к. мне нужна срочно по умолчанию. Но все равно таже ошибка при компиляции.
Я что-то делаю не так?

Сергей, а поясните еще подробнее, пожалуйста:

"Чуприк Сергій Іванович" написал:
Самый простой способ (в общем случае) - откыть объект и установить значение по умолчанию.

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

Ошибка значит то, что скрипт - это функция типа bool, поэтому она должна возвращать true или false. В 99% случаев скрипт должен возвращать true, чтобы механизм работал дальше. Если возвратить false, тогда выполнение текущей ветки прекратится.

Если же срочность одинаковая (берется один Id с одной таблицы, а не просто "Средняя", но таблицы разные), тогда можно открыть объект (ServiceRequest), найти там колонку Срочность. В свойствах найти "Значение по умолчанию". Выбрать установить из настройки и выбрать вашу настройку. После этого опубликовать объект

Извините, но надеюсь последний вопрос:
в "Значении по умолчанию" не могу найти ту настройку, которую создал. Нужно ли ее как-то связывать или еще какие-то манипуляции делать?
Если руками вписывать, не выбирая, то карточка редактирования запрос на обслуживания не открывается )

Для того, чтобы она была доступна для выбора, нужно, чтобы её тип соответствовал типу колонки, для которой вы хотите применить её

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

Можете попробовать перезайти в систему, но у меня все стало доступно сразу

Спасибо, все получилось!

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