44Перем Лог ;
55
66Перем Конвейер ;
7- Перем Коллекция ;
7+ Перем ПотокСлужебный ;
88
99// Общее API
1010
1111Процедура УстановитьКоллекцию (НоваяКоллекция ) Экспорт
12- Коллекция = НоваяКоллекция;
13- Лог.Отладка("Установлена коллекция размером %1" , Коллекция .Количество());
12+ ПотокСлужебный.УстановитьКоллекцию( НоваяКоллекция) ;
13+ Лог.Отладка("Установлена коллекция размером %1" , ПотокСлужебный.ПолучитьКоллекцию() .Количество());
1414КонецПроцедуры
1515
1616// Конвейерные методы
7979 ПройтиКонвейер();
8080
8181 Результат = Неопределено ;
82+ Коллекция = ПотокСлужебный.ПолучитьКоллекцию();
8283 Для Каждого Элемент Из Коллекция Цикл
8384 Результат = Элемент;
8485 Прервать ;
9596 ПройтиКонвейер();
9697
9798 Результат = Новый Массив;
99+ Коллекция = ПотокСлужебный.ПолучитьКоллекцию();
98100 Для Каждого Элемент Из Коллекция Цикл
99101 Результат.Добавить(Элемент);
100102 КонецЦикла ;
109111
110112 ПройтиКонвейер();
111113
114+ Коллекция = ПотокСлужебный.ПолучитьКоллекцию();
112115 Результат = Коллекция.Количество();
113116
114117 Возврат Результат;
125128 ДополнительныеПараметры = Новый Структура;
126129 ДополнительныеПараметры.Вставить("Обработчик" , ОписаниеОповещения);
127130
128- ВыполнитьОбработать(Результат, ДополнительныеПараметры);
131+ ПотокСлужебный. ВыполнитьОбработать(Результат, ДополнительныеПараметры);
129132
130133 Возврат Результат;
131134
145148 ДополнительныеПараметры = Новый Структура;
146149 ДополнительныеПараметры.Вставить("Обработчик" , ОбработчикСравнения);
147150
148- ВыполнитьСортировать(Результат, ДополнительныеПараметры);
151+ ПотокСлужебный. ВыполнитьСортировать(Результат, ДополнительныеПараметры);
149152
150153 Если Результат.Количество() = 0 Тогда
151154 Возврат Неопределено ;
169172 ДополнительныеПараметры = Новый Структура;
170173 ДополнительныеПараметры.Вставить("Обработчик" , ОбработчикСравнения);
171174
172- ВыполнитьСортировать(Результат, ДополнительныеПараметры);
175+ ПотокСлужебный. ВыполнитьСортировать(Результат, ДополнительныеПараметры);
173176
174177 Если Результат.Количество() = 0 Тогда
175178 Возврат Неопределено ;
186189 ПройтиКонвейер();
187190
188191 Результат = НачальноеЗначение;
192+ Коллекция = ПотокСлужебный.ПолучитьКоллекцию();
189193 Для Каждого Элемент Из Коллекция Цикл
190194 Если Обработчик.ДополнительныеПараметры = Неопределено Тогда
191195 Обработчик.ДополнительныеПараметры = Новый Структура;
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 ДополнительныеПараметры = Неопределено )
362222 ДополнительныеПараметры.Вставить("Обработчик" , ВходящееОписаниеОповещения);
363223 КонецЕсли ;
364224
365- Ячейка = ОписанияОповещений.Создать("Выполнить" + ИмяОперации, ЭтотОбъект , ДополнительныеПараметры);
225+ Ячейка = ОписанияОповещений.Создать("Выполнить" + ИмяОперации, ПотокСлужебный , ДополнительныеПараметры);
366226
367227 Конвейер.Добавить(Ячейка);
368228
374234
375235 Результат = Новый Массив;
376236 Для Каждого Ячейка Из Конвейер Цикл
237+ Коллекция = ПотокСлужебный.ПолучитьКоллекцию();
238+
377239 Лог.Отладка("Выполняю ячейку конвейера %1" , Ячейка.ИмяПроцедуры);
378240 Лог.Отладка("Размер коллекции %1" , Коллекция.Количество());
379241
380242 ОписанияОповещений.ВыполнитьОбработкуОповещения(Ячейка, Результат);
381- Коллекция = Результат;
243+ ПотокСлужебный.УстановитьКоллекцию( Результат) ;
382244 КонецЦикла ;
383245
384246 Конвейер.Очистить();
389251 Конвейер = Новый Массив;
390252 Лог = Логирование.ПолучитьЛог("oscript.lib.stream" );
391253 Лог.УстановитьУровень(УровниЛога.Отладка);
254+
255+ ПутьКСценарию_ПотокСлужебный = ОбъединитьПути(ТекущийСценарий().Каталог, "ПотокСлужебный.os" );
256+ ПотокСлужебный = ЗагрузитьСценарий(ПутьКСценарию_ПотокСлужебный);
392257КонецПроцедуры
393258
394259Инициализация();
0 commit comments