Является переосмыслением библиотеки: https://github.com/nixel2007/oscript-fluent для использования в 1С, автор оригинальной идеи: https://github.com/nixel2007 API сохранено по отношению к родительскому проекту, соответственно вся документация ниже практически полностью соответствует документации родительского проекта.
Библиотека быстрой обработки коллекций.
Позволяет в "текучем" стиле обрабатывать коллекции - фильтровать, упорядочивать, выполнять операции над элементы, получать результат в виде заданного типа и др.
Поддержка строк, массивов, таблиц значений, деревьев значений.
Структуры и соответствия incoming
Конвейерные методы:
- Первые
- Пропустить
- Различные
- Обработать
- Развернуть
- Фильтровать
- Сортировать
- СортироватьПо
Терминальные методы:
- ПолучитьПервый
- ВМассив
- ВСтроку
- Количество
- ДляКаждого
- Минимум
- Максимум
- Сократить
- Получить
- ЛюбойСоответствует
- ВсеСоответствуют
- ВсеНеСоответствуют
Функции сравнения, фильтрации, обработки могут задаваться с помощью:
- Строк
- Описаний оповещения (ПроцессорыКоллекций.НовыйОписаниеОповещения())
Библиотека помимо конструктора класса ПроцессорКоллекций
содержит вспомогательный модуль, включающий:
- построитель процессора коллекций
ИзКоллекции()
- построитель процессора коллекций
ИзСтроки()
- построитель процессора коллекций
ИзНабора()
СтандартнаяФункцияСравнения()
- типовойcomparator
, возвращающий результат сравнения как1
,0
,-1
СтандартнаяФункцияОбработки_Сообщить()
- функция сообщения каждого элемента в консоль
Массив = Новый Массив;
Массив.Добавить(3);
Массив.Добавить(4);
Массив.Добавить(7);
Массив.Добавить(5);
Массив.Добавить(1);
Массив.Добавить(0);
Результат = ПроцессорыКоллекций.ИзКоллекции(Массив)
.Пропустить(1)
.Фильтровать("Результат = Элемент >= 5")
.Первые(2)
.Обработать("Результат = Элемент + 1")
.Получить(Тип("Массив"));
// На выходе массив [8, 6]
Тоже самое с помощью описания оповещения:
Процедура ОбработчикФильтрации(Результат, ДополнительныеПараметры) Экспорт
Результат = ДополнительныеПараметры.Элемент >= 5;
КонецПроцедуры
Процедура ОбработчикОбработки(Результат, ДополнительныеПараметры) Экспорт
Элемент = ДополнительныеПараметры.Элемент;
Результат = Элемент + 1;
Сообщить("Я - операция peek, и это мое послание миру: элемент " + Элемент + " превратился в " + Результат);
КонецПроцедуры
ФункцияФильтрации = ПроцессорыКоллекций.НовыйОписаниеОповещения("ОбработчикФильтрации", ЭтотОбъект);
ФункцияОбработки = ПроцессорыКоллекций.НовыйОписаниеОповещения("ОбработчикОбработки", ЭтотОбъект);
Результат = ПроцессорыКоллекций.ИзКоллекции(Массив)
.Пропустить(1)
.Фильтровать(ФункцияФильтрации)
.Первые(2)
.Обработать(ФункцияОбработки)
.Получить(Тип("Массив"));
Массив = Новый Массив;
Массив.Добавить(4);
Массив.Добавить(2);
Массив.Добавить(2);
Массив.Добавить(3);
Массив.Добавить(3);
Массив.Добавить(3);
ПроцессорКоллекций = ПроцессорыКоллекций.ИзКоллекции(Массив);
ПроцессорКоллекций
.Различные()
.Сортировать()
.ДляКаждого(ПроцессорыКоллекций.СтандартнаяФункцияОбработки_Сообщить());
// На выходе сообщения в консоль:
// 2
// 3
// 4
Строка = "Я
|строка
|многострочная";
ПроцессорыКоллекций
.ИзСтроки(Строка, Символы.ПС)
.Фильтровать("Результат = СтрДлина(Элемент) > 1")
.ДляКаждого("Сообщить(Элемент)");
// На выходе сообщения в консоль:
// многострочная
// строка
Больше примеров работы в каталоге tests
.
Общее API
// Устанавливает коллекцию для обработки Процессора коллекций.
//
// Параметры:
// НоваяКоллекция - Массив, ТаблицаЗначений, ДеревоЗначений... - Коллекция, устанавливаемая в процессор.
//
Процедура УстановитьКоллекцию(НоваяКоллекция) Экспорт
Конвейерные методы
// Получить первые N элементов.
// Конвейерный метод.
//
// Параметры:
// Количество - Число - Число отбираемых элементов.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
Функция Первые(Количество) Экспорт
// Пропустить первые N элементов.
// Конвейерный метод.
//
// Параметры:
// Количество - Число - Число пропускаемых элементов.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
Функция Пропустить(Количество) Экспорт
// Выбрать различные элементы.
// Конвейерный метод.
//
// Параметры:
// ФункцияСравнения - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - Функция сравнения.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент1", "Элемент2".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// "Результат" - Булево - Переменная, в которой возвращается значение работы функции.
// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая функции.
// Если параметр не передан, выполняется стандартная функция сравнения:
// см. ПроцессорыКоллекций.СтандартнаяФункцияСравнения()
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции сравнения.
// Служит для передачи дополнительных данных из прикладного кода в функцию сравнения.
// По умолчанию содержит два значения - Элемент1 и Элемент2.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
// Примеры:
// 1:
// ПроцессорКоллекций.Различные("Результат = Элемент1 > Элемент2");
//
// 2:
// Процедура МояФункцияСравнения(Результат, ДополнительныеПараметры) Экспорт
// Результат = ДополнительныеПараметры.Элемент1 > ДополнительныеПараметры.Элемент2;
// КонецПроцедуры
//
// ФункцияСравнения = ПроцессорыКоллекций.НовыйОписаниеОповещения("МояФункцияСравнения", ЭтотОбъект);
// ПроцессорКоллекций.Различные(ФункцияСравнения);
//
Функция Различные(Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт
// Обработать каждый элемент коллекции.
// Конвейерный метод.
//
// Параметры:
// ФункцияОбработки - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - функция обработки.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// "Результат" - Произвольный - Переменная, в которой возвращается значение работы обработчика.
// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая обработчику.
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции обработки.
// Служит для передачи дополнительных данных из прикладного кода в функцию обработки.
// По умолчанию содержит одно значение - Элемент.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
// Примеры:
// 1:
// ПроцессорКоллекций.Обработать("Результат = Элемент + 1;");
//
// 2:
// Процедура МояФункцияОбработки(Результат, ДополнительныеПараметры) Экспорт
// Результат = ДополнительныеПараметры.Элемент + 1;
// КонецПроцедуры
//
// ФункцияОбработки = ПроцессорыКоллекций.НовыйОписаниеОповещения("МояФункцияОбработки", ЭтотОбъект);
// ПроцессорКоллекций.Обработать(ФункцияОбработки);
//
Функция Обработать(Знач ФункцияОбработки, Знач ДополнительныеПараметры = Неопределено) Экспорт
// Развернуть каждый элемент коллекции в процессор коллекций.
// Позволяет расширить имеющуюся коллекцию.
// Например, разворачивание массива массивов сделает новый массив, содерщщий все элементы всех массивов.
// Конвейерный метод.
//
// Параметры:
// ФункцияРазворачивания - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - функция разворачивания.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// Результат - ПроцессорКоллекций - Переменная, в которую должен быть
// помещен результат работы функции в виде ПроцессораКоллекций.
// ДополнительныеПараметры - Структура - Структура параметров, передаваемая функции разворачивания.
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции разворачивания.
// Служит для передачи дополнительных данных из прикладного кода в функцию разворачивания.
// По умолчанию содержит одно значение - Элемент.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
// Примеры:
// 1:
// ПроцессорКоллекций.Развернуть("Результат = ПроцессорыКоллекций.ИзСтроки(Элемент);");
//
// 2:
// Процедура МояФункцияРазворачивания(Результат, ДополнительныеПараметры) Экспорт
// Результат = ПроцессорыКоллекций.ИзСтроки(ДополнительныеПараметры.Элемент);
// КонецПроцедуры
//
// ФункцияРазворачивания = ПроцессорыКоллекций.НовыйОписаниеОповещения("МояФункцияРазворачивания", ЭтотОбъект);
// ПроцессорКоллекций.Развернуть(ФункцияРазворачивания);
//
Функция Развернуть(Знач ФункцияРазворачивания, Знач ДополнительныеПараметры = Неопределено) Экспорт
// Фильтровать коллекцию по условию.
// Конвейерный метод.
//
// Параметры:
// ФункцияФильтрации - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - Функция фильтрации.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// "Результат" - Булево - Переменная, в которой возвращается значение работы функции.
// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая функции.
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции фильтрации.
// Служит для передачи дополнительных данных из прикладного кода в функцию фильтрации.
// По умолчанию содержит одно значение - Элемент.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
// Примеры:
// 1:
// ПроцессорКоллекций.Фильтровать("Результат = СтрДлина(Элемент) > 1");
//
// 2:
// Процедура МояПроцедураФильтрации(Результат, ДополнительныеПараметры) Экспорт
// Результат = СтрДлина(ДополнительныеПараметры.Элемент) > 1;
// КонецПроцедуры
//
// ФункцияФильтрации = ПроцессорыКоллекций.НовыйОписаниеОповещения("МояПроцедураФильтрации", ЭтотОбъект);
// ПроцессорКоллекций.Фильтровать(ФункцияФильтрации);
//
Функция Фильтровать(Знач ФункцияФильтрации, Знач ДополнительныеПараметры = Неопределено) Экспорт
// Сортировать элементы коллекции.
// Конвейерный метод.
//
// Параметры:
// ФункцияСравнения - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - Функция сравнения.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент1", "Элемент2".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// "Результат" - Булево - Переменная, в которой возвращается значение работы функции.
// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая функции.
// Если параметр не передан, выполняется стандартная функция сравнения:
// см. ПроцессорыКоллекций.СтандартнаяФункцияСравнения()
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции сравнения.
// Служит для передачи дополнительных данных из прикладного кода в функцию сравнения.
// По умолчанию содержит два значения - Элемент1 и Элемент2.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
// Примеры:
// 1:
// ПроцессорКоллекций.Сортировать("Результат = Элемент1 > Элемент2");
//
// 2:
// Процедура МояФункцияСравнения(Результат, ДополнительныеПараметры) Экспорт
// Результат = ДополнительныеПараметры.Элемент1 > ДополнительныеПараметры.Элемент2;
// КонецПроцедуры
//
// ФункцияСравнения = ПроцессорыКоллекций.НовыйОписаниеОповещения("МояФункцияСравнения", ЭтотОбъект);
// ПроцессорКоллекций.Сортировать(ФункцияСравнения);
//
Функция Сортировать(Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт
// Сортировать элементы коллекции по выбранному полю.
// Конвейерный метод.
//
// Параметры:
// ИмяПоля - Строка - Имя поля элемента коллекции, по которому необходимо осуществлять сортировку.
//
// ФункцияСравнения - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - Функция сравнения.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент1", "Элемент2".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// "Результат" - Булево - Переменная, в которой возвращается значение работы функции.
// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая функции.
// Если параметр не передан, выполняется стандартная функция сравнения:
// см. ПроцессорыКоллекций.СтандартнаяФункцияСравнения()
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции сравнения.
// Служит для передачи дополнительных данных из прикладного кода в функцию сравнения.
// По умолчанию содержит два значения - Элемент1 и Элемент2.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
// Примеры:
// 1:
// ПроцессорКоллекций.СортироватьПо("НомерСтроки", "Результат = Элемент1 > Элемент2");
//
// 2:
// Процедура МояФункцияСравнения(Результат, ДополнительныеПараметры) Экспорт
// Результат = ДополнительныеПараметры.Элемент1 > ДополнительныеПараметры.Элемент2;
// КонецПроцедуры
//
// ФункцияСравнения = ПроцессорыКоллекций.НовыйОписаниеОповещения("МояФункцияСравнения", ЭтотОбъект);
// ПроцессорКоллекций.СортироватьПо("НомерСтроки", ФункцияСравнения);
//
Функция СортироватьПо(Знач ИмяПоля, Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт
Терминальные методы
// Терминальные методы
// Получить первый элемент.
// Терминальный метод.
//
// Возвращаемое значение:
// Произвольный - Первый элемент из коллекции. Если коллекция пуста, возвращает Неопределено.
//
Функция ПолучитьПервый() Экспорт
// Получить коллекцию в виде массива.
// Терминальный метод.
//
// Возвращаемое значение:
// Массив - Массив элементов коллекции.
//
Функция ВМассив() Экспорт
// Получить коллекцию в виде строки.
// Терминальный метод.
//
// Параметры:
// РазделительСтрок - Строка - Используемый разделитель между элементами при конкатенации строк.
//
// Возвращаемое значение:
// Строка - Элементы коллекции, соединенные в строку методом конкатенации.
//
Функция ВСтроку(РазделительСтрок = "") Экспорт
// Получить количество элементов коллекции.
// Терминальный метод.
//
// Возвращаемое значение:
// Число - Количество элементов коллекции.
//
Функция Количество() Экспорт
// Обработать каждый элемент коллекции и завершить работу процессора.
// Терминальный метод.
//
// Параметры:
// ФункцияОбработки - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - функция обработки.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// "Результат" - Произвольный - Игнорируется.
// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая обработчику.
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции обработки.
// Служит для передачи дополнительных данных из прикладного кода в функцию обработки.
// По умолчанию содержит одно значение - Элемент.
//
// Примеры:
// 1:
// ПроцессорКоллекций.ДляКаждого("Сообщить(Элемент);");
//
// 2:
// ПроцессорКоллекций.ДляКаждого(ПроцессорыКоллекций.СтандартнаяФункцияОбработки_Сообщить());
//
// 3:
// Процедура МояФункцияОбработки(Результат, ДополнительныеПараметры) Экспорт
// Сообщить(ДополнительныеПараметры.Элемент);
// КонецПроцедуры
//
// ФункцияОбработки = ПроцессорыКоллекций.НовыйОписаниеОповещения("МояФункцияОбработки", ЭтотОбъект);
// ПроцессорКоллекций.ДляКаждого(ФункцияОбработки);
//
Процедура ДляКаждого(Знач ФункцияОбработки, Знач ДополнительныеПараметры = Неопределено) Экспорт
// Получить минимальный элемент.
// Терминальный метод.
//
// Параметры:
// ФункцияСравнения - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - Функция сравнения.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент1", "Элемент2".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// "Результат" - Булево - Переменная, в которой возвращается значение работы функции.
// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая функции.
// Если параметр не передан, выполняется стандартная функция сравнения:
// см. ПроцессорыКоллекций.СтандартнаяФункцияСравнения()
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции сравнения.
// Служит для передачи дополнительных данных из прикладного кода в функцию сравнения.
// По умолчанию содержит два значения - Элемент1 и Элемент2.
//
// Возвращаемое значение:
// Произвольный - минимальный элемент коллекции.
//
// Примеры:
// 1:
// ПроцессорКоллекций.Минимум();
//
// 2:
// ПроцессорКоллекций.Минимум("Результат = Элемент1 > Элемент2");
//
// 3:
// Процедура МояФункцияСравнения(Результат, ДополнительныеПараметры) Экспорт
// Результат = ДополнительныеПараметры.Элемент1 > ДополнительныеПараметры.Элемент2;
// КонецПроцедуры
//
// ФункцияСравнения = ПроцессорыКоллекций.НовыйОписаниеОповещения("МояФункцияСравнения", ЭтотОбъект);
// ПроцессорКоллекций.Минимум(ФункцияСравнения);
//
Функция Минимум(Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт
// Получить максимальный элемент.
// Терминальный метод.
//
// Параметры:
// ФункцияСравнения - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - Функция сравнения.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент1", "Элемент2".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// "Результат" - Булево - Переменная, в которой возвращается значение работы функции.
// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая функции.
// Если параметр не передан, выполняется стандартная функция сравнения:
// см. ПроцессорыКоллекций.СтандартнаяФункцияСравнения()
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции сравнения.
// Служит для передачи дополнительных данных из прикладного кода в функцию сравнения.
// По умолчанию содержит два значения - Элемент1 и Элемент2.
//
// Возвращаемое значение:
// Произвольный - максимальный элемент коллекции.
//
// Примеры:
// 1:
// ПроцессорКоллекций.Максимум();
//
// 2:
// ПроцессорКоллекций.Максимум("Результат = Элемент1 > Элемент2");
//
// 3:
// Процедура МояФункцияСравнения(Результат, ДополнительныеПараметры) Экспорт
// Результат = ДополнительныеПараметры.Элемент1 > ДополнительныеПараметры.Элемент2;
// КонецПроцедуры
//
// ФункцияСравнения = ПроцессорыКоллекций.НовыйОписаниеОповещения("МояФункцияСравнения", ЭтотОбъект);
// ПроцессорКоллекций.Максимум(ФункцияСравнения);
//
Функция Максимум(Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт
// Выполнить агрегатную функцию над элементами коллекции.
// Терминальный метод.
//
// Параметры:
// ФункцияСокращения - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - Функция сокращения.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// "Результат" - Произвольный - Переменная, в которой возвращается значение работы функции.
// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая функции.
//
// НачальноеЗначение - Произвольный - начальное значение, передаваемое в функцию сокращения в параметр "Результат"
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции сокращения.
// Служит для передачи дополнительных данных из прикладного кода в функцию сокращения.
// По умолчанию содержит одно значение - Элемент.
//
// Возвращаемое значение:
// Произвольный - результат работы агрегатной функции.
//
// Примеры:
// 2:
// ПроцессорКоллекций.Сократить("Результат = Результат + Элемент");
//
// 2:
// Процедура МояФункцияСокращения(Результат, ДополнительныеПараметры) Экспорт
// Элемент = ДополнительныеПараметры.Элемент;
// Результат = Результат + Элемент;
// КонецПроцедуры
//
// ФункцияСокращения = ПроцессорыКоллекций.НовыйОписаниеОповещения("МояФункцияСокращения", ЭтотОбъект);
// ПроцессорКоллекций.Сократить(ФункцияСокращения);
//
Функция Сократить(Знач ФункцияСокращения,
Знач НачальноеЗначение = Неопределено,
Знач ДополнительныеПараметры = Неопределено) Экспорт
// Получить коллекцию в виде объекта заданного типа.
// Терминальный метод.
//
// Параметры:
// ТипРезультата - Тип - Тип, в котором необходимо вернуть коллекцию.
//
// Возвращаемое значение:
// Произвольный - Коллекция в виде объекта нужного типа.
//
Функция Получить(ТипРезультата) Экспорт
// Проверить, что хотя бы один элемент коллекции удовлетворяет условию в функции сравнения.
// Терминальный метод.
//
// Параметры:
// ФункцияСравнения - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - Функция сравнения.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// "Результат" - Булево - Переменная, в которой возвращается значение работы функции.
// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая функции.
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции сравнения.
// Служит для передачи дополнительных данных из прикладного кода в функцию сравнения.
// По умолчанию содержит одно значение - Элемент.
//
// Возвращаемое значение:
// Булево - Истина, если минимум один из элементов коллекции удовлетворяет условию Функции сравнения.
// В обратном случае возвращает Ложь.
// Если коллекция пустая, возвращает Ложь.
//
Функция ЛюбойСоответствует(Знач ФункцияСравнения, Знач ДополнительныеПараметры = Неопределено) Экспорт
// Проверить, что все элементы коллекции удовлетворяют условию в функции сравнения.
// Терминальный метод.
//
// Параметры:
// ФункцияСравнения - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - Функция сравнения.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// "Результат" - Булево - Переменная, в которой возвращается значение работы функции.
// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая функции.
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции сравнения.
// Служит для передачи дополнительных данных из прикладного кода в функцию сравнения.
// По умолчанию содержит одно значение - Элемент.
//
// Возвращаемое значение:
// Булево - Истина, если все элементы коллекции удовлетворяют условию Функции сравнения.
// В обратном случае возвращает Ложь.
// Если коллекция пустая, возвращает Истина.
//
Функция ВсеСоответствуют(Знач ОписаниеОповещения, Знач ДополнительныеПараметры = Неопределено) Экспорт
// Проверить, что все элементы коллекции не удовлетворяют условию в функции сравнения.
// Терминальный метод.
//
// Параметры:
// ФункцияСравнения - Строка, ПроцессорыКоллекций.НовыйОписаниеОповещения - Функция сравнения.
// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные
// "Результат", "ДополнительныеПараметры", "Элемент".
// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра
// (имена произвольные):
// "Результат" - Булево - Переменная, в которой возвращается значение работы функции.
// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая функции.
//
// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции сравнения.
// Служит для передачи дополнительных данных из прикладного кода в функцию сравнения.
// По умолчанию содержит одно значение - Элемент.
//
// Возвращаемое значение:
// Булево - Истина, если все элементы коллекции не удовлетворяют условию Функции сравнения.
// В обратном случае возвращает Ложь.
// Если коллекция пустая, возвращает Истина.
//
Функция ВсеНеСоответствуют(Знач ФункцияСравнения, Знач ДополнительныеПараметры = Неопределено) Экспорт
// Создать ПроцессорКоллекций на основании переданной коллекции.
//
// Параметры:
// Коллекция - Произвольный - Коллекция (Массив, ТаблицаЗначений...), на основании которой нужно
// сформировать ПроцессорКоллекций.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса ПроцессорКоллекций, заполненный переданной коллекцией.
//
Функция ИзКоллекции(Коллекция) Экспорт
// Создать ПроцессорКоллекций на основании переданной строки.
// Переданная строка преобразуется в коллекцию путем разделения строк.
//
// Параметры:
// Строка - Строка - Строка, на основании которой нужно сформировать ПроцессорКоллекций.
// РазделительСтрок - Строка - Разделитель строк, применяемый к Строке для получения коллекции.
// Если не передан, строка разделяется на элементы посимвольно.
// ВключатьПустые - Булево - Указывает необходимость включать в коллекцию пустые строки,
// которые могут образоваться в результате разделения исходной строки.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса ПроцессорКоллекций.
//
Функция ИзСтроки(Строка, РазделительСтрок = Неопределено, ВключатьПустые = Истина) Экспорт
// Создать ПроцессорКоллекций на основании переданного набора значений.
// Добавляет элемент в ПроцессорКоллекций, если он не равен NULL.
//
// Параметры:
// Элемент1 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
// Элемент2 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
// Элемент3 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
// ... Всего 32 параметра ...
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса ПроцессорКоллекций, заполненный переданным набором.
//
Функция ИзНабора(Элемент1 = NULL, Элемент2 = NULL, Элемент3 = NULL, ...) Экспорт
// Стандартная функция сравнения.
// Сравнивает значения элементов коллекции через операторы ">", "<" и "=".
//
// Возвращаемое значение:
// ОписаниеОповещения - Инстанс класса ОписаниеОповещения, указывающий на стандартную функцию сравнения.
//
Функция СтандартнаяФункцияСравнения() Экспорт
// Стандартная функция обработки - "Сообщить".
// Выполняет процедуру "Сообщить()" над каждым элементом коллекции.
//
// Возвращаемое значение:
// ОписаниеОповещения - Инстанс класса ОписаниеОповещения, указывающий на стандартную функцию обработки.
//
Функция СтандартнаяФункцияОбработки_Сообщить() Экспорт
Вдохновение черпалось из java8 stream-api.