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 с ошибкой