Skip to content

Commit 005bccf

Browse files
committed
Обработать()
1 parent 75b1e70 commit 005bccf

File tree

2 files changed

+56
-1
lines changed

2 files changed

+56
-1
lines changed

src/Классы/Поток.os

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,25 @@
4545

4646
КонецФункции
4747

48+
Функция Различные() Экспорт
49+
ВызватьИсключение "Не реализовано.";
50+
КонецФункции
51+
52+
Функция Обработать(ОписаниеОповещения) Экспорт
53+
54+
Лог.Отладка("Обработать %1", ОписаниеОповещения.ИмяПроцедуры);
55+
56+
ДополнительныеПараметры = Новый Структура;
57+
ДополнительныеПараметры.Вставить("Обработчик", ОписаниеОповещения);
58+
59+
Ячейка = ОписанияОповещений.Создать("ВыполнитьОбработать", ЭтотОбъект, ДополнительныеПараметры);
60+
61+
Конвейер.Добавить(Ячейка);
62+
63+
Возврат ЭтотОбъект;
64+
65+
КонецФункции
66+
4867
Функция Фильтровать(ОписаниеОповещения) Экспорт
4968

5069
Лог.Отладка("Фильтровать %1", ОписаниеОповещения.ИмяПроцедуры);
@@ -131,6 +150,29 @@
131150

132151
КонецПроцедуры
133152

153+
Процедура ВыполнитьОбработать(Результат, ДополнительныеПараметры) Экспорт
154+
155+
Обработчик = ДополнительныеПараметры.Обработчик;
156+
157+
Лог.Отладка("ВыполнитьОбработать %1", Обработчик.ИмяПроцедуры);
158+
159+
Результат = Новый Массив;
160+
161+
Если Обработчик.ДополнительныеПараметры = Неопределено Тогда
162+
Обработчик.ДополнительныеПараметры = Новый Структура;
163+
КонецЕсли;
164+
Обработчик.ДополнительныеПараметры.Вставить("Элемент");
165+
166+
Для Каждого Элемент Из Коллекция Цикл
167+
Обработчик.ДополнительныеПараметры.Элемент = Элемент;
168+
РезультатОбработки = Неопределено;
169+
ОписанияОповещений.ВыполнитьОбработкуОповещения(Обработчик, РезультатОбработки);
170+
171+
Результат.Добавить(РезультатОбработки);
172+
КонецЦикла;
173+
174+
КонецПроцедуры
175+
134176
Процедура ПройтиКонвейер()
135177

136178
Лог.Отладка("Прохожу по конвейеру");

test.os

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,14 @@
66
Результат = Элемент > 3;
77
КонецПроцедуры
88

9+
Процедура ОбработчикОбработки(Результат, ДополнительныеПараметры) Экспорт
10+
Элемент = ДополнительныеПараметры.Элемент;
11+
Результат = Элемент + 1;
12+
Сообщить("Я - операция map, и это мое послание миру: элемент " + Элемент + " превратился в " + Результат);
13+
КонецПроцедуры
14+
915
ФункцияФильтрации = ОписанияОповещений.Создать("ОбработчикФильтрации", ЭтотОбъект);
16+
ФункцияОбработки = ОписанияОповещений.Создать("ОбработчикОбработки", ЭтотОбъект);
1017

1118
Массив = Новый Массив;
1219
Массив.Добавить(3);
@@ -20,7 +27,13 @@
2027
Стрим = Новый Стрим;
2128
Стрим.УстановитьКоллекцию(Массив);
2229

23-
Результат = Стрим.Пропустить(2).Фильтровать(ФункцияФильтрации).Первые(2).ВМассив();
30+
Результат = Стрим
31+
.Пропустить(2)
32+
.Фильтровать(ФункцияФильтрации)
33+
.Первые(2)
34+
.Обработать(ФункцияОбработки)
35+
.ВМассив();
36+
2437
Для Каждого Элемент Из Результат Цикл
2538
Сообщить(Элемент);
2639
КонецЦикла

0 commit comments

Comments
 (0)