1с статьи | Курс-репетитор программиста 1С

Создание и наполнение

// создали соответствие без ключей
Соответствие = Новый Соответствие();

// добавили ключ - значение
Соответствие.Вставить("Фамилия", "Еникеев");
Соответствие.Вставить("Имя", "Марат");
Соответствие.Вставить("Отчество", "Артурович");
Соответствие.Вставить(0, ТекущаяДата());

// возможно получение через []                  
// если ключ не найден - получим исключение
Имя = Соответствие["Имя"];              

// оптимально получение через метод Получить
Отчество = Соответствие.Получить("Отчество");

// т.к. если ключа нет, то вернется Неопределено
Значение = Соответствие.Получить(1);
Если Значение = Неопределено Тогда
   Соответствие.Вставить(1, 1000);
КонецЕсли;

Если Соответствие.Количество() Тогда
   // соответствие содержит ключи
КонецЕсли;

Фамилия = Соответствие.Фамилия;

// Почему возникла ошибка
// "Поле объекта не обнаружено (Фамилия)"?

Показать решение

Обход и изменение

// создали соответствие без ключей
Соответствие = Новый Соответствие();

// добавили ключ - значение
Соответствие.Вставить("Фамилия", "Еникеев");
Соответствие.Вставить("Имя", "Марат");
Соответствие.Вставить(10, "Артурович");
Соответствие.Вставить(0, '20230101');
Соответствие.Вставить(1, "новое значение");

// обход осуществляется в порядке
// сортировки по внутреннему ключу
Для Каждого Элемент Из Соответствие Цикл
   // Элемент имеет тип КлючИЗначение 
   ТекстСообщения = СтрШаблон("ключ %1, значение %2", 
      Элемент.Ключ, Элемент.Значение);
   Сообщить(ТекстСообщения);
КонецЦикла; 

// Что будет выведено?

Показать решение

Количество уникальных значений в массиве

Массив = Новый Массив;
// сформируем массив из 100 элементов
// со значениями из диапазона [0,10]
ГСЧ = Новый ГенераторСлучайныхЧисел();           
РазмерМассива = 100;  
Для Индекс = 1 По РазмерМассива Цикл
   Массив.Добавить(ГСЧ.СлучайноеЧисло(0, 10));
КонецЦикла; 

// подсчитаем количество одинаковых 
// элементов массива

// создали соответствие без ключей
// ключом будет значение массива
// значением - количество элементов в массиве
Кэш = Новый Соответствие();

// обходим массив
Для Каждого Элемент Из Массив Цикл
   // получаем значение массива в кэше
   Значение = Кэш.Получить(Элемент);
   Если Значение = Неопределено Тогда
      // если его ещё нет, то
      // добавляем со значением 1
      Кэш.Вставить(Элемент, 1);
   Иначе
      // увеличиваем значение ключа на 1
      Кэш.Вставить(Элемент, Значение + 1);
   КонецЕсли;
КонецЦикла;

// сообщаем результат
Для Каждого Элемент Из Кэш Цикл
   // Элемент имеет тип КлючИЗначение 
   ТекстСообщения = СтрШаблон("значение %1, количество элементов: %2", 
      Элемент.Ключ, Элемент.Значение);
   Сообщить(ТекстСообщения);
КонецЦикла; 

// Значения массива будут выведены в порядке возрастания?

Показать решение

Соответствие (Map)

Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл.

При обходе выбираются элементы соответствия. Порядок обхода неопределен.

Возможно обращение к значению элемента посредством оператора [...].

В качестве аргумента передается значение ключа элемента.

Конструктор (На основании фиксированного соответствия)

Синтаксис: Новый Соответствие(<ФиксированноеСоответствие>)

Параметры:

<ФиксированноеСоответствие> (необязательный) Тип: ФиксированноеСоответствие. Фиксированное соответствие.

Описание: Создаваемое соответствие заполняется элементами из исходного фиксированного соответствия.

Конструктор (По умолчанию)

Синтаксис: Новый Соответствие()

Описание: Создает пустое соответствие (без элементов).

Вставить (Insert)

Синтаксис: Вставить(<Ключ>, <Значение>)

Параметры:

<Ключ> (обязательный) Тип: Произвольный. Ключ устанавливаемого элемента. <Значение> (необязательный) Тип: Произвольный. Значение устанавливаемого элемента. Если не указан, будет установлено Неопределено.

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

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

Количество (Count)

Синтаксис: Количество()

Возвращаемое значение:

Тип: Число.

Описание: Получает количество элементов соответствия.

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

Очистить (Clear)

Синтаксис: Очистить()

Описание: Удаляет все элементы соответствия.

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

Получить (Get)

Синтаксис: Получить(<Ключ>)

Параметры:

<Ключ> (обязательный) Тип: Произвольный. Ключ значения.

Возвращаемое значение: Значение элемента соответствия. Неопределено - если указанный ключ отсутствует.

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

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

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

Удалить (Delete)

Синтаксис: Удалить(<Ключ>)

Параметры:

<Ключ> (обязательный) Тип: Произвольный. Ключ удаляемого элемента.

Описание: Удаляет элемент соответствия с заданным ключом.

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

Слишком маленькое разрешение экрана.