Главная » Примеры » Работа с Списком Значений |
1с 7.7 [1] | 1c 8.x [0] |
В разделе примеров: 1 Показано примеров: 1-1 |
Чтобы сохранить настройку реквизита диалога СписокЗначений с пометками мы будем использовать функции СохранитьЗначение и ВосстановитьЗначение. Эти функции будут использованы в предопределенных процедурах ПриОткрытии и ПриЗакрытии соответственно. Для получения списка значений с пометками необходимо в свойствах
списка, во вкладке Дополнительно, отметить галочкой значение «Список с
пометками». Реквизит диалога СписокДокументов выглядит так:
Как видно из Рис. 1 пользователь может отмечать разные строки списка значений и было бы удобно, чтобы при следующем сеансе работы эти пометки сохранялись. Чтобы этого добиться необходимо сохранять эти значения. Поэтому при закрытии диалога формы мы будем это делать, используя предопределенную процедуру ПриЗакрытии: Процедура ПриЗакрытии() Для сохранения отметок нам нужен промежуточный список СписокДоков1, в него мы сохраняем отметки каждого элемента из списка СписокДокументов. Чтобы узнать помечен ли элемент списка используем метод Пометка(). Затем нам нужно преобразовать элементы списка в строку. Для этого используем метод объекта СписокДоков1.ВСтрокуСРазделителями(), этот метод возвращает строку из элементов списка, разделенных запятыми. В нашем случае эта строка выглядит так: "1,0,1,0,1". Теперь с помощью функции СохранитьЗначение() сохраним эту строку для следующего сеанса работы с этой формой. Когда пользователь открывает форму при следующем сеансе ему будет приятно видеть, что его настройки сохранены и ему не нужно заново выставлять пометки. Не трудно выставить пометки, когда значений в списке всего пять, как в нашем примере, а если двадцать пять? Чтобы значения пометок были восстановлены при следующем сеансе работы необходимо написать код по восстановлению значений в предопределенной процедуре ПриОткрытии(): Процедура ПриОткрытии() //Восстановим строку с разделителями СписокДоков = ВосстановитьЗначение("СписокДоков"); // Создадим ещё один список значений для восстановления отметок Сначала нам нужно восстановить строку с разделителями и создать ещё один список значений для восстановления отметок. Затем заполним реквизит диалога СписокДокументов значениями. Теперь проверим сохранился ли список с предыдущего раза, если нет (возможно первый сеанс), то отмечаем все элементы. Если список есть, то используя метод ИзСтрокиСРазделителями(), восстанавливаем из строки элементы списка и отмечаем каждый элемент реквизита СписокДокументов соответствующим значением из сохраненного списка СписокДоков1. Ну а более легкий способ всё это сделать со списком значений такой: Процедура ПриЗакрытии() СохранитьЗначение("СписокДокументов",СписокДокументов); КонецПроцедуры Если прочитать Синтаксис-Помошник, то в замечании к функции ВосстановитьЗначение() можно прочитать: При использовании метода ВосстановитьЗначение() для значения типа СписокЗначений, являющегося реквизитом формы, его следует передавать в качестве второго параметра. В данном случае метод следует использовать как процедуру. Пример: ВосстановитьЗначение(''ИдентифМоегоСписка'',МойСписок). Поэтому в процедуре при открытии мы запишем следующее: Процедура ПриОткрытии() ВосстановитьЗначение("СписокДокументов", СписокДокументов); КонецПроцедуры Ну а что, если список значений не является реквизитом формы? Тогда посмотрим следующий код: Процедура ВывестиСписок() // Создаем список значений Список1=СоздатьОбъект("СписокЗначений"); Док=СоздатьОбъект("Документ"); Док.ВыбратьДокументы(); // Добавляем в него десять разных документов Для Сч=1 По 10 Цикл Док.ПолучитьДокумент(); Список1.ДобавитьЗначение(Док.ТекущийДокумент(),""+Док.ТекущийДокумент()); КонецЦикла; // Сохраняем этот список СохранитьЗначение("Список1",Список1); Список2=""; // Востанавливаем список ВосстановитьЗначение("Список1",Список2); // Открываем окно для интерактивной пометки значений списка. Список2.ОтметитьЗначения(""); КонецПроцедурыВ этом листинге мы создаем список значений Список1, добавляем в него десять разных документов. Затем сохраняем этот список при помощи функции СохранитьЗначение(). Потом востанавливаем список в Список2 и выводим окно для интерактивной пометки значений списка (это для наглядности). |