Подскажите, пожалуйста, как сделать фильтры по аналогии с "показывать для контакта" на вкладке "задачи" окна wnd_MsOutlookSynchronization
Нравится
Добрый день!
Добавить легко, но не в этом ведь дело. Предполагаю, что Вы хотите, чтобы этот фильтр еще и работал.
Это сделать нельзя, поскольку синхронизация возможна только с соединенной конфигурацией для текущего пользователя.
Добрый день!
Спасибо за отклик.
Что Вы подразумеваете под "с соединенной конфигурацией для текущего пользователя"?
Нужно добавить фильтры "тип задачи", "статус задачи" и "дата создания". Эти фильтры влияют лишь на список задач, которые будут импортироваться в аутлук, на сам процесс экспорта они вроде бы не влияют. Интересует, где именно происходит фильтрация.
Имелась в виду часть, отвечающая за выбор групп в Outlook. Если Вы подразумеваете фильтры по данным в Terrasoft, то это, в принципе, реализуемо. Все что надо - получить необходимый dataset, и наложить на него ApplyDatasetFilter (звучит легче, чем это есть на самом деле). Удачи :smile:
В том-то и беда, что фильтровать нужно mds_MSOutlookTaskTS, а mds как-то по хитрому фильтруется. к тому же, не могу пока отследить, где именно происходить фильтрация по контактам.
Добрый день! Да, в таком случае это будет посложнее, но Вы можете попробовать это сделать следующим образом (приблизительный алгоритм):
Для набора данных установить свойство IsFiltered в true (пример функции из базовой конфигурации):
function SetIsFiltered(Dataset, IsFiltered) { if (IsFiltered) { Dataset.IsFiltered = false; Dataset.IsFiltered = true; } else { Dataset.IsFiltered = false; } }
У датасета есть свойство OnDatasetFilterRecord, на которое следует обратить внимание:
Пример его использования можно посмотреть в скрипте wnd_MethodListScript
function dlDataOnDatasetFilterRecord(Dataset, DoAccept) { var FunctionName = Dataset.ValAsStr('FunctionName').toUpperCase(); var FilterValue = edtFilterValue.Value.toUpperCase(); DoAccept.Value = (FunctionName.indexOf(FilterValue) != -1); }
Спасибо за ответы! Удалось разобраться самостоятельно. Если вкратце,то нужно было изменить следующие сервисы и функции:
a) Два фильтра сравнения в sq_Task: TaskTypeID и TaskStatusID
b) Фильтры на окне – обработчик событий OnChange в скрипте scr_MsOutlookSynchronization
c) FilteredItemDataset(IsChecked) в том же скрипте
d) function FilterDatasetByGroup(GroupDataset, MemoryDataset, IsContactSync, IsTaskSync, FilteredDate, OwnerID, TaskTypeID, TaskStatusID) в скрипте scr_MSOutlookSynchronizationUtils
e) function SetItemMemoryDataset(Dataset, MemoryDataset, IsContact, FilteredDate, OwnerID, TaskTypeID, TaskStatusID) в том же скрипте
То есть из обработчиков фильтров на окне через атрибуты объекта передаются значения фильтров в функцию SetItemMemoryDataset, а там уже фильтруется датасет задач и заполняется mds.