|
Цикл съедает всю память и все зависает. Как оптимизировать? | ☑ | ||
---|---|---|---|---|
0
vmprog
16.11.12
✎
17:19
|
Задача. Подкрутить стандартную обработку "Поиск и замена дублирующихся элементов", чтобы после заполнения найденных ссылок галки были только на объектах отобранных по условию.
Делаю так: [code] Процедура КоманднаяПанельЗаменяемыеЗначенияНайтиСсылки(Кнопка) МассивЗаменяемых = Новый Массив; Для каждого Стр Из ЗаменяемыеЗначения Цикл Если Стр.Пометка Тогда МассивЗаменяемых.Добавить(Стр.ЧтоЗаменять); КонецЕсли; КонецЦикла; Если МассивЗаменяемых.Количество() = 0 Тогда Предупреждение("Не выбрано ни одного значения для поиска!"); Возврат; КонецЕсли; НайденныеСсылки = НайтиПоСсылкам(МассивЗаменяемых); НайденныеСсылки.Колонки[0].Имя = "Ссылка"; НайденныеСсылки.Колонки[1].Имя = "Данные"; НайденныеСсылки.Колонки[2].Имя = "Метаданные"; НайденныеСсылки.Колонки.Добавить("Включено", вОписаниеТипа("Булево")); КоманднаяПанельНайденныеСсылкиВключитьВсе(""); //--Мой кусок Для каждого СтрТ из НайденныеСсылки цикл Если ТипЗнч(СтрТ.Данные) = Тип("ДокументСсылка.Обращение") и СтрТ.Данные.Дата < Дата(2012,11,01) тогда СтрТ.Включено = ложь; ИначеЕсли ТипЗнч(СтрТ.Данные) = Тип("СправочникСсылка.Клиенты") и СтрТ.Данные.ДатаПервогоОбращения < Дата(2012,11,01) тогда СтрТ.Включено = ложь; КонецЕсли; КонецЦикла; //--Мой кусок КонецПроцедуры [/code] |
|||
1
Утконос
16.11.12
✎
17:20
|
учи запросы
|
|||
2
vmprog
16.11.12
✎
17:24
|
(1) тогда подскажите как в МенеджерВременныхТаблиц засунуть ТЗ с колонкой разных типов?
|
|||
3
Maxus43
16.11.12
✎
17:26
|
(2) всмысле с разными? составной тип поддерживает
|
|||
4
5 Элемент
16.11.12
✎
17:28
|
Нужно обязательно указать их тип
|
|||
5
Maxus43
16.11.12
✎
17:28
|
что такое "ЗаменяемыеЗначения"?
|
|||
6
vmprog
16.11.12
✎
17:29
|
НайденныеСсылки = НайтиПоСсылкам(МассивЗаменяемых);
Наполняет таблицу нестабильной кучей разных типов. |
|||
7
Maxus43
16.11.12
✎
17:30
|
(6) она типизированная же. её в запрос подсунуть никак чтоль?
|
|||
8
vmprog
16.11.12
✎
17:31
|
(5) таблица ссылок элементов которые надо заменить друг на друга. Это кусок стандартной обработки "Поиск и замена дублирующихся элементов"
|
|||
9
Maxus43
16.11.12
✎
17:32
|
(7) + удалив 3-ю колонку
|
|||
10
vmprog
16.11.12
✎
17:33
|
Пытался так:
РезультатТЗ = новый ТаблицаЗначений; Для Каждого Колонка из НайденныеСсылки.Колонки Цикл Имя = Колонка.Имя; МассивТипов = новый Массив(1); МассивТипов[0] = ТипЗнч(НайденныеСсылки[0][Имя]); Описатель = новый ОписаниеТипов(МассивТипов); РезультатТЗ.Колонки.Добавить(Имя, Описатель); КонецЦикла; Для каждого Строка из НайденныеСсылки Цикл СтрокаРез = РезультатТЗ.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаРез, Строка); КонецЦикла; НайденныеСсылки = РезультатТЗ.Скопировать(); Загружаем таблицу значений в менеджер временных таблиц запроса Запрос=Новый Запрос("Выбрать Т.Ссылка, Т.Данные, Т.Метаданные, Т.Включено ПОМЕСТИТЬ ВТТаб Из &Таб Как Т"); Запрос=Новый Запрос("Выбрать * ПОМЕСТИТЬ ВТТаб Из &Таб Как Т"); Запрос.МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Таб",НайденныеСсылки); Запрос.Выполнить(); |
|||
11
Maxus43
16.11.12
✎
17:34
|
ТЗ_В_ЗАПРОС = НайденныеСсылки.Скопировать("Ссылка, Данные");
и далее |
|||
12
Aprobator
16.11.12
✎
17:38
|
(10) это типа шутка такая?
|
|||
13
Maxus43
16.11.12
✎
17:39
|
(12) :)
|
|||
14
vmprog
16.11.12
✎
17:45
|
(12)
{Форма.Форма.Форма(597)}: Ошибка при вызове метода контекста (Выполнить) Запрос.Выполнить(); по причине: {(1, 30)}: Тип не может быть выбран в запросе Выбрать * ПОМЕСТИТЬ ВТТаб Из <<?>>&Таб Как Т |
|||
15
Aprobator
16.11.12
✎
17:57
|
колонку метаданные во входящей таблице переименовать попробуй.
|
|||
16
Aprobator
16.11.12
✎
18:01
|
была похожая шняга когда набор записей регистра накопления выгружал в ТЗ и потом в запрос пытался отдать. Только там трабла была из за колонки моментвремени.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |