Вопрос

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

Доброго времени суток, коллеги.
Есть перечень Сервисов, упакованных в Сервисные договора. Создаём Инцидент, выбираем Контрагента - автоматически подставляется соответствующий основной Сервисный договор. Далее выбираем Сервис из списка доступных согласно Пакета сервисов в данном Сервисном договоре. И вот тут мне нужно автоматически выставить нужный Тип инцидента. Условно говоря, в моём бизнес-процессе Тип инцидента - это группировка Сервисов по сути: 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');

Войдите или зарегистрируйтесь, чтобы комментировать