1- #Использовать logos
2- #Использовать notify
3-
4- Перем Лог ;
5-
6- Перем Коллекция ;
7- Перем КэшКолонок ;
8-
9- Процедура УстановитьКоллекцию (НоваяКоллекция , ОбновлятьКэшКолонок = Истина ) Экспорт
10-
11- Коллекция = Новый Массив;
12-
13- Для Каждого ЭлементНовойКоллекции Из НоваяКоллекция Цикл
14- Коллекция.Добавить(ЭлементНовойКоллекции);
15- КонецЦикла ;
16-
17- Если НЕ ОбновлятьКэшКолонок Тогда
18- Возврат ;
19- КонецЕсли ;
20-
21- КэшКолонок = Новый Массив;
22-
23- ЕстьРеквизитКолонки = Истина ;
24- Попытка
25- Колонки = НоваяКоллекция.Колонки;
26- Исключение
27- ЕстьРеквизитКолонки = Ложь ;
28- Конецпопытки ;
29-
30- Если ЕстьРеквизитКолонки Тогда
31- Для Каждого Колонка Из НоваяКоллекция.Колонки Цикл
32- КэшКолонок.Добавить(Колонка);
33- КонецЦикла ;
34- КонецЕсли ;
35-
36- Лог.Отладка("Кэш колонок содержит %1 колонок" , КэшКолонок.Количество());
37-
38- КонецПроцедуры
39-
40- Функция ПолучитьКоллекцию () Экспорт
41- Возврат Коллекция;
42- КонецФункции
43-
44- Функция ПолучитьКэшКолонок () Экспорт
45- Возврат КэшКолонок;
46- КонецФункции
47-
48- Процедура ВыполнитьПервые (Результат , ДополнительныеПараметры ) Экспорт
49-
50- Количество = ДополнительныеПараметры.Количество;
51-
52- Лог.Отладка("ВыполнитьПервые %1" , Количество);
53-
54- Результат = Новый Массив;
55- Для сч = 0 По Количество - 1 Цикл
56- Элемент = Коллекция[сч];
57- Результат.Добавить(Элемент);
58- КонецЦикла ;
59-
60- КонецПроцедуры
61-
62- Процедура ВыполнитьПропустить (Результат , ДополнительныеПараметры ) Экспорт
63-
64- Количество = ДополнительныеПараметры.Количество;
65-
66- Лог.Отладка("ВыполнитьПропустить %1" , Количество);
67-
68- Результат = Новый Массив;
69- Для сч = Количество По Коллекция.ВГраница() Цикл
70- Элемент = Коллекция[сч];
71- Результат.Добавить(Элемент);
72- КонецЦикла ;
73-
74- КонецПроцедуры
75-
76- Процедура ВыполнитьРазличные (Результат , ДополнительныеПараметры ) Экспорт
77-
78- Лог.Отладка("ВыполнитьРазличные" );
79-
80- Результат = Новый Массив;
81-
82- ОбработчикСравнения = ДополнительныеПараметры.Обработчик;
83-
84- Для Каждого Элемент Из Коллекция Цикл
85-
86- КоличествоСовпадений = 0 ;
87-
88- Для Каждого ЭлементРезультат Из Результат Цикл
89- ОбработчикСравнения.ДополнительныеПараметры.Элемент1 = Элемент;
90- ОбработчикСравнения.ДополнительныеПараметры.Элемент2 = ЭлементРезультат;
91- РезультатСортировки = Неопределено ;
92- ОписанияОповещений.ВыполнитьОбработкуОповещения(ОбработчикСравнения, РезультатСортировки);
93- Если РезультатСортировки = 0 Тогда
94- КоличествоСовпадений = КоличествоСовпадений + 1 ;
95- КонецЕсли ;
96- КонецЦикла ;
97-
98- Если КоличествоСовпадений = 0 Тогда
99- Результат.Добавить(Элемент);
100- КонецЕсли ;
101-
102- КонецЦикла ;
103-
104- КонецПроцедуры
105-
106- Процедура ВыполнитьФильтровать (Результат , ДополнительныеПараметры ) Экспорт
107-
108- Обработчик = ДополнительныеПараметры.Обработчик;
109-
110- Лог.Отладка("ВыполнитьФильтровать %1" , Обработчик.ИмяПроцедуры);
111-
112- Результат = Новый Массив;
113-
114- Если Обработчик.ДополнительныеПараметры = Неопределено Тогда
115- Обработчик.ДополнительныеПараметры = Новый Структура;
116- КонецЕсли ;
117- Обработчик.ДополнительныеПараметры.Вставить("Элемент" );
118-
119- Для Каждого Элемент Из Коллекция Цикл
120- Обработчик.ДополнительныеПараметры.Элемент = Элемент;
121- РезультатФильтрации = Ложь ;
122- ОписанияОповещений.ВыполнитьОбработкуОповещения(Обработчик, РезультатФильтрации);
123-
124- Если РезультатФильтрации Тогда
125- Результат.Добавить(Элемент);
126- КонецЕсли ;
127- КонецЦикла ;
128-
129- КонецПроцедуры
130-
131- Процедура ВыполнитьОбработать (Результат , ДополнительныеПараметры ) Экспорт
132-
133- Обработчик = ДополнительныеПараметры.Обработчик;
134-
135- Лог.Отладка("ВыполнитьОбработать %1" , Обработчик.ИмяПроцедуры);
136-
137- Результат = Новый Массив;
138-
139- Если Обработчик.ДополнительныеПараметры = Неопределено Тогда
140- Обработчик.ДополнительныеПараметры = Новый Структура;
141- КонецЕсли ;
142- Обработчик.ДополнительныеПараметры.Вставить("Элемент" );
143-
144- Для Каждого Элемент Из Коллекция Цикл
145- Обработчик.ДополнительныеПараметры.Элемент = Элемент;
146- РезультатОбработки = Элемент;
147- ОписанияОповещений.ВыполнитьОбработкуОповещения(Обработчик, РезультатОбработки);
148-
149- Результат.Добавить(РезультатОбработки);
150- КонецЦикла ;
151-
152- КонецПроцедуры
153-
154- Процедура ВыполнитьСортировать (Результат , ДополнительныеПараметры ) Экспорт
155-
156- Обработчик = ДополнительныеПараметры.Обработчик;
157-
158- Лог.Отладка("ВыполнитьСортировать %1" , Обработчик.ИмяПроцедуры);
159-
160- Результат = Коллекция;
161-
162- Если Обработчик.ДополнительныеПараметры = Неопределено Тогда
163- Обработчик.ДополнительныеПараметры = Новый Структура;
164- КонецЕсли ;
165- Обработчик.ДополнительныеПараметры.Вставить("Элемент1" );
166- Обработчик.ДополнительныеПараметры.Вставить("Элемент2" );
167-
168- Для й = 0 По Результат.Количество() - 1 Цикл
169- Флаг = Ложь ;
170- к = Результат.Количество() - 1 ;
171- Пока к > й Цикл
172- Элемент = Результат[к - 1 ];
173- СледующийЭлемент = Результат[к];
174- Обработчик.ДополнительныеПараметры.Элемент1 = Элемент;
175- Обработчик.ДополнительныеПараметры.Элемент2 = СледующийЭлемент;
176- РезультатСортировки = Неопределено ;
177- ОписанияОповещений.ВыполнитьОбработкуОповещения(Обработчик, РезультатСортировки);
178- Если РезультатСортировки > 0 Тогда
179- Результат[к - 1 ] = СледующийЭлемент;
180- Результат[к] = Элемент;
181- Флаг = Истина ;
182- КонецЕсли ;
183- к = к - 1 ;
184- КонецЦикла ;
185- Если НЕ Флаг Тогда
186- Прервать ;
187- КонецЕсли ;
188- КонецЦикла ;
189-
190- КонецПроцедуры
191-
192- Процедура Инициализация ()
193- Лог = Логирование.ПолучитьЛог("oscript.lib.stream" );
194- КонецПроцедуры
195-
1+ #Использовать logos
2+ #Использовать notify
3+
4+ Перем Лог ;
5+
6+ Перем Коллекция ;
7+ Перем КэшКолонок ;
8+
9+ Процедура УстановитьКоллекцию (НоваяКоллекция , ОбновлятьКэшКолонок = Истина ) Экспорт
10+
11+ Коллекция = Новый Массив;
12+
13+ Для Каждого ЭлементНовойКоллекции Из НоваяКоллекция Цикл
14+ Коллекция.Добавить(ЭлементНовойКоллекции);
15+ КонецЦикла ;
16+
17+ Если НЕ ОбновлятьКэшКолонок Тогда
18+ Возврат ;
19+ КонецЕсли ;
20+
21+ КэшКолонок = Новый Массив;
22+
23+ ЕстьРеквизитКолонки = Истина ;
24+ Попытка
25+ Колонки = НоваяКоллекция.Колонки;
26+ Исключение
27+ ЕстьРеквизитКолонки = Ложь ;
28+ Конецпопытки ;
29+
30+ Если ЕстьРеквизитКолонки Тогда
31+ Для Каждого Колонка Из НоваяКоллекция.Колонки Цикл
32+ КэшКолонок.Добавить(Колонка);
33+ КонецЦикла ;
34+ КонецЕсли ;
35+
36+ Лог.Отладка("Кэш колонок содержит %1 колонок" , КэшКолонок.Количество());
37+
38+ КонецПроцедуры
39+
40+ Функция ПолучитьКоллекцию () Экспорт
41+ Возврат Коллекция;
42+ КонецФункции
43+
44+ Функция ПолучитьКэшКолонок () Экспорт
45+ Возврат КэшКолонок;
46+ КонецФункции
47+
48+ Процедура ВыполнитьПервые (Результат , ДополнительныеПараметры ) Экспорт
49+
50+ Количество = ДополнительныеПараметры.Количество;
51+
52+ Лог.Отладка("ВыполнитьПервые %1" , Количество);
53+
54+ Результат = Новый Массив;
55+ Для сч = 0 По Количество - 1 Цикл
56+ Элемент = Коллекция[сч];
57+ Результат.Добавить(Элемент);
58+ КонецЦикла ;
59+
60+ КонецПроцедуры
61+
62+ Процедура ВыполнитьПропустить (Результат , ДополнительныеПараметры ) Экспорт
63+
64+ Количество = ДополнительныеПараметры.Количество;
65+
66+ Лог.Отладка("ВыполнитьПропустить %1" , Количество);
67+
68+ Результат = Новый Массив;
69+ Для сч = Количество По Коллекция.ВГраница() Цикл
70+ Элемент = Коллекция[сч];
71+ Результат.Добавить(Элемент);
72+ КонецЦикла ;
73+
74+ КонецПроцедуры
75+
76+ Процедура ВыполнитьРазличные (Результат , ДополнительныеПараметры ) Экспорт
77+
78+ Лог.Отладка("ВыполнитьРазличные" );
79+
80+ Результат = Новый Массив;
81+
82+ ОбработчикСравнения = ДополнительныеПараметры.Обработчик;
83+
84+ Для Каждого Элемент Из Коллекция Цикл
85+
86+ КоличествоСовпадений = 0 ;
87+
88+ Для Каждого ЭлементРезультат Из Результат Цикл
89+ ОбработчикСравнения.ДополнительныеПараметры.Элемент1 = Элемент;
90+ ОбработчикСравнения.ДополнительныеПараметры.Элемент2 = ЭлементРезультат;
91+ РезультатСортировки = Неопределено ;
92+ ОписанияОповещений.ВыполнитьОбработкуОповещения(ОбработчикСравнения, РезультатСортировки);
93+ Если РезультатСортировки = 0 Тогда
94+ КоличествоСовпадений = КоличествоСовпадений + 1 ;
95+ КонецЕсли ;
96+ КонецЦикла ;
97+
98+ Если КоличествоСовпадений = 0 Тогда
99+ Результат.Добавить(Элемент);
100+ КонецЕсли ;
101+
102+ КонецЦикла ;
103+
104+ КонецПроцедуры
105+
106+ Процедура ВыполнитьФильтровать (Результат , ДополнительныеПараметры ) Экспорт
107+
108+ Обработчик = ДополнительныеПараметры.Обработчик;
109+
110+ Лог.Отладка("ВыполнитьФильтровать %1" , Обработчик.ИмяПроцедуры);
111+
112+ Результат = Новый Массив;
113+
114+ Если Обработчик.ДополнительныеПараметры = Неопределено Тогда
115+ Обработчик.ДополнительныеПараметры = Новый Структура;
116+ КонецЕсли ;
117+ Обработчик.ДополнительныеПараметры.Вставить("Элемент" );
118+
119+ Для Каждого Элемент Из Коллекция Цикл
120+ Обработчик.ДополнительныеПараметры.Элемент = Элемент;
121+ РезультатФильтрации = Ложь ;
122+ ОписанияОповещений.ВыполнитьОбработкуОповещения(Обработчик, РезультатФильтрации);
123+
124+ Если РезультатФильтрации Тогда
125+ Результат.Добавить(Элемент);
126+ КонецЕсли ;
127+ КонецЦикла ;
128+
129+ КонецПроцедуры
130+
131+ Процедура ВыполнитьОбработать (Результат , ДополнительныеПараметры ) Экспорт
132+
133+ Обработчик = ДополнительныеПараметры.Обработчик;
134+
135+ Лог.Отладка("ВыполнитьОбработать %1" , Обработчик.ИмяПроцедуры);
136+
137+ Результат = Новый Массив;
138+
139+ Если Обработчик.ДополнительныеПараметры = Неопределено Тогда
140+ Обработчик.ДополнительныеПараметры = Новый Структура;
141+ КонецЕсли ;
142+ Обработчик.ДополнительныеПараметры.Вставить("Элемент" );
143+
144+ Для Каждого Элемент Из Коллекция Цикл
145+ Обработчик.ДополнительныеПараметры.Элемент = Элемент;
146+ РезультатОбработки = Элемент;
147+ ОписанияОповещений.ВыполнитьОбработкуОповещения(Обработчик, РезультатОбработки);
148+
149+ Результат.Добавить(РезультатОбработки);
150+ КонецЦикла ;
151+
152+ КонецПроцедуры
153+
154+ Процедура ВыполнитьСортировать (Результат , ДополнительныеПараметры ) Экспорт
155+
156+ Обработчик = ДополнительныеПараметры.Обработчик;
157+
158+ Лог.Отладка("ВыполнитьСортировать %1" , Обработчик.ИмяПроцедуры);
159+
160+ Результат = Коллекция;
161+
162+ Если Обработчик.ДополнительныеПараметры = Неопределено Тогда
163+ Обработчик.ДополнительныеПараметры = Новый Структура;
164+ КонецЕсли ;
165+ Обработчик.ДополнительныеПараметры.Вставить("Элемент1" );
166+ Обработчик.ДополнительныеПараметры.Вставить("Элемент2" );
167+
168+ Для й = 0 По Результат.Количество() - 1 Цикл
169+ Флаг = Ложь ;
170+ к = Результат.Количество() - 1 ;
171+ Пока к > й Цикл
172+ Элемент = Результат[к - 1 ];
173+ СледующийЭлемент = Результат[к];
174+ Обработчик.ДополнительныеПараметры.Элемент1 = Элемент;
175+ Обработчик.ДополнительныеПараметры.Элемент2 = СледующийЭлемент;
176+ РезультатСортировки = Неопределено ;
177+ ОписанияОповещений.ВыполнитьОбработкуОповещения(Обработчик, РезультатСортировки);
178+ Если РезультатСортировки > 0 Тогда
179+ Результат[к - 1 ] = СледующийЭлемент;
180+ Результат[к] = Элемент;
181+ Флаг = Истина ;
182+ КонецЕсли ;
183+ к = к - 1 ;
184+ КонецЦикла ;
185+ Если НЕ Флаг Тогда
186+ Прервать ;
187+ КонецЕсли ;
188+ КонецЦикла ;
189+
190+ КонецПроцедуры
191+
192+ Процедура Инициализация ()
193+ Лог = Логирование.ПолучитьЛог("oscript.lib.stream" );
194+ КонецПроцедуры
195+
196196Инициализация();
0 commit comments