Перейти к основному содержимому

Обходимое

Стд::Обходимое<ТипЭлемента>

ТипЭлемента: тип обходимых элементов.

Объект предоставляет возможность обхода своих элементов в цикле для из. Возможность повторного обхода не гарантируется.

Методы последовательной обработки (Преобразовать, Фильтровать и т. д.) при типизированном вызове в единой цепочке оптимизируются. То есть следующие две строчки кода равнозначны и приводят только к одному обходу коллекции:

знч Результат1 =[1, 2, 3].Преобразовать(Число -> Число + 1).Фильтровать(Число -> Число > 3)
знч Результат2 =[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]

ДляКаждого​

ДляКаждого(Действие: (Число, ТипЭлемента)->ничто): Массив<ТипЭлемента>
Выполняет заданное действие для каждого элемента и его индекса. Не изменяет элементы Обходимого. На сервере в сочетании с операцией сокращенного вычисления может быть вызван не для каждого элемента.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Перегрузка
ДляКаждого(Действие: (ТипЭлемента)->ничто): Массив<ТипЭлемента>

Примеры​

знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 13, Имя: "Петя"}, {Ид: 5, Имя: "Вася"}]

пер СписокСотрудников: Массив<Строка> = []
Сотрудники.ДляКаждого((Индекс, Элемент) -> СписокСотрудников.Добавить(Индекс + ") " + Элемент.Имя))
// Содержимое переменной СписокСотрудников:
// ["0) Петя", "1) Вася"]

// В примере ниже действие 'а -> КвадратыЧисел.Добавить(а * а)'
// на сервере будет вызвано только для первого элемента
знч Числа = [1, 3, 5]
знч КвадратыЧисел = <Число>[]
знч Первое = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).ПервыйИлиНеопределено() // 1
// КвадратыЧисел = [1]

Единственный​

Единственный(): ТипЭлемента
Возвращает единственный содержащийся элемент.

Вызов приводит к частичному обходу. Если реализация не поддерживает повторный обход — вызвать можно только один раз.

Исключения​


ЕдинственныйИлиНеопределено​

Версия 7.0 и выше

ЕдинственныйИлиНеопределено(): ТипЭлемента?
Возвращает единственный содержащийся элемент или Неопределено.

Вызов приводит к частичному обходу. Если реализация не поддерживает повторный обход — вызвать можно только один раз.

Исключения​

Прошлые имена: ЕдинственныйИлиУмолчание


ЕдинственныйИлиУмолчание​

Версия 7.0 и выше

ЕдинственныйИлиУмолчание(Умолчание: ТипЭлемента): ТипЭлемента
Возвращает единственный содержащийся элемент или значение Умолчание, если элементов нет.

Вызов приводит к частичному обходу. Если реализация не поддерживает повторный обход — вызвать можно только один раз.

Исключения​

Перегрузка
ЕдинственныйИлиУмолчание<ТипУмолчания>(ВычислительУмолчания: ()->ТипЭлемента|ТипУмолчания): ТипЭлемента|ТипУмолчания


ЕдинственныйИлиУмолчание​

Версия 7.0 и выше

ЕдинственныйИлиУмолчание<ТипУмолчания>(ВычислительУмолчания: ()->ТипЭлемента|ТипУмолчания): ТипЭлемента|ТипУмолчания
ТипУмолчания: тип умолчания.

Возвращает единственный содержащийся элемент или значение, вычисленное с помощью ВычислительУмолчания, если элементов нет.

Вызов приводит к частичному обходу. Если реализация не поддерживает повторный обход — вызвать можно только один раз.

Исключения​

Перегрузка
ЕдинственныйИлиУмолчание(Умолчание: ТипЭлемента): ТипЭлемента


ЕдинственныйИлиУмолчание​

Версия 6.0 и ниже

ЕдинственныйИлиУмолчание(): ТипЭлемента?
Метод переименован в ЕдинственныйИлиНеопределено.


ЕдинственныйИлиУмолчание​

Версия 6.0 и ниже

ЕдинственныйИлиУмолчание<ТипУмолчания>(Умолчание: ТипЭлемента|ТипУмолчания): ТипЭлемента|ТипУмолчания
Метод заменен на ЕдинственныйИлиУмолчание.


ЕстьСоответствия​

ЕстьСоответствия(Предикат: (ТипЭлемента)->Булево): Булево
Возвращает Истина, если хотя бы один из элементов удовлетворяет заданному условию.

На сервере это операция сокращенного вычисления. Это значит, что вызванные ранее в цепочке вызовов операции могут быть вызваны не для каждого элемента.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Примеры​

знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 13, Имя: "Петя", Отдел: "Администрация"},
// {Ид: 5, Имя: "Вася", Отдел: "Администрация"},
// {Ид: 6, Имя: "Иван", Отдел: "Разработка"}]

Сотрудники.ЕстьСоответствия(Элемент -> Элемент.Отдел == "Администрация") // Истина

// Пример сокращенного вычисления
знч Числа = [1, 2, 3, 4, 5]
знч КвадратыЧисел = <Число>[]
знч ЕстьЧетные = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).ЕстьСоответствия(а -> а % 2 == 0) // Истина
// КвадратыЧисел = [1, 4]

КакПоследовательность​

КакПоследовательность(): Последовательность<ТипЭлемента>
Преобразует Обходимое в Последовательность.


Максимум​

<ItemType это Сравнимое<ТипЭлемента>> Максимум(): ТипЭлемента
Возвращает максимальный элемент из элементов Обходимого типа Сравнимое.

Исключения​

Примеры​

знч Числа = [1, 3, 5, 10, 12]
знч Макс = Числа.Максимум() // 12

МаксимумПо​

МаксимумПо(Извлекатель: (ТипЭлемента)->Сравнимое<неизвестно>): ТипЭлемента
Возвращает максимальный по заданному свойству элемент.

Примеры​

знч Сотрудники: Массив<Сотрудник> = []
// [{Имя: "Петя", Возраст: 25},
// {Имя: "Вася", Возраст: 24},
// {Имя: "Иван", Возраст: 30}]

знч СтаршийСотрудник: Сотрудник = Сотрудники.МаксимумПо(Элемент -> Элемент.Возраст)
// {Имя: "Иван", Возраст: 30}

Минимум​

<ItemType это Сравнимое<ТипЭлемента>> Минимум(): ТипЭлемента
Возвращает минимальный элемент из элементов Обходимого типа Сравнимое.

Исключения​

Примеры​

знч Числа = [1, 3, 5, 10, 12]
знч Минимум: Число = Числа.Минимум() // 1

МинимумПо​

МинимумПо(Извлекатель: (ТипЭлемента)->Сравнимое<неизвестно>): ТипЭлемента
Возвращает минимальный по заданному свойству элемент.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Исключения​

Примеры​

знч Сотрудники: Массив<Сотрудник> = []
// [{Имя: "Петя", Возраст: 25},
// {Имя: "Вася", Возраст: 24},
// {Имя: "Иван", Возраст: 30}]

знч МладшийСотрудник: Сотрудник = Сотрудники.МинимумПо(Элемент -> Элемент.Возраст)
// {Имя: "Вася", Возраст: 24}

НетСоответствий​

НетСоответствий(Предикат: (ТипЭлемента)->Булево): Булево
Возвращает Истина, если ни один из элементов не удовлетворяет заданному условию.

На сервере это операция сокращенного вычисления. Это значит, что вызванные ранее в цепочке вызовов операции могут быть вызваны не для каждого элемента.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Примеры​

знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 13, Имя: "Петя", Отдел: "Администрация"},
// {Ид: 5, Имя: "Вася", Отдел: "Администрация"},
// {Ид: 6, Имя: "Иван", Отдел: "Разработка"}]

Сотрудники.НетСоответствий(Элемент -> Элемент.Отдел == "Бухгалтерия") // Истина

// Пример сокращенного вычисления
знч Числа = [1, 2, 3, 4, 5]
знч КвадратыЧисел = <Число>[]
знч НетЧетных = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).НетСоответствий(а -> а % 2 == 0) // Ложь
// КвадратыЧисел = [1, 4]

Объединить​

@ПроверятьИспользованиеЗначения
Объединить(Обходимое: Обходимое<ТипЭлемента>): Массив<ТипЭлемента>
Объединяет элементы текущего Обходимого с элементами указанного Обходимого и возвращает новый массив.

Перегрузка
Объединить<ТипОбходимого, ТипРезультата>(Обходимое: Обходимое<ТипОбходимого>, Преобразователь: (ТипЭлемента, ТипОбходимого)->ТипРезультата): Массив<ТипРезультата>

Примеры​

знч Сотрудники: Массив<Сотрудник> = []
// [{Имя: "Петя", Возраст: 25},
// {Имя: "Вася", Возраст: 24}]

знч Сотрудники2: Массив<Сотрудник> = []
// [{Имя: "Иван", Возраст: 26},
// {Имя: "Андрей", Возраст: 27}]

знч ВсеСотрудники: Массив<Сотрудник> = Сотрудники.Объединить(Сотрудники2)
// [{Имя: "Петя", Возраст: 25},
// {Имя: "Вася", Возраст: 24},
// {Имя: "Иван", Возраст: 26},
// {Имя: "Андрей", Возраст: 27}]

Объединить​

@ПроверятьИспользованиеЗначения
Объединить<ТипОбходимого, ТипРезультата>(
  Обходимое: Обходимое<ТипОбходимого>,
  Преобразователь: (ТипЭлемента, ТипОбходимого)->ТипРезультата
): Массив<ТипРезультата>
ТипРезультата: тип результата.
ТипОбходимого: тип объединяемых элементов.

Объединяет текущее Обходимое с переданным. Попарно берет элементы из каждого Обходимого и применяет к ним функцию Преобразователь для получения результирующего элемента. Итоговое Обходимое имеет длину кратчайшего из исходных. Лишние элементы из более длинного Обходимого игнорируются.

Перегрузка
Объединить(Обходимое: Обходимое<ТипЭлемента>): Массив<ТипЭлемента>

Примеры​

знч Числа: Массив<Число> = [1, 2, 4, 8]

знч Строки: Массив<Строка> = ["aa", "ab", "ac"]

знч Пары: Массив<КлючИЗначение<Число, Строка>> = Числа.Объединить(Строки, (Ч, С) -> новый КлючИЗначение<Число, Строка>(Ч, С))
// [{1: "aa"}, {2: "ab"}, {4: "ac"}]

Первый​

Первый(): ТипЭлемента
Возвращает первый элемент.

Вызов приводит к частичному обходу. Если реализация не поддерживает повторный обход — вызвать можно только один раз.

На сервере это операция сокращенного вычисления. Это значит, что вызванные ранее в цепочке вызовов операции могут быть вызваны не для каждого элемента.

Исключения​


ПервыйИлиНеопределено​

Версия 7.0 и выше

ПервыйИлиНеопределено(): ТипЭлемента?
Возвращает первый элемент или Неопределено.

Вызов приводит к частичному обходу. Если реализация не поддерживает повторный обход — вызвать можно только один раз.

На сервере это операция сокращенного вычисления. Это значит, что вызванные ранее в цепочке вызовов операции могут быть вызваны не для каждого элемента.

Примеры​

знч Числа = [1, 3, 5, 10, 12, 15, 20]
знч Первый = Числа.ПервыйИлиНеопределено() // 1

// Пример сокращенного вычисления
знч КвадратыЧисел = <Число>[]
знч Первый1 = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).ПервыйИлиНеопределено() // 1
// КвадратыЧисел = [1]

Прошлые имена: ПервыйИлиУмолчание


ПервыйИлиУмолчание​

Версия 7.0 и выше

ПервыйИлиУмолчание(Умолчание: ТипЭлемента): ТипЭлемента
Возвращает первый элемент или значение Умолчание, если элементов нет.

Вызов приводит к частичному обходу. Если реализация не поддерживает повторный обход — вызвать можно только один раз.

На сервере это операция сокращенного вычисления. Это значит, что вызванные ранее в цепочке вызовов операции могут быть вызваны не для каждого элемента.

Перегрузка
ПервыйИлиУмолчание<ТипУмолчания>(ВычислительУмолчания: ()->ТипЭлемента|ТипУмолчания): ТипЭлемента|ТипУмолчания

Примеры​

знч Числа = [1, 3, 5, 10, 12, 15, 20]
знч Первый = Числа.ПервыйИлиУмолчание(0) // 1

// Пример сокращенного вычисления
знч КвадратыЧисел = <Число>[]
знч Первый1 = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).ПервыйИлиУмолчание(0) // 1
// КвадратыЧисел = [1]

ПервыйИлиУмолчание​

Версия 7.0 и выше

ПервыйИлиУмолчание<ТипУмолчания>(ВычислительУмолчания: ()->ТипЭлемента|ТипУмолчания): ТипЭлемента|ТипУмолчания
ТипУмолчания: тип умолчания.

Возвращает первый элемент или значение, вычисленное с помощью ВычислительУмолчания, если элементов нет.

Вызов приводит к частичному обходу. Если реализация не поддерживает повторный обход — вызвать можно только один раз.

На сервере это операция сокращенного вычисления. Это значит, что вызванные ранее в цепочке вызовов операции могут быть вызваны не для каждого элемента.

Перегрузка
ПервыйИлиУмолчание(Умолчание: ТипЭлемента): ТипЭлемента

Примеры​

знч Числа = [1, 3, 5, 10, 12, 15, 20]
знч Первый = Числа.ПервыйИлиУмолчание(() -> 0) // 1

// Пример сокращенного вычисления
знч КвадратыЧисел = <Число>[]
знч Первый1 = Числа.ДляКаждого(а -> КвадратыЧисел.Добавить(а * а)).ПервыйИлиУмолчание(() -> 0) // 1
// КвадратыЧисел = [1]

ПервыйИлиУмолчание​

Версия 6.0 и ниже

ПервыйИлиУмолчание(): ТипЭлемента?
Метод переименован в ПервыйИлиНеопределено.


ПервыйИлиУмолчание​

Версия 6.0 и ниже

ПервыйИлиУмолчание<ТипУмолчания>(Умолчание: ТипЭлемента|ТипУмолчания): ТипЭлемента|ТипУмолчания
Метод заменен на ПервыйИлиУмолчание.


ПотомСортироватьПо​

@ПроверятьИспользованиеЗначения
ПотомСортироватьПо(
  Извлекатель: (ТипЭлемента)->Сравнимое<неизвестно>,
  Направление: НаправлениеСортировки = НаправлениеСортировки.ПоВозрастанию
): Массив<ТипЭлемента>
Выполняет дополнительную сортировку, используя Извлекатель для сравнения элементов. Возвращает новый отсортированный массив.

Извлекатель — функция, применяющаяся к каждому элементу и возвращающая характеристику, которая будет сравниваться с характеристиками остальных значений для упорядочивания. Например, для структуры Извлекатель может возвращать свойство, по которому сравниваются структуры.

Дополнительная сортировка данным методом работает только в случае вызова по цепочке в типизированном коде (см. описание типа Обходимое) после метода СортироватьПо или другого ПотомСортироватьПо. При нарушении этих условий метод ведет себя как СортироватьПо и заново сортирует коллекцию. Для обхода этих ограничений используйте ленивую версию через метод КакПоследовательность.

Сложность алгоритма сортировки равна O(n log n).

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Примеры​

знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 13, Возраст: 31, Имя: "Петя"},
// {Ид: 18, Возраст: 42, Имя: "Иван"},
// {Ид: 5, Возраст: 42, Имя: "Вася"}]

знч ПоВозрастаниюИд = Сотрудники.СортироватьПо(Элемент -> Элемент.Возраст).ПотомСортироватьПо(Элемент -> Элемент.Ид)
// [{Ид: 13, Возраст: 31, Имя: "Петя"},
// {Ид: 5, Возраст: 42, Имя: "Вася"},
// {Ид: 18, Возраст: 42, Имя: "Иван"}]

Преобразовать​

Преобразовать<ТипРезультата>(Функция: (Число, ТипЭлемента)->ТипРезультата): Массив<ТипРезультата>
ТипРезультата: тип результата.

Применяет функцию к каждому элементу Обходимого и возвращает массив с результатами. Помимо элемента Обходимого, в функции доступен его индекс.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Перегрузка
Преобразовать<ТипРезультата>(Функция: (ТипЭлемента)->ТипРезультата, ПропуститьНеопределено: Булево = Истина): Массив<ТипРезультата>

Примеры​

знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 1, Имя: "Петя"}, {Ид: 2, Имя: "Вася"}]
знч Имена: Массив<Строка> = Сотрудники.Преобразовать((Индекс, Сотрудник) -> Индекс + ") " + Сотрудник.Имя)
// ["0) Петя", "1) Вася"]

Преобразовать​

Преобразовать<ТипРезультата>(
  Функция: (ТипЭлемента)->ТипРезультата,
  ПропуститьНеопределено: Булево = Истина
): Массив<ТипРезультата>
ТипРезультата: тип результата.

Применяет функцию к каждому элементу Обходимого и возвращает массив с результатами.

Если параметр ПропуститьНеопределено имеет значение Истина и результатом функции является Неопределено, элемент не будет включен в результирующий массив, иначе будет.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Перегрузка
Преобразовать<ТипРезультата>(Функция: (Число, ТипЭлемента)->ТипРезультата): Массив<ТипРезультата>

Примеры​

знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 1, Имя: "Петя"}, {Ид: 2, Имя: "Вася"}]
знч Имена: Массив<Строка> = Сотрудники.Преобразовать(Сотрудник -> Сотрудник.Имя)
// ["Петя", "Вася"]

ПреобразоватьЛинейно​

ПреобразоватьЛинейно<ТипРезультата>(Функция: (ТипЭлемента)->Обходимое<ТипРезультата>): Массив<ТипРезультата>
ТипРезультата: тип результата.

Преобразует каждый элемент Обходимого в Обходимое и объединяет в общий массив.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Перегрузка
ПреобразоватьЛинейно<ТипРезультата>(Функция: (Число, ТипЭлемента)->Обходимое<ТипРезультата>): Массив<ТипРезультата>

Примеры​

знч Отделы: Массив<Отдел> = []
// [{Ид: 1, Сотрудники: ["Петя", "Вася"]},
// {Ид: 2, Сотрудники: ["Иван", "Андрей"]}]

знч ВсеСотрудники: Массив<Строка> = Отделы.ПреобразоватьЛинейно(Отдел -> Отдел.Сотрудники)
// ["Петя", "Вася", "Иван", "Андрей"]

ПреобразоватьЛинейно​

ПреобразоватьЛинейно<ТипРезультата>(Функция: (Число, ТипЭлемента)->Обходимое<ТипРезультата>): Массив<ТипРезультата>
ТипРезультата: тип результата.

Преобразует каждый элемент Обходимого в Обходимое и объединяет в общий массив. Помимо элемента Обходимого, в функции доступен его индекс.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Перегрузка
ПреобразоватьЛинейно<ТипРезультата>(Функция: (ТипЭлемента)->Обходимое<ТипРезультата>): Массив<ТипРезультата>

Примеры​

знч Отделы: Массив<Отдел> = []
// [{Ид: 1, Сотрудники: ["Петя", "Вася"]},
// {Ид: 2, Сотрудники: ["Иван", "Андрей"]}]

знч ВсеСотрудники: Массив<Строка> = Отделы.ПреобразоватьЛинейно(
(Индекс, Отдел) -> Отдел.Сотрудники.Преобразовать(е -> "Отдел " + (Индекс + 1) + ": " + е)
)
// ["Отдел 1: Петя", "Отдел 1: Вася", "Отдел 2: Иван", "Отдел 2: Андрей"]

ПропуститьНеопределено​

ПропуститьНеопределено(): Массив<ТипЭлемента>
Исключает Неопределено из элементов Обходимого. Также изменяет тип элементов Обходимого, исключая Неопределено из его состава.

Примеры​

знч СоставнойМассив = [1, 2, "Петя", Неопределено]
знч Список = СоставнойМассив.ПропуститьНеопределено() // [1, 2, "Петя"]
Список.ПолучитьТип() // Массив<Число|Строка>

Пусто​

Пусто(): Булево
Проверяет, есть ли элементы.


Свернуть​

Свернуть(Операция: (ТипЭлемента, ТипЭлемента)->ТипЭлемента): ТипЭлемента
Сводит все элементы Обходимого к одному значению с помощью заданной операции.

Операция — функция, которая принимает два аргумента, выполняет над ними указанную операцию и возвращает результат. Затем эта функция опять применяется к результату и следующему элементу.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Исключения​

Перегрузка
Свернуть<ТипРезультата>(НачальноеЗначение: ТипРезультата, Операция: (ТипРезультата, ТипЭлемента)->ТипРезультата): ТипРезультата

Примеры​

знч Числа = [1, 3, 5, 10]
знч Сумма = Числа.Свернуть((а, б) -> а + б) // 19

Свернуть​

Версия 10.0 и выше

Свернуть<ТипРезультата>(
  НачальноеЗначение: ТипРезультата,
  Операция: (ТипРезультата, ТипЭлемента)->ТипРезультата
): ТипРезультата
ТипРезультата: тип результата.

Сводит все элементы Обходимого к одному значению с помощью заданной операции и начального значения.

Операция — функция, которая принимает два аргумента, выполняет над ними заданную операцию и возвращает результат. Затем эта функция опять применяется к результату и следующему элементу.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Перегрузка
Свернуть(Операция: (ТипЭлемента, ТипЭлемента)->ТипЭлемента): ТипЭлемента

Примеры​

знч Числа = [1, 3, 5, 10]
знч Сумма = Числа.Свернуть(100, (а, б) -> а + б) // 119

Свернуть​

Версия 9.0 и ниже

Свернуть(
  НачальноеЗначение: ТипЭлемента,
  Операция: (ТипЭлемента, ТипЭлемента)->ТипЭлемента
): ТипЭлемента
Метод заменен на Свернуть.


Соединить​

<ItemType это Строка> Соединить(Разделитель: Строка = ""): Строка
Соединяет элементы в одну строку, используя указанный разделитель.

Примеры​

знч Сотрудники = ["Петя", "Вася", "Иван"]
знч Список = Сотрудники.Соединить(", ") // "Петя, Вася, Иван"

Сортировать​

@ПроверятьИспользованиеЗначения
Сортировать(Компаратор: (ТипЭлемента, ТипЭлемента)->Число): Массив<ТипЭлемента>
Сортирует Обходимое, используя Компаратор для сравнения элементов. Возвращает новый отсортированный массив.

Сложность алгоритма сортировки равна O(n log n).

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Перегрузка
<ItemType это Сравнимое<ТипЭлемента>> Сортировать(Направление: НаправлениеСортировки = НаправлениеСортировки.ПоВозрастанию): Массив<ТипЭлемента>

Примеры​

знч Числа = [10, 12, 1, 3, 5]
знч ПоВозрастанию = Числа.Сортировать((а, б) -> а - б) // [1, 3, 5, 10, 12]
знч ПоУбыванию = Числа.Сортировать((а, б) -> б - а) // [12, 10, 5, 3, 1]

Сортировать​

@ПроверятьИспользованиеЗначения
<ItemType это Сравнимое<ТипЭлемента>> Сортировать(Направление: НаправлениеСортировки = НаправлениеСортировки.ПоВозрастанию): Массив<ТипЭлемента>
Сортирует элементы Обходимого типа Сравнимое. Возвращает новый отсортированный массив.

Сложность алгоритма сортировки равна O(n log n).

Перегрузка
Сортировать(Компаратор: (ТипЭлемента, ТипЭлемента)->Число): Массив<ТипЭлемента>

Примеры​

знч Числа = [10, 12, 1, 3, 5]
знч ПоВозрастанию = Числа.Сортировать() // [1, 3, 5, 10, 12]
знч ПоУбыванию = Числа.Сортировать(НаправлениеСортировки.ПоУбыванию) // [12, 10, 5, 3, 1]

СортироватьПо​

@ПроверятьИспользованиеЗначения
СортироватьПо(
  Извлекатель: (ТипЭлемента)->Сравнимое<неизвестно>,
  Направление: НаправлениеСортировки = НаправлениеСортировки.ПоВозрастанию
): Массив<ТипЭлемента>
Сортирует Обходимое, используя Извлекатель для сравнения элементов. Возвращает новый отсортированный массив.

Извлекатель — функция, применяющаяся к каждому элементу и возвращающая характеристику, которая будет сравниваться с характеристиками остальных значений для упорядочивания. Например, для структуры Извлекатель может возвращать свойство, по которому сравниваются структуры.

Сложность алгоритма сортировки равна O(n log n).

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Примеры​

знч Сотрудники: Массив<Сотрудник> = []
// [{Ид: 13, Имя: "Петя"}, {Ид: 5, Имя: "Вася"}]
знч ПоВозрастаниюИд = Сотрудники.СортироватьПо(Элемент -> Элемент.Ид)
// [{Ид: 5, Имя: "Вася"}, {Ид: 13, Имя: "Петя"}]

Среднее​

<ItemType это Число> Среднее(): Число
Возвращает среднее арифметическое элементов типа Число.

Исключения​

Примеры​

знч Среднее = [1, 2, 3, 4, 5].Среднее() // 3

СреднееИлиУмолчание​

<ItemType это Число> СреднееИлиУмолчание(Умолчание: Число = 0): Число
Возвращает среднее арифметическое элементов типа Число или Умолчание, если элементов нет.

Примеры​

знч Среднее = [1, 2, 3, 4, 5].СреднееИлиУмолчание() // 3
знч СреднееИлиУмолчание = <Число>[].СреднееИлиУмолчание(5) // 5

Сумма​

<ItemType это Число> Сумма(): Число
Возвращает сумму элементов типа Число или 0, если элементов нет.

Примеры​

знч Сумма = [1, 2, 3, 4, 5].Сумма() // 15

Уникальные​

Уникальные(): Массив<ТипЭлемента>
Возвращает новый массив, в котором содержатся только уникальные элементы Обходимого. При наличии одинаковых значений в результирующий массив попадет первое вхождение.

Примеры​

знч Числа = [12, 10, 5, 3, 1, 3, 5, 10]
знч УникальныеЧисла = Числа.Уникальные() // [12, 10, 5, 3, 1]

УникальныеПо​

УникальныеПо<ТипСвойства>(Извлекатель: (ТипЭлемента)->ТипСвойства): Массив<ТипЭлемента>
ТипСвойства: тип свойства.

Возвращает новый массив, в котором содержатся только уникальные по определенному свойству элементы Обходимого. При наличии одинаковых свойств в результирующий массив попадет первое вхождение.

Извлекатель — функция, применяющаяся к каждому элементу и возвращающая характеристику, по которой будет определяться уникальность элементов.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Примеры​

знч Сотрудники: Массив<Сотрудник> = []
// [{Имя: "Петя", Возраст: 25},
// {Имя: "Вася", Возраст: 24},
// {Имя: "Иван", Возраст: 25}]

знч УникальныеПоВозрасту: Массив<Сотрудник> = Сотрудники.УникальныеПо(Элемент -> Элемент.Возраст)
// [{Имя: "Петя", Возраст: 25},
// {Имя: "Вася", Возраст: 24}]

Фильтровать​

@ПроверятьИспользованиеЗначения
Фильтровать(Фильтр: (ТипЭлемента)->Булево): Массив<ТипЭлемента>
Фильтрует элементы Обходимого по заданному критерию.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Перегрузка
Фильтровать(Фильтр: (Число, ТипЭлемента)->Булево): Массив<ТипЭлемента>

Примеры​

знч Числа = [1, 3, 5, 10, 12]
знч Четные = Числа.Фильтровать(Элемент -> Элемент % 2 == 0) // [10, 12]

Фильтровать​

@ПроверятьИспользованиеЗначения
Фильтровать(Фильтр: (Число, ТипЭлемента)->Булево): Массив<ТипЭлемента>
Фильтрует элементы Обходимого с индексом по заданному критерию.

важно

На клиенте в методах вычисления нельзя использовать любые асинхронные операции, например вызовы сервера. Это приведет к возникновению ошибки «Попытка выполнить асинхронное действие». Аналогичная ошибка может возникнуть при использовании отладчика для таких методов.

Перегрузка
Фильтровать(Фильтр: (ТипЭлемента)->Булево): Массив<ТипЭлемента>

Примеры​

знч Числа = [11, 3, 4, 5, 18, 12]
// Числа, которые стоят на четных позициях и больше 10
знч Числа1 = Числа.Фильтровать((Индекс, Элемент) -> Индекс % 2 == 0 и Элемент > 10) // [11, 18]

ФильтроватьПоТипу​

ФильтроватьПоТипу<ЦелевойТип>(): Массив<ЦелевойТип>
ЦелевойТип: тип оставляемых элементов.

Фильтрует Обходимое, оставляя только значения целевого типа, и возвращает массив этих элементов.

Примеры​

знч Объекты = [1, 2, "3", "4", True, False]
знч Числа = Объекты.ФильтроватьПоТипу<Число>() // [1, 2]

Список унаследованных методов​

Объект​

ВСтроку

ПолучитьТип

Представление