Получает идентификатор для элемента списка значений. Этот идентификатор не привязан к позиции элемента в списке.
Синтаксис
ПолучитьИдентификатор()Полное описание, параметры и ограничения
ЭлементСпискаЗначений.ПолучитьИдентификатор (ValueListItem.GetID)
ЭлементСпискаЗначений (ValueListItem)
ПолучитьИдентификатор (GetID)
Доступен, начиная с версии 8.2.
Синтаксис:
ПолучитьИдентификатор()
Возвращаемое значение:
Тип: Число.
Описание:
Получает идентификатор для элемента списка значений. Этот идентификатор не привязан к позиции элемента в списке.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Выделить и снять выделение меток по идентификаторам
Получаем идентификаторы конкретных Книга и Ручка. Меняем только выделение, не значения, порядок или количество меток.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.
Не добавляйте вручную реквизит ЗначениеПримера, поле ПолеПримера и команду УчебноеДействие: их создаст код.
В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Вставьте весь модуль, включая клиентские и серверные процедуры.
Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
ТипРеквизита = Новый ОписаниеТипов("СписокЗначений");
Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
ЭтаФорма.ИзменитьРеквизиты(Новые);
ЭтаФорма.ЗначениеПримера = Новый СписокЗначений;
Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "ЗначениеПримера";
Поле.Заголовок = "Выделение учебных меток";
ЭтаФорма.ЗначениеПримера.Добавить("book", "Книга");
ЭтаФорма.ЗначениеПримера.Добавить("pen", "Ручка");
Поле.РасширенноеРедактированиеМножественныхЗначений = Истина;
Поле.РазрешитьДублированиеМножественныхЗначений = Ложь;
Поле.РазрешитьВводПустыхМножественныхЗначений = Ложь;
Поле.ГиперссылкаМножественныхЗначений = Ложь;
Поле.КнопкаОткрытия = Истина;
Поле.Ширина = 60;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить выделение";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Если ЗначениеПримера.Количество() <> 2 Тогда
Сообщить("Для проверки исходных двух меток переоткройте свою форму");
Возврат;
КонецЕсли;
Книга = ЗначениеПримера.НайтиПоЗначению("book");
Ручка = ЗначениеПримера.НайтиПоЗначению("pen");
Если Книга = Неопределено Или Ручка = Неопределено Тогда
ВызватьИсключение "Не найдены две собственные метки book и pen";
КонецЕсли;
Поле = Элементы.ПолеПримера;
ИдентификаторКниги = Книга.ПолучитьИдентификатор();
ИдентификаторРучки = Ручка.ПолучитьИдентификатор();
Идентификаторы = Новый Массив;
Идентификаторы.Добавить(ИдентификаторКниги);
Поле.УстановитьВыделенныеМножественныеЗначения(Идентификаторы);
Выделенные = Поле.ПолучитьВыделенныеМножественныеЗначения();
Сообщить(Выделенные.Количество() = 1 И Выделенные.Найти(ИдентификаторКниги) <> Неопределено);
Идентификаторы.Очистить();
Идентификаторы.Добавить(ИдентификаторРучки);
Поле.УстановитьВыделенныеМножественныеЗначения(Идентификаторы);
Выделенные = Поле.ПолучитьВыделенныеМножественныеЗначения();
Сообщить(Выделенные.Количество() = 1 И Выделенные.Найти(ИдентификаторРучки) <> Неопределено);
Идентификаторы.Очистить();
Поле.УстановитьВыделенныеМножественныеЗначения(Идентификаторы);
Сообщить(Поле.ПолучитьВыделенныеМножественныеЗначения().Количество() = 0);
Сообщить(ЗначениеПримера.Количество() = 2);
Сообщить(Книга.Значение = "book" И Ручка.Значение = "pen");
КонецПроцедуры
Разбор по шагам
Находим элементы по значению и проверяем результат до получения идентификаторов.
ПолучитьИдентификатор возвращает идентификатор элемента, не индекс 0 или 1.
УстановитьВыделенныеМножественныеЗначения получает массив числовых идентификаторов.
ПолучитьВыделенныеМножественныеЗначения проверяется через Найти: порядок возвращённого массива не предполагается.
Пустой массив снимает выделение. Исходные значения и количество остаются прежними.
Как проверить результат
Пять сообщений Истина.
После команды ни одна метка не выделена, обе по-прежнему присутствуют.
Ожидаемый результат
Безопасно проверены установка, чтение и сброс выделения множественных значений.
На что обратить внимание
Методы выделения доступны Windows/веб-клиенту; не переносите клиентский обработчик в мобильный клиент без проверки доступности.
После удаления элемента его старый идентификатор нельзя использовать как идентификатор нового элемента.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Сохранить выбранный элемент при сортировке и изменить только копию списка
Идентификатор элемента отличается от его позиции. Временный способ доставки удаляется; исходный список остаётся из трёх способов.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Тело серверной процедуры учебной обработки. Все три способа создаются самим примером в памяти.
Не подставляйте рабочий СписокЗначений вместо самостоятельно созданного Способы.
Способы = Новый СписокЗначений;
Способы.Добавить("pickup", "Самовывоз");
Способы.Добавить("courier", "Курьер");
Способы.Добавить("post", "Почта");
Самовывоз = Способы.НайтиПоЗначению("pickup");
Идентификатор = Самовывоз.ПолучитьИдентификатор();
Способы.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
Сообщить(Способы.НайтиПоИдентификатору(Идентификатор) = Самовывоз);
Сообщить(Способы.Получить(0).Представление = "Курьер");
Способы.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
Сообщить(Способы.Получить(0).Значение = "post");
Копия = Способы.Скопировать();
Проба = Копия.Вставить(1, "temp", "Пробный способ");
Сообщить(Копия.Индекс(Проба) = 1);
Копия.Сдвинуть(Проба, 1);
Сообщить(Копия.Индекс(Проба) = 2);
Копия.Удалить(Проба);
Копия.ЗаполнитьПометки(Ложь);
Копия.НайтиПоЗначению("pickup").Пометка = Истина;
Сообщить(Не Способы.НайтиПоЗначению("pickup").Пометка);
Сообщить(Копия.НайтиПоЗначению("pickup").Пометка);
Копия.Очистить();
Сообщить(Копия.Количество() = 0);
Сообщить(Способы.Количество() = 3);Разбор по шагам
Находим Самовывоз по устойчивому коду и сохраняем идентификатор самого элемента.
Сортировка по подписи ставит Курьер первым. По коду убыванию — post. Поиск по идентификатору не зависит от этих позиций.
Скопировать создаёт отдельный список. Временный элемент вставляем и переставляем только в копии.
Пометки принадлежат элементам. Изменение пометки копии не должно менять пометку исходного списка.
Очищаем только копию. Исходные три способа остаются доступными.
Как проверить результат
Все девять булевых проверок Истина.
Оригинал содержит три способа без пометки Самовывоза, копия в конце пустая.
Ожидаемый результат
Показаны сортировка, устойчивый идентификатор, позиции и независимая копия списка.
На что обратить внимание
Идентификатор используется в пределах соответствующего списка; это не UUID значения и не переносимый ключ между копиями.
Копирование коллекции не означает глубокое копирование произвольных ссылочных объектов в Значение; в этом уроке значения — строки.
После очистки нельзя обращаться к удалённым элементам копии.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.