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 Сергей Старых 4 months ago. Updated about 2 months 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 Сергей Старых 4 months ago

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

Updated by Сергей Старых about 2 months ago

  • Description updated (diff)

Also available in: Atom PDF