Копировать ссылку на страницу

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

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

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

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

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

Решение

В системе 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

© 2016 Компания DIRECTUM Сообщество пользователей DIRECTUM