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

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

Нравится

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

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

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

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

на примере раздела "Контакты"
в скрипте scr_ContactsWorkspace есть функция

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');
}

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

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();

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

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