Имя: Пароль:
1C
1С v8
оптимизация выбора характеристик контрагентов
,
0 PetrVV
 
12.12.11
17:15
Добрый вечер !

При заведении документа "Заказ покупателя" в нетиповой УПП 1.3.17.1 необходимо выбирать характеристику контрагента. Механизм характеристик контрагентов полностью аналогичен механизму характеристик номенлатуры. Сейчас и характеристик контрагентов очень много и регистр сведений "ЗначенияСвойствОбъектов" огромный, потому запрос на получение характеристик контрагентов выполняется долго, порядка 30-40 секунд. А когда строк в ТЧ много и в каждой необходимо выполнять выбор характеристики, то время создания документа возврастает в разы, что неудобно и нервирует пользователей.

Вот запрос:

Запрос.Текст = "ВЫБРАТЬ
                  |    ХарактеристикиКонтрагентов.Активная,
                  |    ХарактеристикиКонтрагентов.Ссылка КАК Характеристика,
                  |    ХарактеристикиКонтрагентов.ПометкаУдаления КАК ПометкаУдаления,
                  |    ЗначенияСвойствОбъектов.Свойство,
                  |    ЗначенияСвойствОбъектов.Значение
                  |ИЗ
                  |    Справочник.ХарактеристикиКонтрагентов КАК ХарактеристикиКонтрагентов
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                  |        ПО ЗначенияСвойствОбъектов.Объект = ХарактеристикиКонтрагентов.Ссылка
                  |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
                  |            ХарактеристикиКонтрагентов.Ссылка КАК Ссылка
                  |        ИЗ
                  |            Справочник.ХарактеристикиКонтрагентов КАК ХарактеристикиКонтрагентов
                  |            " + ОграничениеПоСвойствамИЗначениям + "
                  |        ГДЕ
                  |            ХарактеристикиКонтрагентов.Владелец = &ВладелецХарактеристики
                  |            " + ОграничениеПоСвойствамИЗначениямНаСодержание + "
                  |            ) КАК ОграничениеХарактеристик
                  |        ПО ОграничениеХарактеристик.Ссылка = ХарактеристикиКонтрагентов.Ссылка
                  |            " + ОграничениеПоАктивностиХарактеристик + "
                  |ИТОГИ ПО
                  |    Характеристика";

Вся сложность в больших размеров регистра "ЗначенияСвойствОбъектов", потому так долго он формируется.

У меня есть идея: запрос формируется с отбором по параметру владельцу, а владельцем является контрагент из шапки документа. Я думаю, если один раз сформировать выборку, а потом её использоваться в заполнении формы выбора характеристик.

Но вот только где хранить эту выбору, чтобы её подставлять, когда будут вводится последующие строки ТЧ ? Как вообще оптимальнее сработать в данном случае ?
1 Axel2009
 
12.12.11
17:18
большие размеры - сколько? и сколько записей возвращается с сервера? и где фильтр по ограничению строк?
2 Defender aka LINN
 
12.12.11
17:27
А для нахрена при проведении документа опираться на свойства? Если данные нужны, то и добавили бы реквизитов в справочник.
3 Axel2009
 
12.12.11
17:29
(3) чтобы меньше уродовать типовую.. известный баян =)
4 PetrVV
 
12.12.11
17:29
в регистре сведений "ЗначенияСвойствОбъектов" записей = 497528

в справочнике "Характеристики контрагентов" записей = 72251 запись

При заполении ТЧ вызывается форма выбора расширенная справочника "Характеристика Контрагентов" и процедура заполнения этой формы выполняется на клиенте.
5 Axel2009
 
12.12.11
17:29
(4) запрос кривой (полный, который результирующий). 500тыс записей - НИАЧЕМ.
6 Defender aka LINN
 
12.12.11
17:29
(3) Та она и так, судя по всему, изуродована так, что на Селезнева не узнают :)
7 Axel2009
 
12.12.11
17:30
и что же это за характеристики 72251 штук?
8 PetrVV
 
12.12.11
17:31
Например, "-гордина ольга,91824420,Митяева Альбина Анатольевна,Сотрудник"
"52 200,12 320,Flexible ticket,57810,dmo,11-01-2011,назарьев_александр,57810,нет" - туристическая компания.
9 PetrVV
 
12.12.11
17:32
Вот полный запрос:
ВЫБРАТЬ
   ХарактеристикиКонтрагентов.Активная,
   ХарактеристикиКонтрагентов.Ссылка КАК Характеристика,
   ХарактеристикиКонтрагентов.ПометкаУдаления КАК ПометкаУдаления,
   ЗначенияСвойствОбъектов.Свойство,
   ЗначенияСвойствОбъектов.Значение
ИЗ
   Справочник.ХарактеристикиКонтрагентов КАК ХарактеристикиКонтрагентов
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
       ПО ЗначенияСвойствОбъектов.Объект = ХарактеристикиКонтрагентов.Ссылка
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
           ХарактеристикиКонтрагентов.Ссылка КАК Ссылка
       ИЗ
           Справочник.ХарактеристикиКонтрагентов КАК ХарактеристикиКонтрагентов
           
       ГДЕ
           ХарактеристикиКонтрагентов.Владелец = &ВладелецХарактеристики
           
           ) КАК ОграничениеХарактеристик
       ПО ОграничениеХарактеристик.Ссылка = ХарактеристикиКонтрагентов.Ссылка
            ГДЕ ХарактеристикиКонтрагентов.Активная
ИТОГИ ПО
   Характеристика
10 PetrVV
 
12.12.11
17:36
(5) Что такого кривого в запросе (9) ?
11 Axel2009
 
12.12.11
17:37
ВЫБРАТЬ
   ХарактеристикиКонтрагентов.Активная,
   ХарактеристикиКонтрагентов.Ссылка КАК Характеристика,
   ХарактеристикиКонтрагентов.ПометкаУдаления КАК ПометкаУдаления,
   ЗначенияСвойствОбъектов.Свойство,
   ЗначенияСвойствОбъектов.Значение
ИЗ
   Справочник.ХарактеристикиКонтрагентов КАК ХарактеристикиКонтрагентов
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
       ПО ЗначенияСвойствОбъектов.Объект = ХарактеристикиКонтрагентов.Ссылка
ИТОГИ ПО
   Характеристика

сколько выполняется?
12 PetrVV
 
13.12.11
17:42
Проблема решилась) Всем спасибо !
13 Axel2009
 
13.12.11
17:43
как?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший