Skip to content

Commit 95850ae

Browse files
committed
Сокрытие служебных экспортных процедур в служебном классе
1 parent c94db9f commit 95850ae

File tree

2 files changed

+182
-152
lines changed

2 files changed

+182
-152
lines changed

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

Lines changed: 17 additions & 152 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
Перем Лог;
55

66
Перем Конвейер;
7-
Перем Коллекция;
7+
Перем ПотокСлужебный;
88

99
// Общее API
1010

1111
Процедура УстановитьКоллекцию(НоваяКоллекция) Экспорт
12-
Коллекция = НоваяКоллекция;
13-
Лог.Отладка("Установлена коллекция размером %1", Коллекция.Количество());
12+
ПотокСлужебный.УстановитьКоллекцию(НоваяКоллекция);
13+
Лог.Отладка("Установлена коллекция размером %1", ПотокСлужебный.ПолучитьКоллекцию().Количество());
1414
КонецПроцедуры
1515

1616
// Конвейерные методы
@@ -79,6 +79,7 @@
7979
ПройтиКонвейер();
8080

8181
Результат = Неопределено;
82+
Коллекция = ПотокСлужебный.ПолучитьКоллекцию();
8283
Для Каждого Элемент Из Коллекция Цикл
8384
Результат = Элемент;
8485
Прервать;
@@ -95,6 +96,7 @@
9596
ПройтиКонвейер();
9697

9798
Результат = Новый Массив;
99+
Коллекция = ПотокСлужебный.ПолучитьКоллекцию();
98100
Для Каждого Элемент Из Коллекция Цикл
99101
Результат.Добавить(Элемент);
100102
КонецЦикла;
@@ -109,6 +111,7 @@
109111

110112
ПройтиКонвейер();
111113

114+
Коллекция = ПотокСлужебный.ПолучитьКоллекцию();
112115
Результат = Коллекция.Количество();
113116

114117
Возврат Результат;
@@ -125,7 +128,7 @@
125128
ДополнительныеПараметры = Новый Структура;
126129
ДополнительныеПараметры.Вставить("Обработчик", ОписаниеОповещения);
127130

128-
ВыполнитьОбработать(Результат, ДополнительныеПараметры);
131+
ПотокСлужебный.ВыполнитьОбработать(Результат, ДополнительныеПараметры);
129132

130133
Возврат Результат;
131134

@@ -145,7 +148,7 @@
145148
ДополнительныеПараметры = Новый Структура;
146149
ДополнительныеПараметры.Вставить("Обработчик", ОбработчикСравнения);
147150

148-
ВыполнитьСортировать(Результат, ДополнительныеПараметры);
151+
ПотокСлужебный.ВыполнитьСортировать(Результат, ДополнительныеПараметры);
149152

150153
Если Результат.Количество() = 0 Тогда
151154
Возврат Неопределено;
@@ -169,7 +172,7 @@
169172
ДополнительныеПараметры = Новый Структура;
170173
ДополнительныеПараметры.Вставить("Обработчик", ОбработчикСравнения);
171174

172-
ВыполнитьСортировать(Результат, ДополнительныеПараметры);
175+
ПотокСлужебный.ВыполнитьСортировать(Результат, ДополнительныеПараметры);
173176

174177
Если Результат.Количество() = 0 Тогда
175178
Возврат Неопределено;
@@ -186,6 +189,7 @@
186189
ПройтиКонвейер();
187190

188191
Результат = НачальноеЗначение;
192+
Коллекция = ПотокСлужебный.ПолучитьКоллекцию();
189193
Для Каждого Элемент Из Коллекция Цикл
190194
Если Обработчик.ДополнительныеПараметры = Неопределено Тогда
191195
Обработчик.ДополнительныеПараметры = Новый Структура;
@@ -200,150 +204,6 @@
200204

201205
// Служебные процедуры и функции
202206

203-
Процедура ВыполнитьПервые(Результат, ДополнительныеПараметры) Экспорт
204-
205-
Количество = ДополнительныеПараметры.Количество;
206-
207-
Лог.Отладка("ВыполнитьПервые %1", Количество);
208-
209-
Результат = Новый Массив;
210-
Для сч = 0 По Количество - 1 Цикл
211-
Элемент = Коллекция[сч];
212-
Результат.Добавить(Элемент);
213-
КонецЦикла;
214-
215-
КонецПроцедуры
216-
217-
Процедура ВыполнитьПропустить(Результат, ДополнительныеПараметры) Экспорт
218-
219-
Количество = ДополнительныеПараметры.Количество;
220-
221-
Лог.Отладка("ВыполнитьПропустить %1", Количество);
222-
223-
Результат = Новый Массив;
224-
Для сч = Количество По Коллекция.ВГраница() Цикл
225-
Элемент = Коллекция[сч];
226-
Результат.Добавить(Элемент);
227-
КонецЦикла;
228-
229-
КонецПроцедуры
230-
231-
Процедура ВыполнитьРазличные(Результат, ДополнительныеПараметры) Экспорт
232-
233-
Лог.Отладка("ВыполнитьРазличные");
234-
235-
Результат = Новый Массив;
236-
237-
ОбработчикСравнения = ДополнительныеПараметры.Обработчик;
238-
239-
Для Каждого Элемент Из Коллекция Цикл
240-
241-
КоличествоСовпадений = 0;
242-
243-
Для Каждого ЭлементРезультат Из Результат Цикл
244-
ОбработчикСравнения.ДополнительныеПараметры.Элемент1 = Элемент;
245-
ОбработчикСравнения.ДополнительныеПараметры.Элемент2 = ЭлементРезультат;
246-
РезультатСортировки = Неопределено;
247-
ОписанияОповещений.ВыполнитьОбработкуОповещения(ОбработчикСравнения, РезультатСортировки);
248-
Если РезультатСортировки = 0 Тогда
249-
КоличествоСовпадений = КоличествоСовпадений + 1;
250-
КонецЕсли;
251-
КонецЦикла;
252-
253-
Если КоличествоСовпадений = 0 Тогда
254-
Результат.Добавить(Элемент);
255-
КонецЕсли;
256-
257-
КонецЦикла;
258-
259-
КонецПроцедуры
260-
261-
Процедура ВыполнитьФильтровать(Результат, ДополнительныеПараметры) Экспорт
262-
263-
Обработчик = ДополнительныеПараметры.Обработчик;
264-
265-
Лог.Отладка("ВыполнитьФильтровать %1", Обработчик.ИмяПроцедуры);
266-
267-
Результат = Новый Массив;
268-
269-
Если Обработчик.ДополнительныеПараметры = Неопределено Тогда
270-
Обработчик.ДополнительныеПараметры = Новый Структура;
271-
КонецЕсли;
272-
Обработчик.ДополнительныеПараметры.Вставить("Элемент");
273-
274-
Для Каждого Элемент Из Коллекция Цикл
275-
Обработчик.ДополнительныеПараметры.Элемент = Элемент;
276-
РезультатФильтрации = Ложь;
277-
ОписанияОповещений.ВыполнитьОбработкуОповещения(Обработчик, РезультатФильтрации);
278-
279-
Если РезультатФильтрации Тогда
280-
Результат.Добавить(Элемент);
281-
КонецЕсли;
282-
КонецЦикла;
283-
284-
КонецПроцедуры
285-
286-
Процедура ВыполнитьОбработать(Результат, ДополнительныеПараметры) Экспорт
287-
288-
Обработчик = ДополнительныеПараметры.Обработчик;
289-
290-
Лог.Отладка("ВыполнитьОбработать %1", Обработчик.ИмяПроцедуры);
291-
292-
Результат = Новый Массив;
293-
294-
Если Обработчик.ДополнительныеПараметры = Неопределено Тогда
295-
Обработчик.ДополнительныеПараметры = Новый Структура;
296-
КонецЕсли;
297-
Обработчик.ДополнительныеПараметры.Вставить("Элемент");
298-
299-
Для Каждого Элемент Из Коллекция Цикл
300-
Обработчик.ДополнительныеПараметры.Элемент = Элемент;
301-
РезультатОбработки = Элемент;
302-
ОписанияОповещений.ВыполнитьОбработкуОповещения(Обработчик, РезультатОбработки);
303-
304-
Результат.Добавить(РезультатОбработки);
305-
КонецЦикла;
306-
307-
КонецПроцедуры
308-
309-
Процедура ВыполнитьСортировать(Результат, ДополнительныеПараметры) Экспорт
310-
311-
Обработчик = ДополнительныеПараметры.Обработчик;
312-
313-
Лог.Отладка("ВыполнитьСортировать %1", Обработчик.ИмяПроцедуры);
314-
315-
Результат = Коллекция;
316-
317-
Если Обработчик.ДополнительныеПараметры = Неопределено Тогда
318-
Обработчик.ДополнительныеПараметры = Новый Структура;
319-
КонецЕсли;
320-
Обработчик.ДополнительныеПараметры.Вставить("Элемент1");
321-
Обработчик.ДополнительныеПараметры.Вставить("Элемент2");
322-
323-
Для й = 0 По Результат.Количество() - 1 Цикл
324-
Флаг = Ложь;
325-
к = Результат.Количество() - 1;
326-
Пока к > й Цикл
327-
Элемент = Результат[к - 1];
328-
СледующийЭлемент = Результат[к];
329-
Обработчик.ДополнительныеПараметры.Элемент1 = Элемент;
330-
Обработчик.ДополнительныеПараметры.Элемент2 = СледующийЭлемент;
331-
РезультатСортировки = Неопределено;
332-
ОписанияОповещений.ВыполнитьОбработкуОповещения(Обработчик, РезультатСортировки);
333-
Если РезультатСортировки > 0 Тогда
334-
Результат[к - 1] = СледующийЭлемент;
335-
Результат[к] = Элемент;
336-
Флаг = Истина;
337-
КонецЕсли;
338-
к = к - 1;
339-
КонецЦикла;
340-
Если НЕ Флаг Тогда
341-
Прервать;
342-
КонецЕсли;
343-
КонецЦикла;
344-
345-
КонецПроцедуры
346-
347207
Процедура ПоложитьЯчейкуВКонвейер(ИмяОперации,
348208
ВходящееОписаниеОповещения = Неопределено,
349209
ДополнительныеПараметры = Неопределено)
@@ -362,7 +222,7 @@
362222
ДополнительныеПараметры.Вставить("Обработчик", ВходящееОписаниеОповещения);
363223
КонецЕсли;
364224

365-
Ячейка = ОписанияОповещений.Создать("Выполнить" + ИмяОперации, ЭтотОбъект, ДополнительныеПараметры);
225+
Ячейка = ОписанияОповещений.Создать("Выполнить" + ИмяОперации, ПотокСлужебный, ДополнительныеПараметры);
366226

367227
Конвейер.Добавить(Ячейка);
368228

@@ -374,11 +234,13 @@
374234

375235
Результат = Новый Массив;
376236
Для Каждого Ячейка Из Конвейер Цикл
237+
Коллекция = ПотокСлужебный.ПолучитьКоллекцию();
238+
377239
Лог.Отладка("Выполняю ячейку конвейера %1", Ячейка.ИмяПроцедуры);
378240
Лог.Отладка("Размер коллекции %1", Коллекция.Количество());
379241

380242
ОписанияОповещений.ВыполнитьОбработкуОповещения(Ячейка, Результат);
381-
Коллекция = Результат;
243+
ПотокСлужебный.УстановитьКоллекцию(Результат);
382244
КонецЦикла;
383245

384246
Конвейер.Очистить();
@@ -389,6 +251,9 @@
389251
Конвейер = Новый Массив;
390252
Лог = Логирование.ПолучитьЛог("oscript.lib.stream");
391253
Лог.УстановитьУровень(УровниЛога.Отладка);
254+
255+
ПутьКСценарию_ПотокСлужебный = ОбъединитьПути(ТекущийСценарий().Каталог, "ПотокСлужебный.os");
256+
ПотокСлужебный = ЗагрузитьСценарий(ПутьКСценарию_ПотокСлужебный);
392257
КонецПроцедуры
393258

394259
Инициализация();

0 commit comments

Comments
 (0)