Вопрос

Изменение Типа Инцидента от выбранного Сервиса

Доброго времени суток, коллеги.

Есть перечень Сервисов, упакованных в Сервисные договора. Создаём Инцидент, выбираем Контрагента - автоматически подставляется соответствующий основной Сервисный договор. Далее выбираем Сервис из списка доступных согласно Пакета сервисов в данном Сервисном договоре. И вот тут мне нужно автоматически выставить нужный Тип инцидента. Условно говоря, в моём бизнес-процессе Тип инцидента - это группировка Сервисов по сути: IT, организационное, техническое и т.п. Соответственно, по Типу инцидент пойдёт в решение в разные подразделения.

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

Нравится

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

Это можно сделать либо в скрипте карточки в обработчике dlDataOnDatasetDataChange, либо в скрипте датасета на SelfOnDatasetDataChange.

Итак.

В Сервисы через штатный механизм добавил справочник Типов инцидента. Заполнил справочник.

В sq_Incident добавил поле ServiceIncidentTypeID из уже подцепленной tbl_ITService.IncidentTypeID

Прописал это поле в ds_Incident

Теперь в скрипт. Пошел по первому пути.

function dlDataOnDatasetDataChange(DataField) {

    DataChange(DataField);

    SmartLookupOnDataChange(DataField);

}

Проваливаюсь в DataChange, нахожу там обработку изменения ITServiceID

    if (Name == 'ITServiceID') {

       // получаем ID типа инцидента по сервису

        var iIncidentTypeID = Dataset.Values('ServiceIncidentTypeID');

        // меняем тип инцидента

        Dataset.Values('IncidentTypeID') =iIncidentTypeID;

        ProcessChangeITServiceID(Dataset);

        return;

    }

Не падает, но при изменении Сервиса контрол Тип инцидента оказывается пустым. На каком шаге мог ошибиться?

Попробуйте отладиться, чтобы на каждом шаге видеть значения переменных. Вообще, для получения значения tbl_ITService.IncidentTypeID проще было бы не добавлять поле в sq и ds инцидента, а воспользоваться функцией GetDatasetFieldValueByID('ds_ITService', ITServiceID, 'IncidentTypeID');

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