Чтобы упростить работу пользователей со справочником в режиме выбора, можно настроить сохранение последних выбранных пользователями значений.
Постановка задачи
Необходимо создать гиперссылку для заполнения списка рассылки. При нажатии на гиперссылку должно открываться представление справочника Пользователи с установленными флажками для записей, выбранных каким-либо пользователем в последний раз:
Решение
В системе DIRECTUM при открытии справочника в режиме выбора колонка с флажками отображается по умолчанию.
Предыдущие значения выбора хранятся в детальном разделе набора данных. При установке или снятии флажков каким-либо пользователем значения в детальном разделе пересохраняются.
В вычислениях действия гиперссылки нужно написать приведенный ниже программный код.
Программный код
DELIMITER = '|'
// Получить список ИД пользователей, которые ранее были отмечены флажками.
SelectedRecordIDList = ''
UserDetail = Object.DetailDataSet(1)
UserDetail.First
while not UserDetail.EOF
SelectedRecordIDList = AddSubString(UserDetail.Requisites('UserT').ValueID; SelectedRecordIDList; DELIMITER)
UserDetail.Next
endwhile
// Открыть справочник «Пользователи».
UserReference = CreateReference('ПОЛ')
UserReference.Open
ListForm = UserReference.ComponentForm
View = UserReference.View
// Открыть представление в режиме выбора нескольких записей.
View.ViewMode = vmSelect
View.MultiSelection = TRUE
// Установить флажки для записей по ИД.
foreach RecordID in CSubString(SelectedRecordIDList; DELIMITER)
View.SelectRecordByID(RecordID)
endforeach
ListForm.Show
if ListForm.Result = mrOK
// Очистить таблицу.
while UserDetail.RecordCount > 0
UserDetail.First
UserDetail.Delete
endwhile
// Перебрать выбранные записи и пересохранить их в детальном разделе.
SelectedRecordCount = View.SelectedRecordCount
Index = 0
while Index < SelectedRecordCount
UserID = View.SelectedRecordsID(Index)
UserDetail.Append
UserDetail.UserT = ServiceFactory.GetUserByID(UserID).Code
Index = Index + 1
endwhile
endif
Как разработать для веб-доступа
C помощью клиентского API веб-доступа можно отобразить список записей справочника, но установить флажки по умолчанию не получится:
WA.CMP.dialogs.ReferenceGridDialog.createAndShow({referenceName:'ТМТ'})
.selectionDone(function(res){
// Преобразовать полученный результат в массив ИД.
var idList = res.map(function(item) {
return item.id;
});
// Сформировать и вывести сообщение пользователю.
alert(format("IDs = {0}\nRecordCount = {1}", idList.join(','), res.length));
});
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |