Обходимое
Стд::Обходимое<ТипЭлемента>
ТипЭлемента: тип обходимых элементов.
Объект предоставляет возможность обхода своих элементов в цикле для из.
Возможность повторного обхода не гарантируется.
Методы последовательной обработки (Преобразовать, Фильтровать, ...) при типизированном вызове в единой цепочке оптимизируются. Т.е. следующие 2 строчки кода равносильны и приводят только к одному обходу коллекции:
[1, 2, 3].Преобразовать(Число -> Число + 1).Фильтровать(Число -> Число > 3)
[1, 2, 3].КакПоследовательность().Преобразовать(Число -> Число + 1).Фильтровать(Число -> Число > 3).ВМассив()
Оптимизация не работает, при вызове методов от выражения типа неизвестно и при разрывах цепочки:
знч Числа = [1, 2, 3].Преобразовать(Число -> Число + 1) // первая цепочка
знч Результат = Числа.Фильтровать(Число -> Число > 3) // вторая цепочка
Сравнение
Ссылочное
Иерархия типа
Базовые типы: Объект
Дочерние типы: ЧитаемаяКоллекция, ЧитаемоеСоответствие
Методы
ВМассив
ВМассив(): Массив<ТипЭлемента>ВСоответствие
ВСоответствие<ТипКлюча, ТипЗначения>(
ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча,
ИзвлекательЗначения: (ТипЭлемента)->ТипЗначения
): Соответствие<ТипКлюча, ТипЗначения>ТипЗначения: тип вычисляемого значения.
Внимание! На клиенте в функции вычисления нельзя использовать любые асихронные операции, например, вызовы сервера. Это приведёт к возникновению ошибки "Попытка выполнить асинхронное действие!". Аналогичная ошибка может возникнуть при попытке на клиенте отладить эту функцию в отладчике.
Преобразует Обходимое в Соответствие, используя заданные функции для вычисления ключа и значения. При повторяющихся ключах, в соответствии останется только последний элемент обходимого с таким ключом.
Примеры
знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 13, Имя: "Петя"}, {Ид: 5, Имя: "Вася"}]
знч ИдИмя = Сотрудники.ВСоответствие(Элемент -> Элемент.Ид, Элемент -> Элемент.Имя) // Соответствие<Число, Строка>
// { 13 : "Петя",
// 5 : "Вася"}
См. также
ВСоответствиеСКлючами
ВСоответствиеСКлючами<ТипКлюча>(ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча): Соответствие<ТипКлюча, ТипЭлемента>Внимание! На клиенте в функции вычисления нельзя использовать любые асихронные операции, например, вызовы сервера. Это приведёт к возникновению ошибки "Попытка выполнить асинхронное действие!". Аналогичная ошибка может возникнуть при попытке на клиенте отладить эту функцию в отладчике.
Преобразует Обходимое в Соответствие, использ уя заданную функцию для вычисления ключа и элемент обходимого в качестве значения. При повторяющихся ключах, в соответствии останется только последний элемент обходимого с таким ключом.
Примеры
знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 13, Имя: "Петя", Возраст: 24},
// {Ид: 5, Имя: "Вася", Возраст: 30}]
знч СотрудникПоИд = Сотрудники.ВСоответствиеСКлючами(Элемент -> Элемент.Ид) // Соответствие<Число, Сотрудник>
// {13 : {Ид: 13, Имя: "Петя", Возраст: 24},
// 5 : {Ид: 5, Имя: "Вася", Возраст: 30}}
См. также
ВСоответствиеСоЗначениями
ВСоответствиеСоЗначениями<ТипЗначения>(ИзвлекательЗначения: (ТипЭлемента)->ТипЗначения): Соответствие<ТипЭлемента, ТипЗначения>Внимание! На клиенте в функции вычисления нельзя использовать любые асихронные операции, например, вызовы сервера. Это приведёт к возникновению ошибки "Попытка выполнить асинхронное действие!". Аналогичная ошибка может возникнуть при попытке на клиенте отладить эту функцию в отладчике.
Преобразует Обходимое в Соответствие, используя заданную функцию для вычисления значения и элемент обходимого в качестве ключа. При повторяющихся ключах, в соответствии останется только последний элемент обходимого с таким ключом.
Примеры
знч Идентификаторы: Массив<Число> = [13, 5]
знч СотрудникПоИд = Идентификаторы.ВСоответствиеСоЗначениями(Ид -> ПолучитьСотрудникаПоИд(Ид)) // Соответствие<Число, Сотрудник>
// {13 : {Ид: 13, Имя: "Петя", Возраст: 24},
// 5 : {Ид: 5, Имя: "Вася", Возраст: 30}}
См. также
ВоМножество
ВоМножество(): Множество<ТипЭлемента>Примеры
знч Числа = [1, 3, 5, 10, 12, 1, 3, 5]
знч МножествоЧисел = Числа.ВоМножество() // {1, 3, 5, 10, 12}
ВсеСоответствуют
Внимание! На клиенте в функции вычисления нельзя использовать любые асихронные операции, например, вызовы сервера. Это приведёт к возникновению ошибки "Попытка выполнить асинхронное действие!". Аналогичная ошибка может возникнуть при попытке на клиенте отладить эту функцию в отладчике.
Возвращает Истина, если все элементы удовлетворяют условию в предикате. На сервере это операция сокращенного вычисления. Это значит, что вызванные ранее в цепочке вызовов операции, могут быть вызваны не для каждого элемента.
Примеры
знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 13, Имя: "Петя", Отдел: "Администрация"},
// {Ид: 5, Имя: "Вася", Отдел: "Администрация"},
// {Ид: 6, Имя: "Иван", Отдел: "Разработка"}]
Сотрудники.ВсеСоответствуют(Элемент -> Элемент.Отдел == "Разработка") // Ложь
// пример сокращенного вычисления
знч Числа = [1, 2, 3, 4, 5]
знч КвадратыЧисел = <Число>[]
знч ВсеЧетные = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).ВсеСоответствуют(а -> а % 2 == 0) // Ложь
// КвадратыЧисел = [1]
ГруппироватьПо
ГруппироватьПо<ТипКлюча>(ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча): Соответствие<ТипКлюча, Массив<ТипЭлемента>>Внимание! На клиенте в функции вычисления нельзя использовать любые асихронные операции, например, вызовы сервера. Это приведёт к возникновению ошибки "Попытка выполнить асинхронное действие!". Аналогичная ошибка может возникнуть при попытке на клиенте отладить эту функцию в отладчике.
Группирует элементы в соответствии с заданной функцией вычисления ключа. Элементы с одинаковым ключом объединяются в Массив.
ИзвлекательКлюча - функция, применяющаяся к каждому элементу, возвращающая характеристику, по которой будут группироваться элементы.
Перегрузка
ГруппироватьПо<ТипКлюча, ТипЗначения>(ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча, ИзвлекательЗначения: (ТипЭлемента)->ТипЗначения): Соответствие<ТипКлюча, Массив<ТипЗначения>>
ГруппироватьПо<ТипКлюча, ТипЗначения, ТипКоллекции>(ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча, ИзвлекательЗначения: (ТипЭлемента)->ТипЗначения, КонструкторКоллекции: ()->ТипКоллекции): Соответствие<ТипКлюча, ТипКоллекции>
Примеры
знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 13, Имя: "Петя", Отдел: Администрация},
// {Ид: 5, Имя: "Вася", Отдел: Администрация},
// {Ид: 6, Имя: "Иван", Отдел: "Разработка"}]
знч ОтделыИСотрудники: Соответствие<Строка, Массив<Сотрудник>> = Сотрудники.ГруппироватьПо(Элемент -> Элемент.Отдел)
// {
// Администрация: [{Ид: 13, Имя: "Петя", Отдел: Администрация},
// {Ид: 5, Имя: "Вася", Отдел: Администрация}],
// "Разработка": [{Ид: 6, Имя: "Иван", Отдел: "Разработка"}]
// }
ГруппироватьПо
Версия 8.0 и выше
ГруппироватьПо<ТипКлюча, ТипЗначения>(
ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча,
ИзвлекательЗначения: (ТипЭлемента)->ТипЗначения
): Соответствие<ТипКлюча, Массив<ТипЗначения>>ТипЗначения: тип значения.
Внимание! На клиенте в функции вычисления нельзя использовать любые асихронные операции, например, вызовы сервера. Это приведёт к возникновению ошибки "Попытка выполнить асинхронное действие!". Аналогичная ошибка может возникнуть при попытке на клиенте отладить эту функцию в отладчике.
Группирует элементы в соответствии с заданной функцией вычисления ключа. Для элементов с одинаковым ключом вычисляются значения и объединяются в Массив.
ИзвлекательКлюча - функция, применяющаяся к каждому элементу, возвращающая характеристику, по которой будут группироваться элементы.
ИзвлекательЗначения - функция, применяющаяся к каждому элементу, возвращающая значение, которое будет записано в массив.
Перегрузка
ГруппироватьПо<ТипКлюча>(ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча): Соответствие<ТипКлюча, Массив<ТипЭлемента>>
ГруппироватьПо<ТипКлюча, ТипЗначения, ТипКоллекции>(ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча, ИзвлекательЗначения: (ТипЭлемента)->ТипЗначения, КонструкторКоллекции: ()->ТипКоллекции): Соответствие<ТипКлюча, ТипКоллекции>
Примеры
знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 13, Имя: "Петя", Отдел: "Администрация"},
// {Ид: 5, Имя: "Вася", Отдел: "Администрация"},
// {Ид: 6, Имя: "Иван", Отдел: "Разработка"}]
знч ОтделыИСотрудники: Соответствие<Строка, Массив<Строка>> = Сотрудники.ГруппироватьПо(Элемент -> Элемент.Отдел, Элемент -> Элемент.Имя)
// {
// Администрация: ["Петя", "Вася"],
// "Разработка": ["Иван"]
// }
ГруппироватьПо
Версия 8.0 и выше
ГруппироватьПо<ТипКлюча, ТипЗначения, ТипКоллекции>(
ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча,
ИзвлекательЗначения: (ТипЭлемента)->ТипЗначения,
КонструкторКоллекции: ()->ТипКоллекции
): Соответствие<ТипКлюча, ТипКоллекции>ТипЗначения: тип значения.
ТипКоллекции: тип коллекции. Ограничения параметра типа: Стд::Коллекции::Коллекция<ТипЗначения>.
Внимание! На клиенте в функции вычисления нельзя использовать любые асихронные операции, например, вызовы сервера. Это приведёт к возникновению ошибки "Попытка выполнить асинхронное действие!". Аналогичная ошибка может возникнуть при попытке на клиенте отладить эту функцию в отладчике.
Группирует элементы в соответствии с заданной функцией вычисления ключа. Для элементов с одинаковым ключом вычисляются значения и объединяются в Коллекцию.
ИзвлекательКлюча - функция, применяющаяся к каждому элементу, возвращающая характеристику, по которой будут группироваться элементы.
ИзвлекательЗначения - функция, применяющаяся к каждому элементу, возвращающая значение, которое будет записано в коллекцию.
КонструкторКоллекции - конструктор коллекции, которая будет соответствовать ключу в результирующем соответствии.
Перегрузка
ГруппироватьПо<ТипКлюча>(ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча): Соотв етствие<ТипКлюча, Массив<ТипЭлемента>>
ГруппироватьПо<ТипКлюча, ТипЗначения>(ИзвлекательКлюча: (ТипЭлемента)->ТипКлюча, ИзвлекательЗначения: (ТипЭлемента)->ТипЗначения): Соответствие<ТипКлюча, Массив<ТипЗначения>>
Примеры
знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 13, Имя: "Петя", Отдел: "Администрация"},
// {Ид: 5, Имя: "Вася", Отдел: "Администрация"},
// {Ид: 6, Имя: "Иван", Отдел: "Разработка"}]
// {Ид: 8, Имя: "Андрей", Отдел: "Бухгалтерия"}]
// {Ид: 11, Имя: "Вася", Отдел: "Администрация"}]
// {Ид: 3, Имя: "Иван", Отдел: "Разработка"}]
знч ОтделыИСотрудники: Соответствие<Строка, Множество<Строка>> = Сотрудники.ГруппироватьПо(Элемент -> Элемент.Отдел, Элемент -> Элемент.Имя, () -> новый Множество<Строка>())
// {
// "Администрация": {"Петя", "Вася"},
// "Разработка": {"Иван"},
// "Бухгалтерия": {"Андрей"}
// }
ДляКаждого
ДляКаждого(Действие: (ТипЭлемента)->ничто): Массив<ТипЭлемента>Внимание! На клиенте в функции вычисления нельзя использовать любые асихронные операции, например, вызовы сервера. Это приведёт к возникновению ошибки "Попытка выполнить асинхронное действие!". Аналогичная ошибка может возникнуть при попытке на клиенте отладить эту функцию в отладчике.
Выполняет заданное действие для каждого элемента. Не изменяет элементы обходимого. На сервере в сочетании с операцией сокращенного вычисления может быть вызван не для каждого элемента.
Примеры
знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 13, Имя: "Петя"}, {Ид: 5, Имя: "Вася"}]
пер СписокСотрудников: Массив<Строка> = []
Сотрудники.ДляКаждого(Элемент -> СписокСотрудников.Добавить(Элемент.Ид + " - " + Элемент.Имя))
// Содержимое переменной СписокСотрудников:
// ["13 - Петя", "5 - Вася"]
// В примере ниже действие 'а -> КвадратыЧисел.Добавить(а * а)'
// на сервере будет вызвано только для первого элемента
знч Числа = [1, 3, 5]
знч КвадратыЧисел = <Число>[]
знч Первое = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).ПервыйИлиНеопределено() // 1
// КвадратыЧисел = [1]