Технические вопросы
Разработка

Инцидент. Деталь "Команда"

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

Нравится

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

если не ошибаюсь, то данные на детали "Инциденты" контактов и контрагентов не хранятся в отдельной таблице а берутся из таблицы инцидентов и фильтруются по полю "Контакт" или "Контрагент" соответственно, поэтому Вам нужно создать в сервисе sq_Incident еще по одному нубору фильтров, где через или будут ставиться условия равенства по полю контакт/контрагент и exists select id from Команда с where c.ContactID = ... and c.IncidentID = tbl_Incodent.ID, включать эти фильтры только при обновлении деталей инцидентов в разделах

аналогичный фильтр есть в sq_Task, называется ContactID, там идет сравнение по полю "Контакт", "Ответственный" и детали команда, то есть при его включении для выбранного контакта будут отображаться задачи, в которых он был ответственным, был указан в поле "Контакт" или присутствовал на детали "Команда"

Спасибо за столь оперативный ответ! Фильтры добавил по аналогии с sq_Task, но не совсем еще разобрался с их подключениями. Поясните, пожалуйста, по-подробнеею

на примере раздела "Контакты"
в скрипте scr_ContactsWorkspace есть функция
[javascript]
function RefreshContactIncidentDetail() {
if (ContactsWorkspace.InitializeContactIncidentFlag != true) {
InitializeContactIncidentDetail();
ContactsWorkspace.InitializeContactIncidentFlag = true;
}
var ContactID = BaseWorkspace.GridDataset.ValAsGUID('ID');
if (ContactID == ContactsWorkspace.ContactIncidentOldContactID) {
return;
} else {
ContactsWorkspace.ContactIncidentOldContactID = ContactID;
}
SetAttribute(ContactsWorkspace.ContactIncidentWindow,
'ParentItemID', ContactID);
RefreshDetailData(BaseWorkspace.GridDataset, 'ID',
ContactsWorkspace.ContactIncidentDataset, 'ContactID');
}
[/javascript]
в последней строчке вызывается функция RefreshDetailData(), внутри которой накладываются фильтры и открывается датасет, то есть Вы можете заменить эту строчку на свою
[javascript]
var ChildDataset = ContactsWorkspace.ContactIncidentDataset;
if (ContactID == EmptyStr) {
ContactID = GUID_NULL;
}
if (ChildDataset.State != dstInactive) {
ChildDataset.Close();
}
EnableDatasetFilters(ChildDataset, false);
ChildDataset.SelectQuery.Parameters.ItemsByName('ContactID').Value = ContactID;
EnableDatasetFilters(ChildDataset, true, 'ContactID');
ChildDataset.Open();
[/javascript]

Большое спасибо! Все получилось

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