Skip to content

Commit 742febc

Browse files
committed
Различные()
1 parent 16ffd27 commit 742febc

File tree

2 files changed

+60
-4
lines changed

2 files changed

+60
-4
lines changed

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

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,15 @@
3535

3636
КонецФункции
3737

38-
Функция Различные() Экспорт
39-
ВызватьИсключение "Не реализовано.";
38+
Функция Различные(ОбработчикСравнения = Неопределено) Экспорт
39+
40+
Если ОбработчикСравнения = Неопределено Тогда
41+
ОбработчикСравнения = СтандартныйОбработчикСравнения();
42+
КонецЕсли;
43+
44+
ПоложитьЯчейкуВКонвейер("Различные", ОбработчикСравнения);
45+
Возврат ЭтотОбъект;
46+
4047
КонецФункции
4148

4249
Функция Обработать(ОписаниеОповещения) Экспорт
@@ -110,6 +117,36 @@
110117

111118
КонецПроцедуры
112119

120+
Процедура ВыполнитьРазличные(Результат, ДополнительныеПараметры) Экспорт
121+
122+
Лог.Отладка("ВыполнитьРазличные");
123+
124+
Результат = Новый Массив;
125+
126+
ОбработчикСравнения = ДополнительныеПараметры.Обработчик;
127+
128+
Для Каждого Элемент Из Коллекция Цикл
129+
130+
КоличествоСовпадений = 0;
131+
132+
Для Каждого ЭлементРезультат Из Результат Цикл
133+
ОбработчикСравнения.ДополнительныеПараметры.Элемент1 = Элемент;
134+
ОбработчикСравнения.ДополнительныеПараметры.Элемент2 = ЭлементРезультат;
135+
РезультатСортировки = Неопределено;
136+
ОписанияОповещений.ВыполнитьОбработкуОповещения(ОбработчикСравнения, РезультатСортировки);
137+
Если РезультатСортировки = 0 Тогда
138+
КоличествоСовпадений = КоличествоСовпадений + 1;
139+
КонецЕсли;
140+
КонецЦикла;
141+
142+
Если КоличествоСовпадений = 0 Тогда
143+
Результат.Добавить(Элемент);
144+
КонецЕсли;
145+
146+
КонецЦикла;
147+
148+
КонецПроцедуры
149+
113150
Процедура ВыполнитьФильтровать(Результат, ДополнительныеПараметры) Экспорт
114151

115152
Обработчик = ДополнительныеПараметры.Обработчик;
@@ -210,7 +247,11 @@
210247
КонецПроцедуры
211248

212249
Функция СтандартныйОбработчикСравнения()
213-
ФункцияСравнения = ОписанияОповещений.Создать("ОбработчикСравнения", ЭтотОбъект);
250+
ДополнительныеПараметры = Новый Структура;
251+
ДополнительныеПараметры.Вставить("Элемент1");
252+
ДополнительныеПараметры.Вставить("Элемент2");
253+
254+
ФункцияСравнения = ОписанияОповещений.Создать("ОбработчикСравнения", ЭтотОбъект, ДополнительныеПараметры);
214255
Возврат ФункцияСравнения;
215256
КонецФункции
216257

test.os

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,19 @@
4343

4444
Для Каждого Элемент Из Результат Цикл
4545
Сообщить(Элемент);
46-
КонецЦикла;
46+
КонецЦикла;
47+
48+
Массив = Новый Массив;
49+
Массив.Добавить(1);
50+
Массив.Добавить(2);
51+
Массив.Добавить(2);
52+
Массив.Добавить(3);
53+
Массив.Добавить(3);
54+
Массив.Добавить(3);
55+
56+
Стрим = Потоки.ИзКоллекции(Массив);
57+
Результат = Стрим.Различные().ВМассив();
58+
59+
Для Каждого Элемент Из Результат Цикл
60+
Сообщить(Элемент);
61+
КонецЦикла;

0 commit comments

Comments
 (0)