Добрый день! Подскажите, пожалуйста, следующий момент. Как сделать так, чтобы при добавлении контактов и контрагентов в деталь "Команда" раздела "Инцидент", информация о инциденте появилась в соответсвующей детали карточек "Контрагент" и "Контакт". Попытался сделать на примере "Карьера контакта", но только еще сильнее запутался. Спасибо.
Нравится
если не ошибаюсь, то данные на детали "Инциденты" контактов и контрагентов не хранятся в отдельной таблице а берутся из таблицы инцидентов и фильтруются по полю "Контакт" или "Контрагент" соответственно, поэтому Вам нужно создать в сервисе sq_Incident еще по одному нубору фильтров, где через или будут ставиться условия равенства по полю контакт/контрагент и exists select id from Команда с where c.ContactID = ... and c.IncidentID = tbl_Incodent.ID, включать эти фильтры только при обновлении деталей инцидентов в разделах
аналогичный фильтр есть в sq_Task, называется ContactID, там идет сравнение по полю "Контакт", "Ответственный" и детали команда, то есть при его включении для выбранного контакта будут отображаться задачи, в которых он был ответственным, был указан в поле "Контакт" или присутствовал на детали "Команда"
на примере раздела "Контакты"
в скрипте 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();