{"id":18931788,"url":"https://github.com/nixel2007/oscript-fluent","last_synced_at":"2026-01-26T02:37:01.854Z","repository":{"id":91616302,"uuid":"91791131","full_name":"nixel2007/oscript-fluent","owner":"nixel2007","description":"Быстрая обработка коллекций в \"текучем\" стиле","archived":false,"fork":false,"pushed_at":"2023-07-27T17:12:18.000Z","size":202,"stargazers_count":15,"open_issues_count":2,"forks_count":9,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-06-01T13:08:19.910Z","etag":null,"topics":["oscript","oscript-package"],"latest_commit_sha":null,"homepage":"","language":"1C Enterprise","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nixel2007.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"nixel2007"}},"created_at":"2017-05-19T09:42:00.000Z","updated_at":"2025-05-14T17:43:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"c7077dc5-c950-4a37-a935-8fe147937bfb","html_url":"https://github.com/nixel2007/oscript-fluent","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/nixel2007/oscript-fluent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Foscript-fluent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Foscript-fluent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Foscript-fluent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Foscript-fluent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nixel2007","download_url":"https://codeload.github.com/nixel2007/oscript-fluent/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Foscript-fluent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28765189,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T02:25:41.078Z","status":"ssl_error","status_checked_at":"2026-01-26T02:24:28.809Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["oscript","oscript-package"],"created_at":"2024-11-08T11:46:42.631Z","updated_at":"2026-01-26T02:37:01.836Z","avatar_url":"https://github.com/nixel2007.png","language":"1C Enterprise","readme":"# fluent\n\n[![Build Status](https://travis-ci.org/nixel2007/oscript-fluent.svg?branch=develop)](https://travis-ci.org/nixel2007/oscript-fluent)\n[![Quality Gate](https://sonar.openbsl.ru/api/project_badges/measure?project=oscript-fluent\u0026metric=alert_status)](https://sonar.openbsl.ru/dashboard?id=oscript-fluent)\n[![Maintainability](https://sonar.openbsl.ru/api/project_badges/measure?project=oscript-fluent\u0026metric=sqale_rating)](https://sonar.openbsl.ru/dashboard?id=oscript-fluent)\n[![Coverage](https://sonar.openbsl.ru/api/project_badges/measure?project=oscript-fluent\u0026metric=coverage)](https://sonar.openbsl.ru/dashboard?id=oscript-fluent)\n\nБиблиотека быстрой обработки коллекций.\n\nПозволяет в \"текучем\" стиле обрабатывать коллекции - фильтровать, упорядочивать, выполнять операции над элементы, получать результат в виде заданного типа и др.\n\n## Возможности\n\nПоддержка строк, массивов, таблиц значений, деревьев значений.\n\u003e Структуры и соответствия incoming\n\nКонвейерные методы:\n\n* Первые\n* Пропустить\n* Различные\n* Обработать\n* Развернуть\n* Фильтровать\n* Сортировать\n* СортироватьПо\n\nТерминальные методы:\n\n* ПолучитьПервый\n* ВМассив\n* ВСтроку\n* Количество\n* ДляКаждого\n* Минимум\n* Максимум\n* Сократить\n* Получить\n* ЛюбойСоответствует\n* ВсеСоответствуют\n* ВсеНеСоответствуют\n\nФункции сравнения, фильтрации, обработки могут задаваться с помощью:\n\n* Строк библиотека [lambdas](https://github.com/oscript-library/lambdas)\n* Действие\n\nБиблиотека помимо конструктора класса `ПроцессорКоллекций` содержит вспомогательный модуль, включающий:\n\n* построитель процессора коллекций `ИзКоллекции()`\n* построитель процессора коллекций `ИзСтроки()`\n* построитель процессора коллекций `ИзНабора()`\n* `СтандартнаяФункцияСравненияПрямойПорядок()` - типовой `comparator`, возвращающий результат сравнения как `1`, `0`, `-1`\n\n## Примеры работы\n\n```bsl\nМассив = Новый Массив;\nМассив.Добавить(3);\nМассив.Добавить(4);\nМассив.Добавить(7);\nМассив.Добавить(5);\nМассив.Добавить(1);\nМассив.Добавить(0);\n\nРезультат = ПроцессорыКоллекций.ИзКоллекции(Массив)\n\t.Пропустить(1)\n\t.Фильтровать(\"Элемент -\u003e Элемент \u003e= 5\")\n\t.Первые(2)\n\t.Обработать(\"Элемент -\u003e Элемент + 1\")\n\t.Получить(Тип(\"Массив\"));\n\n// На выходе массив [8, 6]\n```\n\nТоже самое с помощью `Действие`:\n\n```bsl\nФункция ОбработчикФильтрации(Элемент) Экспорт\n\tВозврат Элемент \u003e= 5;\nКонецФункции\n\nФункция ОбработчикОбработки(Элемент) Экспорт\n\n\tРезультат = Элемент + 1;\n\n\tСообщить(\"Я - операция map, и это мое послание миру: элемент \" + Элемент + \" превратился в \" + Результат);\n\n\tВозврат Результат;\n\nКонецФункции\n\nФункцияФильтрации = Новый Действие(ЭтотОбъект, \"ОбработчикФильтрации\");\nФункцияОбработки = Новый Действие(ЭтотОбъект, \"ОбработчикОбработки\");\n\nРезультат = ПроцессорыКоллекций.ИзКоллекции(Массив)\n\t.Пропустить(1)\n\t.Фильтровать(ФункцияФильтрации)\n\t.Первые(2)\n\t.Обработать(ФункцияОбработки)\n\t.Получить(Тип(\"Массив\"));\n```\n\n```bsl\nМассив = Новый Массив;\nМассив.Добавить(4);\nМассив.Добавить(2);\nМассив.Добавить(2);\nМассив.Добавить(3);\nМассив.Добавить(3);\nМассив.Добавить(3);\n\nПроцессорКоллекций = ПроцессорыКоллекций.ИзКоллекции(Массив);\nПроцессорКоллекций\n\t.Различные()\n\t.Сортировать()\n\t.ДляКаждого(\"Элемент -\u003e Сообщить(Элемент)\");\n\n// На выходе сообщения в консоль:\n// 2\n// 3\n// 4\n```\n\n```bsl\nСтрока = \"Я\n|строка\n|многострочная\";\n\nПроцессорыКоллекций\n\t.ИзСтроки(Строка, Символы.ПС)\n\t.Фильтровать(\"Элемент -\u003e СтрДлина(Элемент) \u003e 1\")\n\t.ДляКаждого(\"Элемент -\u003e Сообщить(Элемент)\");\n\n// На выходе сообщения в консоль:\n// многострочная\n// строка\n```\n\nБольше примеров работы в каталогах `examples` и `tests`.\n\n## Публичный интерфейс\n\n### Класс ПроцессорКоллекций\n\n\u003e Общее API\n\n#### УстановитьКоллекцию\n\n```bsl\n// Устанавливает коллекцию для обработки Процессора коллекций.\n//\n// Параметры:\n//   НоваяКоллекция - Массив, ТаблицаЗначений, ДеревоЗначений - Коллекция, устанавливаемая в процессор.\n//\nПроцедура УстановитьКоллекцию(НоваяКоллекция) \n```\n\n#### Отладка\n\n```bsl\n// Включает возможность отладки. Достигается сохранением текста модуля во временный файл.\n//\n//  Возвращаемое значение:\n//   ПроцессорКоллекций - Ссылка на текущий инстанс ПроцессорКоллекций\n//\nФункция Отладка(Включена = Истина) \n```\n\n\u003e Конвейерные методы\n\n#### Первые\n\n```bsl\n// Получить первые N элементов.\n// Конвейерный метод.\n//\n// Параметры:\n//   Количество - Число - Число отбираемых элементов.\n//\n//  Возвращаемое значение:\n//   ПроцессорКоллекций - Инстанс класса \"ПроцессорКоллекций\".\n//\nФункция Первые(Количество) \n```\n\n#### Пропустить\n\n```bsl\n// Пропустить первые N элементов.\n// Конвейерный метод.\n//\n// Параметры:\n//   Количество - Число - Число пропускаемых элементов.\n//\n// Возвращаемое значение:\n//   ПроцессорКоллекций - Инстанс класса \"ПроцессорКоллекций\".\n//\nФункция Пропустить(Количество) \n```\n\n#### Различные\n\n```bsl\n// Выбрать различные элементы.\n// Конвейерный метод.\n//\n// Параметры:\n//   ФункцияРавенства - Строка - Лямбда выражение функция с двумя параметрами в которые будут переданы два элемента,\n//    и которая возвращает Булево, Истина если элементы равны, Ложь в противном случае\n//                    - Действие - Делегат на функцию с двумя параметрами, в которые будут переданы два элемента,\n//    и которая возвращает Булево, Истина если элементы равны, Ложь в противном случае\n//                    - Неопределено - см. ПроцессорыКоллекций.СтандартнаяФункцияРавенства(),\n//    проверка \"Элемент1 = Элемент2\"\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n//  Возвращаемое значение:\n//   ПроцессорКоллекций - Инстанс класса \"ПроцессорКоллекций\".\n//\n//  Примеры:\n//\n//   ПроцессорКоллекций = ПроцессорыКоллекций.ИзНабора(\n//       Новый Структура(\"Имя, Возраст\", \"Вася\", 25),\n//       Новый Структура(\"Имя, Возраст\", \"Петя\", 27),\n//       Новый Структура(\"Имя, Возраст\", \"Ваня\", 25)\n//   );\n//\n//   // 1:\n//   ПроцессорКоллекций.Различные(\"(ЧеловекПервый, ЧеловекВторой) -\u003e ЧеловекПервый.Возраст = ЧеловекВторой.Возраст\");\n//\n//   // В коллекции останутся: Вася(25) и Петя(27)\n//\n//   // 2:\n//   Функция МояФункцияФункцияРавенства(ЭлементПервый, ЭлементВторой) Экспорт\n//       Возврат ЧеловекПервый.Возраст = ЧеловекВторой.Возраст;\n//   КонецФункции\n//\n//   ПроцессорКоллекций.Различные(Новый Действие(ЭтотОбъект, \"МояФункцияФункцияРавенства\"));\n//\n//   // В коллекции останутся: Вася(25) и Петя(27)\n//\nФункция Различные(Знач ФункцияРавенства = Неопределено, Знач ДополнительныеПараметры = Неопределено) \n```\n\n#### Обработать\n\n```bsl\n// Обработать каждый элемент коллекции.\n// Конвейерный метод.\n//\n// Параметры:\n//   ФункцияОбработки - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,\n//    и которая возвращает новый элемент\n//                    - Действие - Делегат на функцию с одним параметром в который будет передан элемент,\n//    и которая возвращает новый элемент\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n//  Возвращаемое значение:\n//   ПроцессорКоллекций - Инстанс класса \"ПроцессорКоллекций\".\n//\n//  Примеры:\n//\t\t// 1:\n//\t\tПроцессорКоллекций.Обработать(\"Элемент -\u003e Элемент + 1\");\n//\n//\t\t// 2:\n//\t\tФункция МояФункцияОбработки(Элемент) Экспорт\n//\t\t\tВозврат Элемент + 1;\n//\t\tКонецФункции\n//\n//\t\tФункцияОбработки = Новый Действие(ЭтотОбъект, \"МояФункцияОбработки\");\n//\t\tПроцессорКоллекций.Обработать(ФункцияОбработки);\n//\nФункция Обработать(Знач ФункцияОбработки, Знач ДополнительныеПараметры = Неопределено) \n```\n\n#### Развернуть\n\n```bsl\n// Развернуть каждый элемент коллекции в процессор коллекций.\n// Позволяет расширить имеющуюся коллекцию.\n// Например, разворачивание массива массивов сделает новый массив, содержащий все элементы всех массивов.\n// Конвейерный метод.\n//\n// Параметры:\n//   ФункцияРазворачивания - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,\n//    и которая возвращает ПроцессорКоллекций из элемента\n//                         - Действие - Делегат на функцию с одним параметром в который будет передан элемент,\n//    и которая возвращает ПроцессорКоллекций из элемента\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n// Возвращаемое значение:\n//\tПроцессорКоллекций - Инстанс класса \"ПроцессорКоллекций\".\n//\n// Примеры:\n//\t// 1:\n//\tПроцессорКоллекций.Развернуть(\"Элемент -\u003e ПроцессорыКоллекций.ИзСтроки(Элемент)\");\n//\n//\t// 2:\n//\tФункция МояФункцияРазворачивания(Элемент) Экспорт\n//\t\tВозврат ПроцессорыКоллекций.ИзСтроки(Элемент);\n//\tКонецФункции\n//\t\n//\tФункцияРазворачивания = Новый Действие(ЭтотОбъект, \"МояФункцияРазворачивания\");\n//\tПроцессорКоллекций.Развернуть(ФункцияРазворачивания);\n//\nФункция Развернуть(Знач ФункцияРазворачивания, Знач ДополнительныеПараметры = Неопределено) \n```\n\n#### Фильтровать\n\n```bsl\n// Фильтровать коллекцию по условию.\n// Конвейерный метод.\n//\n// Параметры:\n//   ФункцияФильтрации - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,\n//    и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае\n//                         - Действие - Делегат на функцию с одним параметром в который будет передан элемент,\n//    и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n//  Возвращаемое значение:\n//   ПроцессорКоллекций - Инстанс класса \"ПроцессорКоллекций\".\n//\n//  Примеры:\n//\t\t// 1:\n//\t\tПроцессорКоллекций.Фильтровать(\"Элемент -\u003e СтрДлина(Элемент) \u003e 1\");\n//\n//\t\t// 2:\n//\t\tФункция МояФункцияФильтрации(Результат, ДополнительныеПараметры) Экспорт\n//\t\t\tВозврат СтрДлина(ДополнительныеПараметры.Элемент) \u003e 1;\n//\t\tКонецФункции\n//\t\t\n//\t\tФункцияФильтрации = Новый Действие(ЭтотОбъект, \"МояФункцияФильтрации\");\n//\t\tПроцессорКоллекций.Фильтровать(ФункцияФильтрации);\n//\nФункция Фильтровать(Знач ФункцияФильтрации, Знач ДополнительныеПараметры = Неопределено) \n```\n\n#### Сортировать\n\n```bsl\n// Сортировать элементы коллекции.\n// Конвейерный метод.\n//\n// Параметры:\n//   ФункцияСравнения - Строка - Лямбда выражение функция с двумя параметрами в которые будут переданы два элемента,\n//    и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны\n//                    - Действие - Делегат на функцию с двумя параметрами, в которые будут переданы два элемента,\n//    и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны\n//                    - Неопределено - см. ПроцессорыКоллекций.СтандартнаяФункцияСравненияПрямойПорядок(),\n//    проверка через \"\u003e\", \"\u003c\", \"=\"\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n//  Возвращаемое значение:\n//   ПроцессорКоллекций - Инстанс класса \"ПроцессорКоллекций\".\n//\n//  Примеры:\n//\t\t// 1:\n//\t\tПроцессорКоллекций.Сортировать(\"(Первый, Второй) -\u003e \n//          | Если Первый \u003e Второй Тогда Возврат 1;\n//          | ИначеЕсли Второй \u003e Первый Тогда Возврат -1;\n//          | Иначе Возврат 0;\n//          | КонецЕсли;\"\n//      );\n//\n//\t\t// 2:\n//\t\tФункция МояФункцияСравнения(Первый, Второй) Экспорт\n//          Если Первый \u003e Второй Тогда \n//              Возврат 1;\n//          ИначеЕсли Второй \u003e Первый Тогда\n//              Возврат -1;\n//          Иначе \n//              Возврат 0;\n//          КонецЕсли;\n//\t\tКонецФункции\n//\t\t\n//\t\tФункцияСравнения = Новый Действие(ЭтотОбъект, \"МояФункцияСравнения\");\n//\t\tПроцессорКоллекций.Сортировать(ФункцияСравнения);\n//\nФункция Сортировать(Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено) \n```\n\n#### СортироватьПо\n\n```bsl\n// Сортировать элементы коллекции по выбранному полю.\n// Конвейерный метод.\n//\n// Параметры:\n//   ИмяПоля - Строка - Имя поля элемента коллекции, по которому необходимо осуществлять сортировку.\n//\n//   ФункцияСравнения - Строка - Лямбда выражение функция с двумя параметрами в которые будут переданы два элемента,\n//    и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны\n//                    - Действие - Делегат на функцию с двумя параметрами, в которые будут переданы два элемента,\n//    и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны\n//                    - Неопределено - см. ПроцессорыКоллекций.СтандартнаяФункцияСравненияПрямойПорядок(),\n//    проверка через \"\u003e\", \"\u003c\", \"=\"\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n//  Возвращаемое значение:\n//   ПроцессорКоллекций - Инстанс класса \"ПроцессорКоллекций\".\n//\n//  Примеры:\n//\t\t// 1:\n//\t\tПроцессорКоллекций.СортироватьПо(\"НомерСтроки\", \"(Первый, Второй) -\u003e \n//          | Если Первый \u003e Второй Тогда Возврат 1;\n//          | ИначеЕсли Второй \u003e Первый Тогда Возврат -1;\n//          | Иначе Возврат 0;\n//          | КонецЕсли;\"\n//      );\n//\n//\t\t// 2:\n//\t\tФункция МояФункцияСравнения(Первый, Второй) Экспорт\n//          Если Первый \u003e Второй Тогда \n//              Возврат 1;\n//          ИначеЕсли Второй \u003e Первый Тогда\n//              Возврат -1;\n//          Иначе \n//              Возврат 0;\n//          КонецЕсли;\n//\t\tКонецФункции\n//\t\t\n//\t\tФункцияСравнения = Новый Действие(ЭтотОбъект, \"МояФункцияСравнения\");\n//\t\tПроцессорКоллекций.СортироватьПо(\"НомерСтроки\", ФункцияСравнения);\n//\nФункция СортироватьПо(Знач ИмяПоля, Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено) \n```\n\n\u003e Терминальные методы\n\n#### ПолучитьПервый\n\n```bsl\n// Получить первый элемент.\n// Терминальный метод.\n//\n//  Возвращаемое значение:\n//   Произвольный - Первый элемент из коллекции. Если коллекция пуста, возвращает Неопределено.\n//\nФункция ПолучитьПервый() \n```\n\n#### ВМассив\n\n```bsl\n// Получить коллекцию в виде массива.\n// Терминальный метод.\n//\n//  Возвращаемое значение:\n//   Массив - Массив элементов коллекции.\n//\nФункция ВМассив() \n```\n\n#### ВСтроку\n\n```bsl\n// Получить коллекцию в виде строки.\n// Терминальный метод.\n//\n// Параметры:\n//\tРазделительСтрок - Строка - Используемый разделитель между элементами при конкатенации строк.\n// \n//  Возвращаемое значение:\n//   Строка - Элементы коллекции, соединенные в строку методом конкатенации.\n//\nФункция ВСтроку(РазделительСтрок = \"\") \n```\n\n#### Количество\n\n```bsl\n// Получить количество элементов коллекции.\n// Терминальный метод.\n//\n//  Возвращаемое значение:\n//   Число - Количество элементов коллекции.\n//\nФункция Количество() \n```\n\n#### ДляКаждого\n\n```bsl\n// Обработать каждый элемент коллекции и завершить работу процессора.\n// Терминальный метод.\n//\n// Параметры:\n//   ФункцияОбработки - Строка - Лямбда выражение процедура с одним параметром в который будет передан элемент\n//                    - Действие - Делегат на процедуру с одним параметром в который будет передан элемент\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n//  Примеры:\n//\t\t// 1:\n//\t\tПроцессорКоллекций.ДляКаждого(\"Элемент -\u003e Сообщить(Элемент);\");\n//\n//\t\t// 2:\n//\t\tПроцедура МояПроцедураОбработки(Элемент) Экспорт\n//\t\t\tСообщить(Элемент);\n//\t\tКонецПроцедуры\n//\t\t\n//\t\tПроцедураОбработки = Новый Действие(ЭтотОбъект, \"МояПроцедураОбработки\");\n//\t\tПроцессорКоллекций.ДляКаждого(ПроцедураОбработки);\n//\nПроцедура ДляКаждого(Знач ФункцияОбработки, Знач ДополнительныеПараметры = Неопределено) \n```\n\n#### Минимум\n\n```bsl\n// Получить минимальный элемент.\n// Терминальный метод.\n//\n// Параметры:\n//   ФункцияСравнения - Строка - Лямбда выражение функция с двумя параметрами в которые будут переданы два элемента,\n//    и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны\n//                    - Действие - Делегат на функцию с двумя параметрами, в которые будут переданы два элемента,\n//    и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны\n//                    - Неопределено - см. ПроцессорыКоллекций.СтандартнаяФункцияСравненияПрямойПорядок(),\n//    проверка через \"\u003e\", \"\u003c\", \"=\"\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n//  Возвращаемое значение:\n//   Произвольный - минимальный элемент коллекции.\n//\n//  Примеры:\n//\t\t// 1:\n//\t\tПроцессорКоллекций.Минимум();\n//\n//\t\t// 2:\n//\t\tПроцессорКоллекций.Минимум(\"(Первый, Второй) -\u003e \n//          | Если Первый \u003e Второй Тогда Возврат 1;\n//          | ИначеЕсли Второй \u003e Первый Тогда Возврат -1;\n//          | Иначе Возврат 0;\n//          | КонецЕсли;\"\n//      );\n//\n//\t\t// 3:\n//\t\tФункция МояФункцияСравнения(Первый, Второй) Экспорт\n//          Если Первый \u003e Второй Тогда \n//              Возврат 1;\n//          ИначеЕсли Второй \u003e Первый Тогда\n//              Возврат -1;\n//          Иначе \n//              Возврат 0;\n//          КонецЕсли;\n//\t\tКонецФункции\n//\t\t\n//\t\tФункцияСравнения = Новый Действие(ЭтотОбъект, \"МояФункцияСравнения\");\n//\t\tПроцессорКоллекций.Минимум(ФункцияСравнения);\n//\nФункция Минимум(Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено) \n```\n\n#### Максимум\n\n```bsl\n// Получить максимальный элемент.\n// Терминальный метод.\n//\n// Параметры:\n//   ФункцияСравнения - Строка - Лямбда выражение функция с двумя параметрами в которые будут переданы два элемента,\n//    и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны\n//                    - Действие - Делегат на функцию с двумя параметрами, в которые будут переданы два элемента,\n//    и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны\n//                    - Неопределено - см. ПроцессорыКоллекций.СтандартнаяФункцияСравненияПрямойПорядок(),\n//    проверка через \"\u003e\", \"\u003c\", \"=\"\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n//  Возвращаемое значение:\n//   Произвольный - максимальный элемент коллекции.\n//\n//  Примеры:\n//\t\t// 1:\n//\t\tПроцессорКоллекций.Максимум();\n//\n//\t\t// 2:\n//\t\tПроцессорКоллекций.Максимум(\"(Первый, Второй) -\u003e \n//          | Если Первый \u003e Второй Тогда Возврат 1;\n//          | ИначеЕсли Второй \u003e Первый Тогда Возврат -1;\n//          | Иначе Возврат 0;\n//          | КонецЕсли;\"\n//      );\n//\n//\t\t// 3:\n//\t\tФункция МояФункцияСравнения(Первый, Второй) Экспорт\n//          Если Первый \u003e Второй Тогда \n//              Возврат 1;\n//          ИначеЕсли Второй \u003e Первый Тогда\n//              Возврат -1;\n//          Иначе \n//              Возврат 0;\n//          КонецЕсли;\n//\t\tКонецФункции\n//\t\t\n//\t\tФункцияСравнения = Новый Действие(ЭтотОбъект, \"МояФункцияСравнения\");\n//\t\tПроцессорКоллекций.Максимум(ФункцияСравнения);\n//\nФункция Максимум(Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено) \n```\n\n#### Сократить\n\n```bsl\n// Выполнить агрегатную функцию над элементами коллекции.\n// Терминальный метод.\n//\n// Параметры:\n//   ФункцияСокращения - Строка - Лямбда выражение функция с двумя параметрами в которые будут переданы \n//    результат аккумулятор и очередной элемент коллекции, и которая возвращает новое значение результата\n//                    - Действие - Делегат на функцию с двумя параметрами в которые будут переданы \n//    результат аккумулятор и очередной элемент коллекции, и которая возвращает новое значение результата\n//\n//   НачальноеЗначение - Произвольный - начальное значение, передаваемое в функцию сокращения в параметр \"Результат\"\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n//  Возвращаемое значение:\n//   Произвольный - результат работы агрегатной функции.\n//\n//  Примеры:\n//\t\t2:\n//\t\tПроцессорКоллекций.Сократить(\"Результат, Элемент -\u003e Результат + Элемент\", 0);\n//\n//\t\t2:\n//\t\tФункция МояФункцияСокращения(Результат, Элемент) Экспорт\n//\t\t\tВозврат Результат + Элемент;\n//\t\tКонецФункции\n//\t\t\n//\t\tФункцияСокращения = Новый Действие(ЭтотОбъект, \"МояФункцияСокращения\");\n//\t\tПроцессорКоллекций.Сократить(ФункцияСокращения);\n//\nФункция Сократить(Знач ФункцияСокращения, Знач НачальноеЗначение = Неопределено, Знач ДополнительныеПараметры = Неопределено) \n```\n\n#### Получить\n\n```bsl\n// Получить коллекцию в виде объекта заданного типа.\n// Терминальный метод.\n//\n// Параметры:\n//   ТипРезультата - Тип - Тип, в котором необходимо вернуть коллекцию.\n//\n//  Возвращаемое значение:\n//   Произвольный - Коллекция в виде объекта нужного типа.\n//\nФункция Получить(ТипРезультата) \n```\n\n#### ЛюбойСоответствует\n\n```bsl\n// Проверить, что хотя бы один элемент коллекции удовлетворяет условию в функции сравнения.\n// Терминальный метод.\n//\n// Параметры:\n//   ФункцияСравнения - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,\n//    и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае\n//                         - Действие - Делегат на функцию с одним параметром в который будет передан элемент,\n//    и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n//  Возвращаемое значение:\n//   Булево - Истина, если минимум один из элементов коллекции удовлетворяет условию Функции сравнения.\n//\t\tВ обратном случае возвращает Ложь.\n//\t\tЕсли коллекция пустая, возвращает Ложь.\n//\nФункция ЛюбойСоответствует(Знач ФункцияСравнения, Знач ДополнительныеПараметры = Неопределено) \n```\n\n#### ВсеСоответствуют\n\n```bsl\n// Проверить, что все элементы коллекции удовлетворяют условию в функции сравнения.\n// Терминальный метод.\n//\n// Параметры:\n//   ФункцияСравнения - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,\n//    и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае\n//                         - Действие - Делегат на функцию с одним параметром в который будет передан элемент,\n//    и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n//  Возвращаемое значение:\n//   Булево - Истина, если все элементы коллекции удовлетворяют условию Функции сравнения.\n//\t\tВ обратном случае возвращает Ложь.\n//\t\tЕсли коллекция пустая, возвращает Истина.\n//\nФункция ВсеСоответствуют(Знач ФункцияСравнения, Знач ДополнительныеПараметры = Неопределено) \n```\n\n#### ВсеНеСоответствуют\n\n```bsl\n// Проверить, что все элементы коллекции не удовлетворяют условию в функции сравнения.\n// Терминальный метод.\n//\n// Параметры:\n//   ФункцияСравнения - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,\n//    и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае\n//                         - Действие - Делегат на функцию с одним параметром в который будет передан элемент,\n//    и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае\n//\n//   ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение, \n//    значения будут доступны по обращению к ключу как к переменной.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//                           - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,\n//    в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.\n//    При передачи действия в первом параметре, этот параметр игнорируется\n//\n//  Возвращаемое значение:\n//   Булево - Истина, если все элементы коллекции не удовлетворяют условию Функции сравнения.\n//\t\tВ обратном случае возвращает Ложь.\n//\t\tЕсли коллекция пустая, возвращает Истина.\n//\nФункция ВсеНеСоответствуют(Знач ФункцияСравнения, Знач ДополнительныеПараметры = Неопределено) \n```\n\n### Модуль ПроцессорыКоллекций\n\n#### ИзКоллекции\n\n```bsl\n// Создать ПроцессорКоллекций на основании переданной коллекции.\n//\n// Параметры:\n//   Коллекция - Произвольный - Коллекция (Массив, ТаблицаЗначений...), на основании которой нужно\n//\t\tсформировать ПроцессорКоллекций.\n//\n//  Возвращаемое значение:\n//   ПроцессорКоллекций - Инстанс класса ПроцессорКоллекций, заполненный переданной коллекцией.\n//\nФункция ИзКоллекции(Коллекция) Экспорт\n```\n\n#### ИзСтроки\n\n```bsl\n// Создать ПроцессорКоллекций на основании переданной строки.\n// Переданная строка преобразуется в коллекцию путем разделения строк.\n//\n// Параметры:\n//   Строка - Строка - Строка, на основании которой нужно сформировать ПроцессорКоллекций.\n//   РазделительСтрок - Строка - Разделитель строк, применяемый к Строке для получения коллекции.\n//\t\tЕсли не передан, строка разделяется на элементы посимвольно.\n//   ВключатьПустые - Булево - Указывает необходимость включать в коллекцию пустые строки,\n//\t\tкоторые могут образоваться в результате разделения исходной строки.\n//\n//  Возвращаемое значение:\n//   ПроцессорКоллекций - Инстанс класса ПроцессорКоллекций.\n//\nФункция ИзСтроки(Строка, РазделительСтрок = Неопределено, ВключатьПустые = Истина) Экспорт\n```\n\n#### ИзНабора\n\n```bsl\n// Создать ПроцессорКоллекций на основании переданного набора значений.\n// Добавляет элемент в ПроцессорКоллекций, если он не равен NULL.\n//\n// Параметры:\n//\tЭлемент1 - Произвольный - Элемент для добавления в ПроцессорКоллекций.\n//\tЭлемент2 - Произвольный - Элемент для добавления в ПроцессорКоллекций.\n//\tЭлемент3 - Произвольный - Элемент для добавления в ПроцессорКоллекций.\n//\t... Всего 32 параметра ...\n//\n// Возвращаемое значение:\n//\tПроцессорКоллекций - Инстанс класса ПроцессорКоллекций, заполненный переданным набором.\n//\nФункция ИзНабора(Элемент1 = NULL, Элемент2 = NULL, Элемент3 = NULL, ...) Экспорт\n```\n\n#### СтандартнаяФункцияСравненияПрямойПорядок\n\n```bsl\n// Стандартная функция сравнения.\n// Сравнивает значения элементов коллекции через операторы \"\u003e\", \"\u003c\" и \"=\".\n//\n//  Возвращаемое значение:\n//   Действие - Делегат на стандартный метод сравнения\n//\nФункция СтандартнаяФункцияСравненияПрямойПорядок() \n```\n\n#### СтандартнаяФункцияСравненияОбратныйПорядок\n\n```bsl\n// Стандартная функция сравнения в обратном порядке\n// Сравнивает значения элементов коллекции через операторы \"\u003e\", \"\u003c\" и \"=\".\n//\n//  Возвращаемое значение:\n//   Действие - Делегат на стандартный метод сравнения в обратном порядке\n//\nФункция СтандартнаяФункцияСравненияОбратныйПорядок() \n```\n\n#### СтандартнаяФункцияРавенства\n\n```bsl\n// Стандартная функция проверки на равенство\n// Сравнивает значения элементов коллекции через \"=\".\n//\n//  Возвращаемое значение:\n//   Действие - Делегат на стандартный метод проверки на равенство\n//\nФункция СтандартнаяФункцияРавенства() \n```\n\n### Отладка методов\n\nДля того, что бы работал отладчик и заходил в добавленные методы нужно: Либо установить любое значение переменной окружения с именем ```OSCRIPT_FLUENT_DEBUG```. Либо вызвать метод ```Отладка()```\n\n---\nВдохновение черпалось из java8 stream-api.\n","funding_links":["https://github.com/sponsors/nixel2007"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnixel2007%2Foscript-fluent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnixel2007%2Foscript-fluent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnixel2007%2Foscript-fluent/lists"}