Создание и наполнение
// создали соответствие без ключей Соответствие = Новый Соответствие(); // добавили ключ - значение Соответствие.Вставить("Фамилия", "Еникеев"); Соответствие.Вставить("Имя", "Марат"); Соответствие.Вставить("Отчество", "Артурович"); Соответствие.Вставить(0, ТекущаяДата()); // возможно получение через [] // если ключ не найден - получим исключение Имя = Соответствие["Имя"]; // оптимально получение через метод Получить Отчество = Соответствие.Получить("Отчество"); // т.к. если ключа нет, то вернется Неопределено Значение = Соответствие.Получить(1); Если Значение = Неопределено Тогда Соответствие.Вставить(1, 1000); КонецЕсли; Если Соответствие.Количество() Тогда // соответствие содержит ключи КонецЕсли; Фамилия = Соответствие.Фамилия; // Почему возникла ошибка // "Поле объекта не обнаружено (Фамилия)"?
Показать решение
// потому что получение значения напрямую // (через .) не поддерживается
Обход и изменение
// создали соответствие без ключей Соответствие = Новый Соответствие(); // добавили ключ - значение Соответствие.Вставить("Фамилия", "Еникеев"); Соответствие.Вставить("Имя", "Марат"); Соответствие.Вставить(10, "Артурович"); Соответствие.Вставить(0, '20230101'); Соответствие.Вставить(1, "новое значение"); // обход осуществляется в порядке // сортировки по внутреннему ключу Для Каждого Элемент Из Соответствие Цикл // Элемент имеет тип КлючИЗначение ТекстСообщения = СтрШаблон("ключ %1, значение %2", Элемент.Ключ, Элемент.Значение); Сообщить(ТекстСообщения); КонецЦикла; // Что будет выведено?
Показать решение
ключ 1, значение новое значение ключ 0, значение 01.01.2023 0:00:00 ключ 10, значение Артурович ключ Имя, значение Марат ключ Фамилия, значение Еникеев // вставка существующего ключа замещает его значение // элементы коллекции сортируются по значению внутреннего ключа
Количество уникальных значений в массиве
Массив = Новый Массив; // сформируем массив из 100 элементов // со значениями из диапазона [0,10] ГСЧ = Новый ГенераторСлучайныхЧисел(); РазмерМассива = 100; Для Индекс = 1 По РазмерМассива Цикл Массив.Добавить(ГСЧ.СлучайноеЧисло(0, 10)); КонецЦикла; // подсчитаем количество одинаковых // элементов массива // создали соответствие без ключей // ключом будет значение массива // значением - количество элементов в массиве Кэш = Новый Соответствие(); // обходим массив Для Каждого Элемент Из Массив Цикл // получаем значение массива в кэше Значение = Кэш.Получить(Элемент); Если Значение = Неопределено Тогда // если его ещё нет, то // добавляем со значением 1 Кэш.Вставить(Элемент, 1); Иначе // увеличиваем значение ключа на 1 Кэш.Вставить(Элемент, Значение + 1); КонецЕсли; КонецЦикла; // сообщаем результат Для Каждого Элемент Из Кэш Цикл // Элемент имеет тип КлючИЗначение ТекстСообщения = СтрШаблон("значение %1, количество элементов: %2", Элемент.Ключ, Элемент.Значение); Сообщить(ТекстСообщения); КонецЦикла; // Значения массива будут выведены в порядке возрастания?
Показать решение
// нет, элементы соответствия сортируются по значению внутреннего ключа
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл.
При обходе выбираются элементы соответствия. Порядок обхода неопределен.
Возможно обращение к значению элемента посредством оператора [...].
В качестве аргумента передается значение ключа элемента.
Синтаксис: Новый Соответствие(<ФиксированноеСоответствие>)
Параметры:
<ФиксированноеСоответствие> (необязательный) Тип: ФиксированноеСоответствие. Фиксированное соответствие.
Описание: Создаваемое соответствие заполняется элементами из исходного фиксированного соответствия.
Синтаксис: Новый Соответствие()
Описание: Создает пустое соответствие (без элементов).
Синтаксис: Вставить(<Ключ>, <Значение>)
Параметры:
<Ключ> (обязательный) Тип: Произвольный. Ключ устанавливаемого элемента. <Значение> (необязательный) Тип: Произвольный. Значение устанавливаемого элемента. Если не указан, будет установлено Неопределено.
Описание: Устанавливает значение элемента соответствия по ключу. Если элемент с переданным значением ключа существует, то его значение заменяется, в противном случае добавляется новый элемент.
Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Синтаксис: Количество()
Возвращаемое значение:
Тип: Число.
Описание: Получает количество элементов соответствия.
Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Синтаксис: Очистить()
Описание: Удаляет все элементы соответствия.
Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Синтаксис: Получить(<Ключ>)
Параметры:
<Ключ> (обязательный) Тип: Произвольный. Ключ значения.
Возвращаемое значение: Значение элемента соответствия. Неопределено - если указанный ключ отсутствует.
Описание: Получает значение по ключу. Работает аналогично оператору [].
Примечание: Применяется в случаях, когда использование оператора [] невозможно.
Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Синтаксис: Удалить(<Ключ>)
Параметры:
<Ключ> (обязательный) Тип: Произвольный. Ключ удаляемого элемента.
Описание: Удаляет элемент соответствия с заданным ключом.
Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.