Имя: Пароль:
1C
1С v8
Производительность динамического списка
0 ildary
 
03.11.17
10:23
Уважаемые специалисты, подскажите пожалуйста, можно ли ускорить открытие следующей формы:

УТ11, внешняя форма с динамическим списком документов, а под этим списком - второй, который выводит товары текущего документа из первого, вот так:
ГДЕ
    ЗаказКлиентаТовары.Ссылка = &ТекЗаказ

Проблема в том, что при появлении второго списка форма стала открываться значительно медленнее, хотя по умолчанию видимость второго списка отключена (включается галкой на форме).

Можно ли как-нибудь ускорить открытие формы? При открытии в параметр второго списка передается пустая ссылка.
1 Мыш
 
03.11.17
10:29
(0) Видим, не видим - а посчитать надо.
2 DrShad
 
03.11.17
10:30
а зачем товары берутся из документа? почему не из регистров?
3 ildary
 
03.11.17
10:33
(1) вот я и спрашиваю - а есть ли способ научить второй дин. список не считать, пока его не попросят?

(2) Чтобы видеть и менять вариант обеспечения (резерв, отгрузить) не заходя в документ. Я новичок и был не уверен, что брать эту информацию из регистра будет быстрее.
4 DrShad
 
03.11.17
10:35
(3) в разы

а вообще брось эту затею, там на форме очень много меняется из-за обеспечения - ты все не пропишешь
5 sanja26
 
03.11.17
10:37
(2) к тому что быстрый просмотр тч документа, например. Если данные туда уже собраны при создании документа, незачем их заново собирать.
6 lodger
 
03.11.17
10:41
(5) это заказ. какое такое "собраны при создании документа"? я бы понял, если бы ты предложил не показывать результаты какого-то расчета по остаткам из нескольких таблиц с условиями.
но это заказ. в 99% случаев он просто натыкан из подбора.
почему общаться с виртуальной таблицей оборотов лучше чем с реальной таблицей ТЧ документов - учите матчасть.
7 ildary
 
03.11.17
10:41
(4) мне не нужна форма документа заказа клиента (медленная), я хочу в форме списка быстро показать товары и их вариант обеспечения. Вот запрос второго дин. списка:

ВЫБРАТЬ
    ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
    ЗаказКлиентаТовары.Количество КАК Количество,
    ЗаказКлиентаТовары.ВариантОбеспечения КАК ВариантОбеспечения
ИЗ
    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
ГДЕ
    ЗаказКлиентаТовары.Ссылка = &ТекЗаказ
8 ildary
 
03.11.17
10:43
(6) Скажите пожалуйста, в каком регистре мне лучше брать нужную мне информацию? ЗаказыКлиентов?
9 sanja26
 
03.11.17
10:47
(6) заказ, не заказ. К примеру там могут быть заданы определенные счета учёта или статьи затрат, склад списания на момент создания, какая-то ещё отметка по строке.
10 DrShad
 
03.11.17
10:48
(8) лучше из регистра ОбеспечениеЗаказов
11 DrShad
 
03.11.17
10:49
(9) в УТ 11!? не смешите мои тапочки
12 ildary
 
03.11.17
10:50
(10) Большое спасибо за пинок в нужном направлении.
13 DrShad
 
03.11.17
10:51
(12) не за что
14 toypaul
 
гуру
03.11.17
12:48
(6) "почему общаться с виртуальной таблицей оборотов лучше чем с реальной таблицей ТЧ" ну и почему же?
15 toypaul
 
гуру
03.11.17
12:49
"При открытии в параметр второго списка передается пустая ссылка." надо не при открытии, а при создании устанавливать видимость и параметр.

Можно обнулять текст запроса
16 ildary
 
03.11.17
13:07
(15) я ошибся - речь шла о ПриСозданииНаСервере. За идею обнулять текст запроса - большое спасибо! Я сам не додумался.
17 youalex
 
03.11.17
13:17
(0) а зачем второй дин. список? Сделай таблицу формы, и заливай в нее данные ТЧ  ПриАктивизацииСтроки
18 ildary
 
03.11.17
13:23
(17) просто вывести товары - это базовая функциональность второго списка. Далее я хочу выводить только неотгруженные товары (вычитая все товары, которые в подчиненых реализациях), а также товары только в резерве или только на отгрузку. Вдобавок открытие формы заказа - тормозная вещь (У11 лежит на медленном железе, еще и в виртуалке).
19 DmitrO
 
03.11.17
13:30
(18)А еще такие вещи лучше снабжать развязкой через таймер.
в ПриАктивизацииСтроки запускать таймер:
ПодключитьОбработчикОжидания("ОбновитьВторойСписок", 0.1, Истина);
А в клиентской процедуре ОбновитьВторойСписок уже вызывать серверную, где по текущей строке первого обновлять второй список.
Если пользователь придавит стрелку клавиатуры в первом списке и будет бежать по нему (автоповтор), обновление второго списка произойдет только когда он отпустит клавишу.
20 ildary
 
03.11.17
14:56
(19) большое спасибо за науку, пользуясь случаем хочу поблагодарить как контрибутора семерочных расширений типа 1C++.
21 FIXXXL
 
03.11.17
15:32
(7) сделай кнопку и отдельную форму показа состава
лепить дин.список по товарам - гиблая затея и тормоза
22 ildary
 
03.11.17
15:34
(21) на самом деле работает достаточно шустро (по сравнению с открытием формы заказа), тормоз добавился только при открытии.
23 vde69
 
модератор
03.11.17
15:36
зайду с другой стороны

ЗаказКлиентаТовары.Ссылка  - составной тип?
24 ildary
 
03.11.17
15:39
(23) ЗаказКлиентаТовары - это ТЧ Товары у документа Заказы. А ссылка - это сам документ ЗаказКлиента и он не составной.
25 FIXXXL
 
03.11.17
15:40
(22) завтра еще свистоперделки придумают и превратится список в тормозное Г
делай сразу нормально :)
26 ildary
 
03.11.17
15:48
(25) я подумаю над отдельной формой.
27 ptiz
 
03.11.17
16:20
(3) "есть ли способ научить второй дин. список не считать, пока его не попросят?" - а программно разве нельзя управлять источником данных дин.списка?
28 ildary
 
03.11.17
16:35
(27) кстати, а что там лучше сделать? Я попробовал обнулить текст запроса - получил ошибку.
29 ptiz
 
03.11.17
16:48
(28) Значит, другие свойства тоже надо менять.
30 FIXXXL
 
07.11.17
11:21
(28) выбрать 1 как 1 подставь :)
31 ildary
 
07.11.17
11:23
(30) как все просто, спасибо за совет, я не догадался...
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.