Имя: Пароль:
1C
1С v8
При скролле в динамическом списке выбирается содержимое всех табличных частей?
0 vdeemer
 
27.05.21
11:34
Здравствуйте!
Посмотрел в профайлере запросы, которые 1С формирует при изменении активной строки табличного поля динамического списка и затуманился взор мой...
Преамбула: динамический список с основной таблицей Справочник.Номенклатура.
Амбула: При переходе на другую строки ДС по данным профайлера из базы выбирается содержимое всех табличных частей активного элемента справочника. Собственно, вопрос: с чем это связано и можно ли этого избежать?
Меня этого только что коснулось, а я ни сном ни духом...
1 ДенисЧ
 
27.05.21
11:35
А что в запросе написано?
2 vdeemer
 
27.05.21
11:38
(1)  
SELECT
T3._LineNo4342,
T3._Fld4343RRef,
0 AS SDBL_IDENTITY
FROM dbo._Reference61_VT4341 T3 WITH(REPEATABLEREAD)
WHERE T3._Reference61_IDRRef = P1
ORDER BY 3 ASC, T3._LineNo4342

Это один из запросов, табличная часть с одним реквизитом. Если реквизитов больше, выбираются все.
3 ДенисЧ
 
27.05.21
11:40
(2) В запросе динсписка. Зачем ты мне скуль суёшь?
4 vdeemer
 
27.05.21
11:46
(3) так речь шла о запросах скуля)

ВЫБРАТЬ
    СправочникНоменклатура.Ссылка КАК Ссылка,
    СправочникНоменклатура.Родитель КАК Родитель,
    СправочникНоменклатура.Родитель.Представление КАК ПредставлениеРодителя,
    СправочникНоменклатура.ЭтоГруппа КАК ЭтоГруппа,
    СправочникНоменклатура.Код КАК Код,
    СправочникНоменклатура.Наименование КАК Наименование
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
5 Fragster
 
гуру
27.05.21
11:47
а что в обработчике "при активизации строки"?
6 polosov
 
27.05.21
11:49
(5) Ну а там наверняка запуск однократного обработчика ожидания с выборкой данных текущего элемента, чтобы отобразить доп. данные.
7 vdeemer
 
27.05.21
11:50
(5) Есть серверный вызов с РеквизитФормыВЗначение, отдельно табличная часть не выбирается
8 Fragster
 
гуру
27.05.21
11:52
(7) если есть обращение через точку к реквизиту ссылки - то будет чтение всего объекта.
9 Fragster
 
гуру
27.05.21
11:52
сам ДС тут не причем.
10 vdeemer
 
27.05.21
11:53
(5) пардон, нет там такого (это ПриВыборе). Вот там что  (Аналоги - другой ДС, в нем ТЧ тоже не трогаются):

    Если Элементы.Список.ТекущиеДанные = Неопределено Тогда
        Возврат;
    КонецЕсли;
    ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Аналоги, "Ссылка", Элементы.Список.ТекущаяСтрока, Истина);
11 Fragster
 
гуру
27.05.21
11:53
вообще такие данные надо действительно делать в однократном обработчике ожидания, который запускается через 0.5 секунды. примерно так:
при активизации отменяем обработчик ожидания, запускаем новый. тогда при скролле стрелками он выполнится только после того, как скролл остановится
12 Fragster
 
гуру
27.05.21
11:54
(10) ну судя по всему у тебя устанавливается параметр другого динамического списка и он (этот другой список) логично обновляется
13 Fragster
 
гуру
27.05.21
11:55
а что в другом динамическом списке?
14 Fragster
 
гуру
27.05.21
11:55
и в другом динамическом списке тоже, наверное, навешены обработчики? которые вызываются при его обновлении
15 vdeemer
 
27.05.21
11:58
(11) Идея понятна, спасибо
(13) Аналогичный запрос, но с условием ГДЕ МОЙРЕКВИЗИТ=&ЗНАЧЕНИЕ И ССЫЛКА <> &ССЫЛКА
(14) Он вообще невидим + на нем обработчиков нет
16 Fragster
 
гуру
27.05.21
12:15
кстати, почему в (10) в отдном месте текущие данные, а в другом - текущая строка?
17 vdeemer
 
27.05.21
12:42
(16) передаю идентификатор строки, а не структуру данных
18 vdeemer
 
27.05.21
12:43
Ради интереса создам чистую конфигурацию с одним справочником и погляжу, ху из ху.
19 vdeemer
 
27.05.21
13:33
Создал пустую базу, в ней два справочника, в первом две табличных части. Динамический список на форме списка справочника, в трассировке при переходе по строкам ПУСТО. Так что поведение 1С корректно, где-то табличные части задеваются обработкой событий или еще чем, вопрос закрыт.