СписокЗначений.Получить

Методы · Get

Получает значение по индексу. Работает аналогично оператору [].

Синтаксис

Получить(<Индекс>)
Полное описание, параметры и ограничения

СписокЗначений.Получить (ValueList.Get)

СписокЗначений (ValueList)

Получить (Get)

Доступен, начиная с версии 8.0.

Синтаксис:
Получить(<Индекс>)
Параметры:

<Индекс> (обязательный)
Тип: Число.
Индекс элемента.
Возвращаемое значение:
Тип: ЭлементСпискаЗначений.

Описание:

Получает значение по индексу. Работает аналогично оператору [].

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Применяется в случаях, когда использование оператора [] невозможно.
Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Выбрать собственное количество выпадающим списком формы

ВыбратьИзСпискаАсинх возвращает обещание выбранного элемента. Начальный элемент задаём объектом списка, отмена и изменившееся количество не перезаписывают данные.

Где и как запускать

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. В отдельной учебной базе платформы 8.5.1.1343 создайте внешнюю обработку УчебнаяФорма85 с пустой управляемой основной формой. Используйте тонкий клиент Windows.

  2. В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте полный модуль урока, включая клиентские и серверные помощники, на уровне модуля.

  3. Не создавайте вручную ЗначениеПримера, ПолеПримера и кнопку: код создаёт их полностью. Каждый урок запускайте в отдельной копии своей формы.

  4. Сохраните свою EPF и откройте её в учебной базе. Собственное количество начинается с 3, цена книги задана в коде как 250; исходный расчёт равен 750.

  5. Связанный реквизит помечен как СохраняемыеДанные для изучения поведения формы. Это признак реквизита формы, а не автоматическая запись книги, файла или документа в базу.

  6. Команда расчёта имеет ИзменяетСохраняемыеДанные = Ложь. Уроки изменяют только свой интерфейс и значения собственной формы, не конфигурацию и не рабочие данные.

  7. Запуск и вид в 1С не проверены. Компоновку, сочетания клавиш и расположение команд осмотрите вручную в указанном клиенте; не переносите настройки на рабочие формы без отдельной проверки.

Перем Занято;

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    ТипРеквизита = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(2, 0, ДопустимыйЗнак.Неотрицательный));
    Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита, "", "Количество книг", Истина));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.ЗначениеПримера = 3;
    Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.ПутьКДанным = "ЗначениеПримера";
    Поле.Заголовок = "Количество собственных книг";


    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Выполнить собственный учебный шаг";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Асинх Процедура УчебноеДействие(Команда)
    Если Занято = Истина Тогда
        Возврат;
    КонецЕсли;
    Занято = Истина;
    Элементы.КнопкаУчебноеДействие.Доступность = Ложь;
    ДоВыбора = ЗначениеПримера;
    Варианты = Новый СписокЗначений;
    Варианты.Добавить(3, "Три учебные книги — 750");
    Варианты.Добавить(5, "Пять учебных книг — 1250");
    Попытка
        Выбор = Ждать ЭтаФорма.ВыбратьИзСпискаАсинх(Варианты, Элементы.ПолеПримера, Варианты.Получить(0));
    Исключение
        Занято = Ложь;
        Элементы.КнопкаУчебноеДействие.Доступность = Истина;
        ВызватьИсключение;
    КонецПопытки;
    Занято = Ложь;
    Элементы.КнопкаУчебноеДействие.Доступность = Истина;
    Если Выбор = Неопределено Тогда
        Сообщить("Выбор отменён: собственное количество не изменено");
        Возврат;
    КонецЕсли;
    Если ЗначениеПримера <> ДоВыбора Тогда
        Сообщить("Количество изменилось за время выбора. Повторите выбор для актуального значения");
        Возврат;
    КонецЕсли;
    Количество = Выбор.Значение;
    Если ТипЗнч(Количество) <> Тип("Число") Тогда
        ВызватьИсключение "Выбор должен содержать число, а не видимую подпись";
    КонецЕсли;
    Если Количество <> 3 И Количество <> 5 Тогда
        ВызватьИсключение "Неожиданное значение учебного списка";
    КонецЕсли;
    ЗначениеПримера = Количество;
    Если ТипЗнч(ЗначениеПримера) <> Тип("Число") Тогда
        ВызватьИсключение "Собственное количество должно быть числом";
    КонецЕсли;
    Если ЗначениеПримера < 1 ИЛИ ЗначениеПримера > 10 ИЛИ ЗначениеПримера <> Цел(ЗначениеПримера) Тогда
        ВызватьИсключение "Для учебного расчёта выберите целое количество от 1 до 10";
    КонецЕсли;
    Цена = 250;
    Сумма = ЗначениеПримера * Цена;
    Сообщить(Сумма >= 250 И Сумма <= 2500);
    Сообщить(Сумма / Цена = ЗначениеПримера);
    Сообщить(СтрШаблон("Собственные книги: %1 × %2 = %3", ЗначениеПримера, Цена, Сумма));

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

Разбор по шагам

  1. Создаём свой список из чисел 3 и 5 с понятными подписями сумм. Подпись Три учебные книги — 750 не является сохранённым значением.

  2. Запоминаем количество до выбора и временно отключаем только кнопку запуска. Поле остаётся доступным, поэтому изменение во время выбора проверяется отдельно.

  3. Передаём поле ввода как якорь и Варианты.Получить(0) как начальный элемент. Это объект элемента списка, не произвольное начальное число количества.

  4. Ждать получает элемент либо Неопределено. Сначала обрабатываем отмену и проверяем актуальность сохранённого значения, затем читаем Выбор.Значение.

  5. После проверки допустимых 3 или 5 изменяем только собственный реквизит и рассчитываем 750 или 1250. Кнопка восстанавливается также при исключении.

Как проверить результат

  1. Выберите второй элемент: количество 5, две Истина и 1250. Выберите первый: 3 и 750.

  2. Отмените список: текущее количество остаётся прежним. Если значение поменялось во время ожидания, ожидается предложение повторить выбор без перезаписи.

Ожидаемый результат

Настоящий выпадающий список формы участвует в проверяемом собственном расчёте с веткой отмены.

На что обратить внимание

  1. НачальноеЗначение имеет тип Число или ЭлементСпискаЗначений; здесь используем элемент, чтобы не смешать индекс с количеством книг.

  2. Кнопки командной панели и подменю не подходят для якоря этого метода.

  3. Метод СписокЗначений.ВыбратьЭлементАсинх — другой контракт: его не подменяем методом самой формы.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Получить выбор формы через экспортный обработчик завершения

ПоказатьВыборИзСписка возвращает управление сразу. Результат поступает в экспортную процедуру с двумя параметрами, а исходное количество передаётся дополнительной структурой.

Где и как запускать

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. В отдельной учебной базе платформы 8.5.1.1343 создайте внешнюю обработку УчебнаяФорма85 с пустой управляемой основной формой. Используйте тонкий клиент Windows.

  2. В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте полный модуль урока, включая клиентские и серверные помощники, на уровне модуля.

  3. Не создавайте вручную ЗначениеПримера, ПолеПримера и кнопку: код создаёт их полностью. Каждый урок запускайте в отдельной копии своей формы.

  4. Сохраните свою EPF и откройте её в учебной базе. Собственное количество начинается с 3, цена книги задана в коде как 250; исходный расчёт равен 750.

  5. Связанный реквизит помечен как СохраняемыеДанные для изучения поведения формы. Это признак реквизита формы, а не автоматическая запись книги, файла или документа в базу.

  6. Команда расчёта имеет ИзменяетСохраняемыеДанные = Ложь. Уроки изменяют только свой интерфейс и значения собственной формы, не конфигурацию и не рабочие данные.

  7. Запуск и вид в 1С не проверены. Компоновку, сочетания клавиш и расположение команд осмотрите вручную в указанном клиенте; не переносите настройки на рабочие формы без отдельной проверки.

Перем Занято;

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    ТипРеквизита = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(2, 0, ДопустимыйЗнак.Неотрицательный));
    Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита, "", "Количество книг", Истина));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.ЗначениеПримера = 3;
    Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.ПутьКДанным = "ЗначениеПримера";
    Поле.Заголовок = "Количество собственных книг";


    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Выполнить собственный учебный шаг";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Если Занято = Истина Тогда
        Возврат;
    КонецЕсли;
    Занято = Истина;
    Элементы.КнопкаУчебноеДействие.Доступность = Ложь;
    Варианты = Новый СписокЗначений;
    Варианты.Добавить(3, "Три учебные книги — 750");
    Варианты.Добавить(5, "Пять учебных книг — 1250");
    КонтекстВыбора = Новый Структура("ДоВыбора", ЗначениеПримера);
    Оповещение = Новый ОписаниеОповещения("ПослеСобственногоВыбора", ЭтаФорма, КонтекстВыбора);
    Попытка
        ЭтаФорма.ПоказатьВыборИзСписка(Оповещение, Варианты, Элементы.ПолеПримера, Варианты.Получить(0));
    Исключение
        Занято = Ложь;
        Элементы.КнопкаУчебноеДействие.Доступность = Истина;
        ВызватьИсключение;
    КонецПопытки;
КонецПроцедуры

&НаКлиенте
Процедура ПослеСобственногоВыбора(Выбор, ДополнительныеПараметры) Экспорт
    Занято = Ложь;
    Элементы.КнопкаУчебноеДействие.Доступность = Истина;
    ДоВыбора = ДополнительныеПараметры.ДоВыбора;
    Если Выбор = Неопределено Тогда
        Сообщить("Выбор отменён: собственное количество не изменено");
        Возврат;
    КонецЕсли;
    Если ЗначениеПримера <> ДоВыбора Тогда
        Сообщить("Количество изменилось за время выбора. Повторите выбор для актуального значения");
        Возврат;
    КонецЕсли;
    Количество = Выбор.Значение;
    Если ТипЗнч(Количество) <> Тип("Число") Тогда
        ВызватьИсключение "Выбор должен содержать число, а не видимую подпись";
    КонецЕсли;
    Если Количество <> 3 И Количество <> 5 Тогда
        ВызватьИсключение "Неожиданное значение учебного списка";
    КонецЕсли;
    ЗначениеПримера = Количество;
    Если ТипЗнч(ЗначениеПримера) <> Тип("Число") Тогда
        ВызватьИсключение "Собственное количество должно быть числом";
    КонецЕсли;
    Если ЗначениеПримера < 1 ИЛИ ЗначениеПримера > 10 ИЛИ ЗначениеПримера <> Цел(ЗначениеПримера) Тогда
        ВызватьИсключение "Для учебного расчёта выберите целое количество от 1 до 10";
    КонецЕсли;
    Цена = 250;
    Сумма = ЗначениеПримера * Цена;
    Сообщить(Сумма >= 250 И Сумма <= 2500);
    Сообщить(Сумма / Цена = ЗначениеПримера);
    Сообщить(СтрШаблон("Собственные книги: %1 × %2 = %3", ЗначениеПримера, Цена, Сумма));

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

Разбор по шагам

  1. Готовим собственный список, начальный элемент и структуру ДоВыбора. Снимок хранит число, не ссылку на рабочий документ.

  2. ОписаниеОповещения связывает имя экспортной процедуры, собственную форму и дополнительные параметры.

  3. ПоказатьВыборИзСписка вызываем без присваивания результата: его результат не является выбранным элементом.

  4. Экспортная процедура получает Выбор и ДополнительныеПараметры. Сначала восстанавливает кнопку, затем проверяет отмену и актуальность исходного количества.

  5. Только допустимые 3/5 применяются к собственному реквизиту. Сам расчёт выполняется в обработчике завершения, не сразу после показа списка.

Как проверить результат

  1. При выборе 5 обработчик показывает 1250 и две Истина. Отмена оставляет количество прежним и разблокирует кнопку.

  2. В отладчике проверьте два параметра экспортного обработчика: элемент или Неопределено и структура с ДоВыбора.

Ожидаемый результат

Результат собственного выбора корректно обработан через обратный вызов с полным дополнительным контекстом.

На что обратить внимание

  1. Без Экспорт обработчик не соответствует контракту ОписаниеОповещения для обратного вызова.

  2. Выбранный элемент не приходит обычным возвращаемым значением метода ПоказатьВыборИзСписка.

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

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.