Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Установка флажков по умолчанию для записей справочника в режиме выбора

Чтобы упростить работу пользователей со справочником в режиме выбора, можно настроить сохранение последних выбранных пользователями значений.

Постановка задачи

Необходимо создать гиперссылку для заполнения списка рассылки. При нажатии на гиперссылку должно открываться представление справочника Пользователи с установленными флажками для записей, выбранных каким-либо пользователем в последний раз:

Щелкните для увеличения изображения

Решение

В системе 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
.navbar > a:hover { background: #FFD73B; }