Добрый день.
В настройках BPMOnline CRM + SD есть значения по умолчанию. Например, значение статуса запроса на обслуживания.
Сделал настройку DefaultUrgencyOfServiceCall - значение срочности запроса на обслуживание и сделал значение "Средняя" из справочника "Срочность обслуживания". Как теперь эту настройку привязать к необходимому полю "Срочность" в карточки запроса на обслуживание?
Спасибо.
Нравится
В карточке запроса на обслуживание (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), найти там колонку Срочность. В свойствах найти "Значение по умолчанию". Выбрать установить из настройки и выбрать вашу настройку. После этого опубликовать объект
Извините, но надеюсь последний вопрос:
в "Значении по умолчанию" не могу найти ту настройку, которую создал. Нужно ли ее как-то связывать или еще какие-то манипуляции делать?
Если руками вписывать, не выбирая, то карточка редактирования запрос на обслуживания не открывается )
Для того, чтобы она была доступна для выбора, нужно, чтобы её тип соответствовал типу колонки, для которой вы хотите применить её
В нашем случае это значит, что системная настройка должна быть типа справочник (что вы и указали в первом посте). Я сделал также и настройка доступна для выбора (можно увидеть в прикрепленном файле)
Можете попробовать перезайти в систему, но у меня все стало доступно сразу