Добавлять в реквизит список значений только один тип

Содержание:

  1. Использование палитры свойств реквизита формы типа «Список значений»
  2. Программная установка допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений»

При разработке интерфейсов 1С на платформе 1С:Предприятие 8 нередки ситуации, когда требуется ограничить допустимые для ввода списки значений для реквизита формы с типом «Список значений». Это можно выполнить несколькими способами.  

1.   Использование палитры свойств реквизита формы типа «Список значений»

Первый способ: установка допустимого типа в свойстве «Тип значения» в палитре свойств реквизита формы типа «Список значений».

 

Рис. 1 Редактирование типа значения в палитре свойств реквизита

В данном случае мы ограничили возможность добавления/изменения элементов списка реквизита «Список складов-получателей» типом «СправочникСсылка.Склады».

По умолчанию при создании основного реквизита формы с типом «Список значений» платформа 1С устанавливает данному свойству тип значения «Произвольный».  

2.   Программная установка допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений»

Второй способ: программная установка допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений».

Сделать это можно, например, в обработчике события 1С формы «ПриСозданииНаСервере»:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

            МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей = Новый Массив;

           МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.Склады»));

            СпискокСкладовПолучателей.ТипЗначения = Новый ОписаниеТипов(МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей);

КонецПроцедуры

В данном случае мы также ограничили возможность добавления/изменения элементов списка реквизита «Список складов-получателей» типом «СправочникСсылка.Склады».

Если же требуется разрешить выбирать несколько типов при добавлении или изменении элементов списка значений на форме, то просто следует добавить все необходимые типы в массив, передаваемый в качестве параметра конструктора описания типов, который используется при установке допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений», например:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

            МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей = Новый Массив;

           МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.Склады»));

           МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.ПодразделенияОрганизаций»));

            СпискокСкладовПолучателей.ТипЗначения = Новый ОписаниеТипов(МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей);

КонецПроцедуры

Таким образом, во втором случае для реквизита «Список складов-получателей» к возможности добавления/изменения элементов списка с типом «СправочникСсылка.Склады» мы добавили аналогичную возможность для типа «СправочникСсылка.ПодразделенияОрганизаций».

Программную установку допустимого типа(ов) значения(ий) аналогичным образом можно использовать и для колонки с типом «Список значений» реквизита формы с типом «Таблица значений» или «Дерево значений». Единственный нюанс, на который нужно обратить внимание для получения требуемого результата – это то, что установка в таких случаях должна производиться в обработчике события «НачалоВыбора» элемента формы, связанного с соответствующей колонкой реквизита формы с типом «Таблица значений» или «Дерево значений», например:

&НаКлиенте

Процедура ТаблицаПолучателейМатериаловСпискокСкладовПолучателейНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

            МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей = Новый Массив;

            МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.Склады»));

            Элементы.ТаблицаПолучателейМатериалов.ТекущиеДанные.СпискокСкладовПолучателей.ТипЗначения = Новый ОписаниеТипов(МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей);

КонецПроцедуры

В данном случае для колонки «СпискокСкладовПолучателей» (с типом «Список значений») реквизита формы «ТаблицаПолучателейМатериалов» мы ограничили возможность добавления/изменения элементов списка значений типом «СправочникСсылка.Склады».

  Специалист компании «Кодерлайн»

Аскер Жансуев

Свойство 1С СписокЗначений.ТипЗначения позволяет установить фильтр на разрешенные к добавлению значения по их типу. Ограничение может быть установлено как на один тип, так и на несколько (т.е. список типов).

Если фильтр 1С СписокЗначений.ТипЗначения установлен, то при попытке добавить запрещенное значение (то есть отсутствующее в списке разрешенных), то элемент списка все равно будет добавлен, но его значение будет равно пустому значению разрешенного типа (т.е. метод Добавить() вернет элемент списка значение). При этом, если 1С СписокЗначений.ТипЗначения разрешен один тип – то будет добавлено пустое значение этого типа (пустая ссылка, пустая строка, ноль), а если разрешено несколько типов – то значение будет НЕОПРЕДЕЛЕНО).

Запрет 1С СписокЗначений.ТипЗначения при этом касается как программного добавления (в коде языка 1С), так и интерактивное, если список значений выведен на форму и доступен к редактированию пользователем.

Пример, разрешаем один тип значения с помощью 1С СписокЗначений.ТипЗначения:
спЗначений = Новый СписокЗначений();

//разрешаем только один тип значений
спЗначений.ТипЗначения = Новый ОписаниеТипов("Строка");

//варианты типов:
//"Строка"
//"Число"
//"Дата"
//"СправочникСсылка.ИмяСправочникаИзКонфигуратора"
//"ДокументСсылка.ИмяДокументаИзКонфигуратора"

Пример, разрешаем несколько типов значений с помощью 1С СписокЗначений.ТипЗначения:

Проголосовать за этот пост:

Загрузка…

Posted in Язык 1С

УФ, список значений, тип значений

Я
   ДенисЧ

17.11.11 — 10:19

Есть обработка внешняя. На неё положен список значений (реквизит формы). Необходимо дать пользователю добавлять в этот список данные интерактивно, но только одного типа (например, документссылка.ЗаказПокупателя).

Что-то обшарил все свойства, не нашёл такого…

Как это сделать?

  

Партнерская программа EFSOL Oblako

   Stim213

1 — 17.11.11 — 10:22

Купить СП, например :)

   ДенисЧ

2 — 17.11.11 — 10:26

(1) Прошерстил и его. Может, подскажешь слово?

   ДенисЧ

3 — 17.11.11 — 10:57

^

   Нуф-Нуф

4 — 17.11.11 — 10:59

(3) та ты ж самый главный продаватель СП на форуме!

   ДенисЧ

5 — 17.11.11 — 11:00

(4) Похоже, у меня кошерный только по 77… Ибо в 8шном — не нашёл подходящего…

   Нуф-Нуф

6 — 17.11.11 — 11:01

только добавил на УФ в реквизиты новый реквизит СписокДокументов, установил тип СписокЗначений, в самом низу палитры свойств есть «Тип значения»  — там можно выбрать то что тебе нужно

   Stim213

7 — 17.11.11 — 11:02

(6) +

если ты не знаешь, какой тип будет у элементов списка — ставь тип ЛюбаяСсылка

И КУПИ УЖЕ СП, БУДЬ МУЖИКОМ!

   ДенисЧ

8 — 17.11.11 — 11:03

   Нуф-Нуф

9 — 17.11.11 — 11:04

(8) дык вроде речь про форму шла. на форме есть

   Stim213

10 — 17.11.11 — 11:04

(8) ты понимаешь разницу между реквизитом объекта и реквизитом формы?

   Stim213

11 — 17.11.11 — 11:05

Дениска, Дениска..

   ДенисЧ

12 — 17.11.11 — 11:05

(9) То есть ты добавил не реквизит обработки, а просто формы? А для реквизита обработки такое сделать?

   Кириллка

13 — 17.11.11 — 11:05

(0)Реквизит формы, раздел Объект, свойство Тип значения. Не оно?

   unknown181538

14 — 17.11.11 — 11:05

Жуем кактус?)

   Ненавижу 1С

15 — 17.11.11 — 11:07

у элемента формы, привязанного к этому реквизиту можно задать определенный тип

   ДенисЧ

16 — 17.11.11 — 11:07

(13) Нету у меня раздела Объект, у меня список значений — реквизит обработки

   ДенисЧ

17 — 17.11.11 — 11:08

(15) Где?

   Stim213

18 — 17.11.11 — 11:08

(17) создай реквизит формы. укажи путь к данным — реквизит объекта

   Нуф-Нуф

19 — 17.11.11 — 11:09

(15) нельзя

   ДенисЧ

20 — 17.11.11 — 11:10

Ну вот не вижу нифига. Картинку покажите, кто нибудь :-(

   Нуф-Нуф

21 — 17.11.11 — 11:11

делай отдельный реквизит формы, зачем тебе отдельный реквизит обработки?

   Нуф-Нуф

22 — 17.11.11 — 11:11

(20) да нельзя реквизит обработки вывести на форму и указать ему тип

   Ненавижу 1С

23 — 17.11.11 — 11:12

ах, это УФ, снимаю (15)

   ДенисЧ

24 — 17.11.11 — 11:12

(21) чтобы проще таскать с клиента на сервер и обратно.

   Кириллка

25 — 17.11.11 — 11:12

(12)Ну если исходить из общей концепции, то списку значений поровну, какие ты типы будешь там хранить. Реквизит обработки это как публичный член класса. Через него ты можешь общаться с обработкой. И с отображением (интерфейсом) оно не связано непосредственно. Кидаем в реквизиты формы нужную фигню и рулим нужным типом.

   Stim213

26 — 17.11.11 — 11:12

ПриСозданииНасервере указывай тип

   Нуф-Нуф

27 — 17.11.11 — 11:13

(24) делай реквизит формы и кури ЗначениеВРеквизитФормы и обратно :)

   Stim213

28 — 17.11.11 — 11:13

да. и юзай динамический список

   Stim213

29 — 17.11.11 — 11:13

зы. и зачем нужны реквизиты обработки?

   Кириллка

30 — 17.11.11 — 11:13

+25 ну а потом из реквизита формы можно будем прокинуть в реквизит обработки.

   ДенисЧ

31 — 17.11.11 — 11:13

Вот положил я просто новый реквизит формы. Тип — таблица (списка нет), отображение — список. Набор свойств ничем не отличается…

   Кириллка

32 — 17.11.11 — 11:15

(31)иди в свойства реквизита формы. Это окошко справа вверху, закладка Реквизиты.

   ДенисЧ

33 — 17.11.11 — 11:17

   Кириллка

34 — 17.11.11 — 11:17

+32 ты открыл свойства элемента формы.

ну прикольно они конечно напридумывали…

   Нуф-Нуф

35 — 17.11.11 — 11:18

эээ. а причем здесь таблица? создай реквизит формы с типом список значений

   ДенисЧ

36 — 17.11.11 — 11:21

(32) там вообще пусто :-(

   ДенисЧ

37 — 17.11.11 — 11:23

   acsent

38 — 17.11.11 — 11:23

А зачем реквизит типа список делать? Не проще ли тогда ТЧ добавить?

   acsent

39 — 17.11.11 — 11:24

(37) Не элемент, а реквизит

   Кириллка

40 — 17.11.11 — 11:25

(36)у меня в профиле картинка

   ДенисЧ

41 — 17.11.11 — 11:25

Фу…

Нашёл…

Пристрелить бы разработчиков.. А потом меня…

Всем спасибо

   Кириллка

42 — 17.11.11 — 11:32

(41)не в качестве нравоучения, но пользы для — тыб перечитал терминалогию v82. Если так спотыкаться, то жизни не хватит, чтобы изучить этот продукт. Достаточно просто прочитать книжки из коробки NFR.

   Stim213

43 — 17.11.11 — 11:32

(42) он все продал, ему НЕ ИЗ ЧЕГО читать =)

   Кириллка

44 — 17.11.11 — 11:35

(43)зубоскалить можно, конечно, но не уместно. Продукт у 1с действительно серьезный получился. Нужно изучать усердно. Я по части УФ, имею ввиду.

  

ДенисЧ

45 — 17.11.11 — 11:37

(42) У меня «разработка УИ» — сейчас настольная книга…

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

2017-12-18T22:27:10+00:00Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат

ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции

См. урок для начинающих по списку значений в 1С
Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Полный синтаксис (нажмите, чтобы раскрыть)

Оглавление (нажмите, чтобы раскрыть)

&НаКлиенте
Процедура ВыполнитьКод(Команда)
 
    /// Как создать список значений в 1с 8.3, 8.2
 
    Список = Новый СписокЗначений;
 
    /// Как добавить элемент в список значений в 1с 8.3, 8.2
 
    // параметры метода добавить:
    // - значение
    // - представление
    // - отметка (необ.)
    // - картинка (необ.)
    Список.Добавить(
        1980, // значение элемента
        "Год рождения Васи" // представление        
    );
    Список.Добавить(1985, "Год рождения Юли");
    // значения могут быть разных типов
    Список.Добавить("Полина", "Имя ребёнка");
 
    /// Как вставить элемент в список значений в 1с 8.3, 8.2
 
    // вставляем в позицию №2 (элементы нумеруются с 0)
    // элемент со значением 2010 и представлением
    // "Год рождения их совместной дочки"
    Список.Вставить(2, 2010, "Год рождения их совместной дочки");
 
    /// Как обойти элементы списка значений в 1с 8.3, 8.2
 
    Для Каждого Элемент Из Список Цикл
        Сообщить(
            Элемент.Представление + ": " +
            Строка(Элемент.Значение)
        );
    КонецЦикла;
 
    /// Как очистить список значений в 1с 8.3, 8.2
 
    Список.Очистить();
 
    Список.Добавить("Понедельник");
    Список.Добавить("Вторник");
    Список.Добавить("Среда");
 
    /// Как узнать количество элементов списка значений, а также
    /// получить элемент списка по его индексу в 1с 8.3, 8.2
 
    // нумерация с нуля
    Для Индекс = 0 По Список.Количество() - 1 Цикл
        Сообщить(Список[Индекс]);
    КонецЦикла;
 
    /// Как найти элемент списка по его значению в 1с 8.3, 8.2
 
    ЗначВторник = Список.НайтиПоЗначению("Вторник");
 
    /// Как узнать индекс элемента в списке в 1с 8.3, 8.2
 
    Сообщить(Список.Индекс(ЗначВторник)); // 1, так как нумерация с нуля
 
    /// Как отсортировать список по его значениям в 1с 8.3, 8.2
 
    // было: понедельник, вторник, среда
    Список.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
    // стало: среда, понедельник, вторник
 
    /// Как удалить элемент из списка значений в 1с 8.3, 8.2
 
    // удаляем первый элемент
    // параметр: элемент списка
    // или индекс элемента
    // можно так
    Список.Удалить(Список[0]);
    // или так
    // Список.Удалить(0);
 
    /// Как сдвинуть элемент списка значений в 1с 8.3, 8.2
 
    // сдвигаем нулевой элемент на одну позицию вперёд
    // было: понедельник вторник    
    Список.Сдвинуть(0, 1);
    // стало: вторник понедельник 
 
    /// Как сделать копию списка в 1с 8
    КопияСписка = Список.Скопировать();
 
    Цвета = Новый СписокЗначений;
    Цвета.Добавить("Красный");
    Цвета.Добавить("Зелёный");
    Цвета.Добавить("Синий");
 
    /// Как выгрузить значения списка в массив в 1с 8.3, 8.2
 
    МассивЦветов = Цвета.ВыгрузитьЗначения();
 
    /// Как загрузить значения списка из массива в 1с 8.3, 8.2
 
    Цвета.ЗагрузитьЗначения(МассивЦветов);
 
КонецПроцедуры 
 
/// Как сделать немодальный выбор значения из списка
/// значений в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакСделатьНемодальныйВыборЗначения(Команда)
 
    Цвета = Новый СписокЗначений;
    Цвета.Добавить("Красный");
    Цвета.Добавить("Зелёный");
    Цвета.Добавить("Синий");
 
    // процедура ПослеВыбораЭлемента определена чуть ниже
    ОповещениеПослеВыбораЭлемента = Новый ОписаниеОповещения(
        "ПослеВыбораЭлемента", ЭтотОбъект
    );
 
    Цвета.ПоказатьВыборЭлемента(
        ОповещениеПослеВыбораЭлемента,
        "Выберите любимый цвет"
    );
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеВыбораЭлемента(Элемент, Параметры) Экспорт
 
    Если Элемент <> Неопределено Тогда
        Сообщить(Элемент.Значение);
    КонецЕсли;
 
КонецПроцедуры
 
/// Как сделать немодальную отметку значений из списка 
/// значений в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакСделатьНемодальнуюОтметкуЗначений(Команда)
 
    Цвета = Новый СписокЗначений;
    Цвета.Добавить("Красный");
    Цвета.Добавить("Зелёный");
    Цвета.Добавить("Синий");    
 
    // процедура ПослеОтметкиЭлементов определена чуть ниже
    ОповещениеПослеОтметкиЭлементов = Новый ОписаниеОповещения(
        "ПослеОтметкиЭлементов", ЭтотОбъект
    );	
 
    Цвета.ПоказатьОтметкуЭлементов(
        ОповещениеПослеОтметкиЭлементов,
        "Выберите любимые цвета"
    );
 
   // а вот так можно разом установить все отметки
   // списка в определенное значение
   Цвета.ЗаполнитьПометки(Истина);
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеОтметкиЭлементов(Элементы, Параметры) Экспорт
 
    Если Элементы <> Неопределено Тогда
        Для Каждого Цвет Из Элементы Цикл
            Если Цвет.Пометка Тогда
                Сообщить(Цвет.Значение);
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
 
КонецПроцедуры
 
/// Как сделать модальный выбор значения из списка в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакСделатьМодальныйВыборЗначения(Команда)
 
    Цвета = Новый СписокЗначений;
    Цвета.Добавить("Красный");
    Цвета.Добавить("Зелёный");
    Цвета.Добавить("Синий");    
 
    ВыбЦвет = Цвета.ВыбратьЭлемент("Выберите любимый цвет");
    Если ВыбЦвет <> Неопределено Тогда
        Сообщить(ВыбЦвет.Значение);
    КонецЕсли;
 
КонецПроцедуры
 
/// Как сделать модальную отметку значений из списка 
/// значений в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакСделатьМодальнуюОтметкуЗначений(Команда)    
 
    Цвета = Новый СписокЗначений;
    Цвета.Добавить("Красный");
    Цвета.Добавить("Зелёный");
    Цвета.Добавить("Синий");
 
    Если Цвета.ОтметитьЭлементы("Выберите любимые цвета") Тогда
        Для Каждого Цвет Из Цвета Цикл
            Если Цвет.Пометка Тогда
                Сообщить(Цвет.Значение);
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
 
   // а вот так можно разом установить все отметки
   // списка в определенное значение
   Цвета.ЗаполнитьПометки(Истина);    
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Список значений в языке 1С 8.3, 8.2 (в примерах)

Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат

ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Владимир Милькин

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

В предыдущей статье «Изучаем список значений 1С» я показал, каким образом можно программного работать со списком значений. Мы научились добавлять, вставлять и загружать нужные элементы в список. Но со списком значений можно работать на управляемой форме 1С, когда он используется в качестве реквизита этой формы. В этой статье мы разберем вопросы работы со списком значений на форме.

На управляемой форме 1С список значений можно разместить в качестве реквизита управляемой формы.

Список значений 1С на форме

Мы уже знаем, что каждый элемент списка значений содержит значения типа Элемент списка значений, но можно задать тип данных, которые будут содержаться в этом элементе. Делается это при помощи свойства реквизита – тип значения. В этом случае, все элементы заданного списка значений будут одного типа.

Свойство тип значения списка значений 1С на форме

Реквизит с типом список значений можно разместить на форме, где он отобразится или виде таблицы или в виде поля. Для размещения реквизита достаточно мышкой просто перенести его в элементы управляемой формы.

Размещения списка значений на управляемой форме

После начала размещения, будет предложено выбрать тип нового элемента. Можно выбрать или таблицу, или поле.

Выбор типа нового элемента

Если мы выберем тип Таблица, то будет размещен элемент с типом Таблица, где в качестве колонок можно размещать соответствующие свойства списка значений.

Размещение свойства списка в качестве колонки таблицы

Размещение свойства списка в качестве колонки таблицы

Теперь на форме можно работать с этим списком, выбирая нужные объекты, указанного типа.

Работа со списком значений 1С на форме

С реквизитом формы мы можем работать как с обычным списком значений. Например, заполним созданный нами список всеми складами, которые можно использовать.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Склады.Ссылка КАК Ссылка,
                   |    Склады.Представление КАК Представление
                   |ИЗ
                   |    Справочник.Склады КАК Склады
                   |ГДЕ
                   |    НЕ Склады.НеИспользовать";
    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
        Список.Добавить(Выборка.Ссылка,Выборка.Представление);
    КонецЦикла;

КонецПроцедуры

В этом случае, список заполнится сразу при открытии формы.

Заполненный список значения 1С


Более подробно о работе со списками значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Список значений — это программная коллекция (объект встроенного языка), содержащая пронумерованную последовательность элементов. Каждому элементу присваивается последовательный целочисленный номер — индекс, начинающийся с нуля. По индексу можно получить или установить элемент списка значений.

Элемент списка значений

Каждый элемент списка является программным объектом ЭлементСпискаЗначений встроенного языка и содержит следующие свойства:

  • Значение (Произвольный тип) — хранимое значение произвольного типа
  • Представление (Строка) — представление элемента списка для пользователя
  • Пометка (Булево) — значение пометки элемента в списке
  • Картинка (Картинка) — картинка элемента списка для пользователя

Создание списка значений

Создание пустого списка значений выполняется с помощью оператора Новый:

сз = Новый СписокЗначений;

Для добавления элементов в список значений используется одноименный метод СписокЗначений.Добавить():

сз.Добавить(10);
сз.Добавить(НачалоДня(ТекущаяДата()), "Сегодня");

Каждый новый элемент помещается в конец списка. Для доступа к отдельным элементам списка значений применяется операция разыменования: указывается имя переменной, объявленной как список значений, а затем, в квадратных скобках, указывается индекс элемента. Свойства полученного элемента можно использовать как слева от оператора присваивания:

сз[0].Значение = 10;
сз[1].Значение = НачалоДня(ТекущаяДата());
сз[1].Представление = "Сегодня";

Так и справа: в выражениях и в качестве параметров процедур и функций:

Сообщить("сз[0] = " + сз[0].Значение);

Границы списка значений

Как было сказано выше, левая граница списка значений постоянна и всегда равно нулю (0). Верхняя граница напрямую связана с количеством элементов в списке значений. Получить ее можно с использованием метода СписокЗначений.Количество() с последующим вычитанием 1.

Давайте рассмотрим распространенные операции со списком значений.

Перебор элементов списка значений

Для перебора (обхода) всех элементов списка значений обычно используется оператор цикла Для:

Для Инд = 1 По сз.Количество() Цикл
    Сообщить("сз[" + Инд + "] = " + сз[Инд-1].Представление);
КонецЦикла;

Либо оператор цикла Для Каждого:

Для Каждого Элт Из сз Цикл
    Сообщить("сз[" + сз.Индекс(Элт) + "] = " + Элт.Представление);
КонецЦикла;

Второй способ больше подходит для ситуации, когда нужно только последовательно перебрать все значения списка. Его использование повышает «читабельность кода».

Поиск в списке значений

Для поиска значений в списке предназначен метод СписокЗначений.НайтиПоЗначению(). Он возвращает найденный элемент списка значений, либо Неопределено, если указанного значения в списке нет.

НайдЭлт = сз.НайтиПоЗначению(10);
Если НЕ НайдЭлт = Неопределено Тогда
    Сообщить("сз[" + сз.Индекс(НайдЭлт) + "] = " + НайдЭлт.Представление);
КонецЕсли;

Сортировка списка значений

Сортировка элементов в списке значений может производиться двумя способами:

  • По значению — реализуется методом СписокЗначений.СортироватьПоЗначению()
  • По представлению — реализуется методом СписокЗначений.СортироватьПоПредставлению()
сз = Новый СписокЗначений
сз.Добавить(1, "Первый");
сз.Добавить(3, "Третий");
сз.Добавить(2, "Второй");
сз.СортироватьПоЗначению();

Методы объекта СписокЗначений

Вставить() Добавляет элемент в произвольное место списка
ВыбратьЭлемент() Открывает диалог выбора элемента списка значений
ВыгрузитьЗначения() Выгружает значения списка в массив
Добавить() Добавляет элемент в конец списка
ЗагрузитьЗначения() Загружает значения из массива
ЗаполнитьПометки() Устанавливает значение пометок элементов списка
Индекс() Возвращает индекс элемента списка значений
Количество() Возвращает количество элементов в списке
НайтиПоЗначению() Выполняет поиск элемента в списке по значению
НайтиПоИдентификатору() Выполняет поиск элемента в списке по его идентификатору
ОтметитьЭлементы() Открывает диалог отметки элементов списка значений
Очистить() Очищает список значений
Получить() Возвращает элемент списка по индексу
Сдвинуть() Сдвигает элемент в списке вверх или вниз
Скопировать() Возвращает копию текущего списка значений
СортироватьПоЗначению() Сортирует элементы списка значений по значению
СортироватьПоПредставлению() Сортирует элементы списка значений по представлению
Удалить() Удаляет указанный элемент из списка

Читайте также:

  1. Как загрузить массив в список значений?
  2. Как выгрузить колонку таблицы значений в список значений?
  3. Ошибка «Значение индекса выходит за границы диапазона»

Поделиться страницей в соц.сетях

Понравилась статья? Поделить с друзьями:
  • Доверенность на выдачу груза в транспортной компании
  • Доверенность на получение денег в страховой компании
  • Доверенность страховая компания по страховому случаю
  • Договор аренды бизнеса с последующим выкупом образец
  • Договор купли продажи бизнеса ип в рассрочку образец