Project

Profile

Help

HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. Read more...

Bug #951093

open

8.3.1-22+ Очень долгая компоновка с отбором по дочернему полю от ссылочной колонки таблицы значений

Added by Сергей Старых over 1 year ago. Updated over 1 year ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Sprint/Milestone:
-
Start date:
Due date:
% Done:

0%

Estimated time:

Description

https://partners.v8.1c.ru/forum/t/2084496/m/2084496
https://bugboard.v8.1c.ru/error/000130677
Конфигурация ПО

8.3.1-22

Проблема

Очень долгая компоновка с отбором по дочернему полю от ссылочной колонки таблицы значений

Воспроизведение

Восстановить базу из выгрузки. Запустить клиентское приложение. Откроется отчет по таблице значений из одной ссылочной колонки с отбором по ее дочернему полю. Нажать в отчете "Сформировать". При этом выполнится код
КоличествоСтрок = 5000; // 20 сек
ТаблицаЗначений = Новый ТаблицаЗначений;
ТаблицаЗначений.Колонки.Добавить("Ссылка");
Для Счетчик = 1 По КоличествоСтрок Цикл
ТаблицаЗначений.Добавить().Ссылка = Справочники.Справочник1.ПолучитьСсылку();
КонецЦикла;
КомпоновщикМакета = НОвый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки);
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(Макет, Новый Структура("ТаблицаЗначений", ТаблицаЗначений));
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
Начало = ТекущаяДата();
Результат = ПроцессорВывода.Вывести(Процессор);
Сообщить("" + (ТекущаяДата() - Начало) + "сек");

И после долгого ожидания будет выведено большое число секунд

20 сек

А ожидалось очень малое число секунд (1).

Эксперименты показали

Основную часть времени процесс 1С грузит процессор и НЕ выполняет запросы к БД, которые по данным техножурнала в сумме занимают 1 сек.
Длительность сильно зависит от числа различных ссылок в колонке
КоличествоСтрок = 2000; // 3 сек
КоличествоСтрок = 3000; // 5 сек
КоличествоСтрок = 4000; // 10 сек
КоличествоСтрок = 5000; // 20 сек

Способ обхода

Добавить ключевое поле в таблицу значений. Поместить подтаблицу из него и всех ссылочных колонок, чьи дочерние поля участвуют в отборе, во временную таблицу запроса. Разбить отбор на части: с обращением к дочерним полям и без них. Выбрать из временной таблицы ключи строк. В отбор компоновки добавить условие по полученным ключам вместо отборов по дочерним полям.


Files

ааа.xml (2.72 KB) ааа.xml Сергей Старых, 2022-10-01 08:08 AM
1Cv8.dt (156 KB) 1Cv8.dt Сергей Старых, 2022-10-01 08:08 AM
clipboard-202210010909-xxhoe.png (34.4 KB) clipboard-202210010909-xxhoe.png Сергей Старых, 2022-10-01 08:09 AM
clipboard-202210010909-c9yae.png (8.58 KB) clipboard-202210010909-c9yae.png Сергей Старых, 2022-10-01 08:09 AM

Related issues

Related to Инструменты разработчика Tormozit для 1С - Task #951184: Значительно ускорена фильтрация табличного поля строкой поиска при наличии большого числа строк и разных ссылокClosed

Actions
Actions #1

Updated by Сергей Старых over 1 year ago

  • Related to Task #951184: Значительно ускорена фильтрация табличного поля строкой поиска при наличии большого числа строк и разных ссылок added
Actions #2

Updated by Сергей Старых over 1 year ago

  • Description updated (diff)

Also available in: Atom PDF