README.MD

    Onec-fluent

    Является переосмыслением библиотеки: 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.

    Описание

    Библиотека быстрой обработки коллекций для 1С

    Конвейеры
    0 успешных
    0 с ошибкой