Skip to content

Commit 01be5d5

Browse files
committed
Терминатор Получить принимает в себя тип значения, в котором необходимо вернуть результат
1 parent 3a25178 commit 01be5d5

File tree

4 files changed

+78
-8
lines changed

4 files changed

+78
-8
lines changed

github.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
.Первые(5)
5252
.Сортировать(СортировкаПоКонтрибьюциям)
5353
.Первые(3)
54-
.ВМассив();
54+
.Получить(Тип("ТаблицаЗначений"));
5555

5656
Для Каждого Элемент Из Результат Цикл
5757
Сообщить(Элемент.Имя);

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

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -216,14 +216,52 @@
216216

217217
КонецФункции
218218

219-
Функция Получить() Экспорт
220-
Лог.Отладка("Получить");
219+
Функция Получить(ТипРезультата) Экспорт
221220

222-
ПройтиКонвейер();
221+
Лог.Отладка("Получить %1", ТипРезультата);
223222

224-
Результат = ПотокСлужебный.ПолучитьКоллекцию();
223+
ПройтиКонвейер();
225224

225+
Коллекция = ПотокСлужебный.ПолучитьКоллекцию();
226+
КэшКолонок = ПотокСлужебный.ПолучитьКэшКолонок();
227+
Лог.Информация(КэшКолонок.Количество());
228+
229+
Результат = Новый(ТипРезультата);
230+
231+
Рефлектор = Новый Рефлектор;
232+
ТаблицаСвойств = Рефлектор.ПолучитьТаблицуСвойств(Результат);
233+
РезультатСодержитКолонки = ТаблицаСвойств.Найти("Колонки", "Имя") <> Неопределено;
234+
Если РезультатСодержитКолонки Тогда
235+
Для Каждого Колонка Из КэшКолонок Цикл
236+
Результат.Колонки.Добавить(
237+
Колонка.Имя,
238+
Колонка.ТипЗначения,
239+
Колонка.Заголовок,
240+
Колонка.Ширина
241+
);
242+
КонецЦикла;
243+
244+
Если Результат.Колонки.Количество() = 0 Тогда
245+
Результат.Колонки.Добавить("Значение");
246+
КонецЕсли;
247+
КонецЕсли;
248+
249+
ЭлементСодержитКолонки = КэшКолонок.Количество() > 0;
250+
Лог.Отладка("Результат содержит колонки %1", РезультатСодержитКолонки);
251+
Лог.Отладка("Элемент содержит колонки %1", ЭлементСодержитКолонки);
252+
Для Каждого ЭлементКоллекции Из Коллекция Цикл
253+
Если РезультатСодержитКолонки И ЭлементСодержитКолонки Тогда
254+
ЗаполнитьЗначенияСвойств(Результат.Добавить(), ЭлементКоллекции);
255+
ИначеЕсли РезультатСодержитКолонки Тогда
256+
НоваяСтрока = Результат.Добавить();
257+
НоваяСтрока.Значение = ЭлементКоллекции;
258+
Иначе
259+
Результат.Добавить(ЭлементКоллекции);
260+
КонецЕсли;
261+
КонецЦикла;
262+
226263
Возврат Результат;
264+
227265
КонецФункции
228266

229267
Функция ЛюбойСоответствует(ОписаниеОповещения) Экспорт
@@ -351,7 +389,7 @@
351389
Лог.Отладка("Размер коллекции %1", Коллекция.Количество());
352390

353391
ОписанияОповещений.ВыполнитьОбработкуОповещения(Ячейка, Результат);
354-
ПотокСлужебный.УстановитьКоллекцию(Результат);
392+
ПотокСлужебный.УстановитьКоллекцию(Результат, Ложь);
355393
КонецЦикла;
356394

357395
Конвейер.Очистить();

src/Классы/ПотокСлужебный.os

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,46 @@
44
Перем Лог;
55

66
Перем Коллекция;
7+
Перем КэшКолонок;
78

8-
Процедура УстановитьКоллекцию(НоваяКоллекция) Экспорт
9+
Процедура УстановитьКоллекцию(НоваяКоллекция, ОбновлятьКэшКолонок = Истина) Экспорт
10+
911
Коллекция = Новый Массив;
12+
1013
Для Каждого ЭлементНовойКоллекции Из НоваяКоллекция Цикл
1114
Коллекция.Добавить(ЭлементНовойКоллекции);
1215
КонецЦикла;
16+
17+
Если НЕ ОбновлятьКэшКолонок Тогда
18+
Возврат;
19+
КонецЕсли;
20+
21+
КэшКолонок = Новый Массив;
22+
23+
Рефлектор = Новый Рефлектор;
24+
ТаблицаСвойств = Рефлектор.ПолучитьТаблицуСвойств(НоваяКоллекция);
25+
Для Каждого Свойство Из ТаблицаСвойств Цикл
26+
Лог.Отладка("Обнаружено свойство коллекции %1", Свойство.Имя);
27+
КонецЦикла;
28+
29+
Если ТаблицаСвойств.Найти("Колонки", "Имя") <> Неопределено Тогда
30+
Для Каждого Колонка Из НоваяКоллекция.Колонки Цикл
31+
КэшКолонок.Добавить(Колонка);
32+
КонецЦикла;
33+
КонецЕсли;
34+
35+
Лог.Информация("Кэш колонок содержит %1 колонок", КэшКолонок.Количество());
36+
1337
КонецПроцедуры
1438

1539
Функция ПолучитьКоллекцию() Экспорт
1640
Возврат Коллекция;
1741
КонецФункции
1842

43+
Функция ПолучитьКэшКолонок() Экспорт
44+
Возврат КэшКолонок;
45+
КонецФункции
46+
1947
Процедура ВыполнитьПервые(Результат, ДополнительныеПараметры) Экспорт
2048

2149
Количество = ДополнительныеПараметры.Количество;

test.os

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,11 @@
3737
.Фильтровать(ФункцияФильтрации)
3838
.Первые(2)
3939
.Обработать(ФункцияОбработки)
40-
.ДляКаждого(Потоки.СтандартныйОбработчик_Сообщить());
40+
.Получить(Тип("Массив"));
41+
42+
Для Каждого Элемент Из Результат Цикл
43+
Сообщить(Элемент);
44+
КонецЦикла;
4145

4246
Стрим = Потоки.ИзКоллекции(Массив);
4347
Результат = Стрим

0 commit comments

Comments
 (0)