Очень динамический список

1. RustRR 14.06.17 09:17 Сейчас в теме
Как лучше организовать интерфейс по такой задаче. Есть сложный запрос, формирующий исходную таблицу с колонками: ссылка 1, ссылка 2, ссылка 3, сумма. Средний размер таблицы 1000 строк. На форму нужно вывести две таблицы. Первая таблица получается из исходной сворачиванием по первым двум ссылкам: ссылка 1, ссылка 2, сумма. Вторая таблица постоянно обновляется в зависимости от выделенных строк первой таблицы и содержит расшифровку данных строк в виде: ссылка 3, сумма.
Пока что решил задачу "в лоб". Все три таблицы являются реквизитами формы, при открытии формы в отдельной процедуре заполняются исходная таблица и первая таблица формы. При активизации строки первой таблицы на клиенте выполняется перезаполнение второй таблицы - через перебор всех строк исходной таблицы и сравнение с выделенными строками второй таблицы. При этом крутится цикл 1000 * количество выделенных строк * 2 (количество условий сравнения), и при выделении нескольких строк уже ощутимо подтормаживает. Поэтому ищу лучшее решение.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. iskdv 14.06.17 09:56 Сейчас в теме
(1) 1.выгрузить данные запроса в табличную часть обработки(отчета);
2.свернуть данные для "ТабличнаяЧасть1" -- элемент формы;
3.поместить данные в "ТабличнаяЧасть1" и создать Колонки;
4.поместить на форму "ТабличнаяЧасть2" и связать с табличной частью обработки;
5.написать обработчик "ПриАктивизацииСтроки" для ТабличнаяЧасть1 в которой програмно прописать настройку свойства Отбор для "ТабличнаяЧасть2" элемента формы.
7. RustRR 14.06.17 10:29 Сейчас в теме
(6) Думаю, так стоит попробовать.
8. RustRR 14.06.17 10:50 Сейчас в теме
(6) Проблема, в отборе не получается задать условие ИЛИ для случая если выделены две строки.
2. Amadeuc404 54 14.06.17 09:23 Сейчас в теме
Запрос выгружай в дерево значений с группировкой.
4. RustRR 14.06.17 09:36 Сейчас в теме
(2) А как реализовать вывод расшифровки двух выделенных строк в одну таблицу?

(3) Пока что у меня нет динамического списка. Если основной запрос выводить в динамический список, боюсь, работать будет гораздо медленнее, он относительно тяжелый.
3. spe1c 6 14.06.17 09:26 Сейчас в теме
Во второй таблице (где расшифровка) просто меняй параметры отбора динамического списка, не перезаполняй с нуля.
5. v3rter 14.06.17 09:39 Сейчас в теме
Может Вам скопировать результаты запроса в две таблицы значений, первую свернуть а затем поступить как в (2) ?
9. iskdv 14.06.17 10:52 Сейчас в теме
гы... а если на это использовать "ВидСравнения.ВСписке" на ключевое поле?
10. RustRR 14.06.17 11:04 Сейчас в теме
Не получится. У таблицы формы отбор задается в свойстве ОтборСтрок, описание СП:

Тип: Неопределено; ФиксированнаяСтруктура.
Позволяет установить отбор по значению колонки.
В качестве ключа используется имя реквизита табличной части, а в качестве значения - значение, по которому осуществляется отбор.
Чтобы снять отбор нужно присвоить свойству либо значение Неопределено, либо пустую ФиксированнаяСтруктура.
11. SCaesar 14.06.17 11:14 Сейчас в теме
Большие таблицы проще реализовать через обычные формы (включить возможность использования обычных форм).
12. ditp 94 14.06.17 11:27 Сейчас в теме
Добавить в общую таблицу колонку "Флаг" типа булево, установить отбор строк по нему.

При активизации строки свернутой таблицы делаем что-то типа
соотв = Новый соответствие;
Для каждого стр из ВыделенныеСтроки цикл
  Если соотв[стр.Ссылка1] = неопределено тогда соотв[стр.Ссылка1] = новый соответствие конецЕсли;
   соотв[стр.Ссылка1] [стр.Ссылка2] = истина
КонецЦикла;
Для каждого стр из ОбщаяТаблица Цикл
  стр.Флаг = соотв[стр.Ссылка1] [стр.Ссылка2] = истина
КонецЦикла;
Показать
13. ditp 94 14.06.17 11:28 Сейчас в теме
Итого вместо
1000 * количество выделенных строк * 2 (количество условий сравнения)
получаем
1000 + количество выделенных строк
16. RustRR 14.06.17 12:02 Сейчас в теме
(13) В этом варианте есть несколько скрытых циклов (при поиске соответствия, при работе отбора), так что сравнивать количество напрямую не совсем корректно.
(14) Вот это можно попробовать.
14. ditp 94 14.06.17 11:30 Сейчас в теме
ну или сводную таблицу держать в дереве, а в нижнюю просто копировать нижние уровни строк из выделенных.
15. iskdv 14.06.17 11:34 Сейчас в теме
есть еще вариант -- нижняя таблица детализации перезаполняется через массив -- полученный методом НайтиСтроки от верхней таблицы управления. т.е. организовать поиск со сохранением результата в масссив.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот