Массивы и коллекции / Множества

//Отдельного типа множества в 1С нет,
//его роль играет Соответствие: значимы
//ключи, а значение везде Истина
Первое = Новый Соответствие;
Первое.Вставить(1Истина);
Первое.Вставить(2Истина);

Второе = Новый Соответствие;
Второе.Вставить(2Истина);
Второе.Вставить(1Истина);

Третье = Новый Соответствие;
Третье.Вставить(1Истина);
Третье.Вставить(2Истина);
Третье.Вставить(3Истина);

//Порядок вставки на равенство не влияет
Равны = Совпадают(Первое, Второе);
//Равны = Истина

Подмножество = Входит(Первое, Третье);
//Подмножество = Истина

Подмножество = Входит(Третье, Первое);
//Подмножество = Ложь

Сообщить("Равны = " + Равны);

//Все ли ключи меньшего есть в большем
Функция Входит(Меньшее, Большее)
    Для Каждого Элемент Из Меньшее Цикл
        Если Большее.Получить(Элемент.Ключ) <>
            Истина Тогда
            Возврат Ложь;
        КонецЕсли;
    КонецЦикла;

    Возврат Истина;
КонецФункции

//Равенство: тот же размер и вхождение
Функция Совпадают(Первое, Второе)
    Если Первое.Количество() <>
        Второе.Количество(Тогда
        Возврат Ложь;
    КонецЕсли;

    Возврат Входит(Первое, Второе);
КонецФункции