Имя: Пароль:
1C
1С v8
Как оптимизировать такой запрос ?
0 SherifSP
 
24.10.13
13:36
Запрос выполняется в форме списка, процедурой "ПриПолученииДанных", и форма при перемещении между строками подлагивает, как будто там 500 fps, посоветуйте что нибудь?)

СписокДокументов = Новый СписокЗначений;
    Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
        ДанныеСтроки = ОформлениеСтроки.ДанныеСтроки;
        Документ = ДанныеСтроки.Ссылка;
        СписокДокументов.Добавить(Документ);
    КонецЦикла;

Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    АнулированныеДокументы.ВозвратнаяНакладная
    |ИЗ
    |    РегистрСведений.АнулированныеДокументы КАК АнулированныеДокументы
    |ГДЕ
    |    АнулированныеДокументы.ВозвратнаяНакладная В(&СписокДокументов)";
    Запрос.УстановитьПараметр("СписокДокументов", СписокДокументов);
    АнулированныеДокументы = Запрос.Выполнить().Выгрузить();
1 SherifSP
 
24.10.13
13:40
Ап
2 Maxus43
 
24.10.13
13:42
сколько доков в СписокДокументов?
4 SherifSP
 
24.10.13
13:42
+(0) РС непериодический, подчинен регистратору
5 GROOVY
 
24.10.13
13:42
Не надо запросы писать в ПриПолученииДанных. Юзай динамический список.
6 ДенисЧ
 
24.10.13
13:43
(5) в неуправляемой форме? ;-)
7 SherifSP
 
24.10.13
13:43
(2) 30
8 SherifSP
 
24.10.13
13:44
(6) Да обычная, платформа 8.1
9 GROOVY
 
24.10.13
13:44
(6) Можно форму сделать управляемой. Управляемые формы можно использовать в обычном приложении.
10 Maxus43
 
24.10.13
13:44
(7) есть несколько приёмов, например создать ТЗ при открытии с уже нужными данными, и там искать что надо
11 GROOVY
 
24.10.13
13:45
(8) Есть повод перейти на 8.2 :)
12 zak555
 
24.10.13
13:45
(6) какие проблемы ?
13 SherifSP
 
24.10.13
13:45
Но самое интересное, что запрос выполняется 3 раза. Первый раз 1 документ, второй 28 доков, третий 1 док
14 SherifSP
 
24.10.13
13:46
+(13) При открытии формы
15 wraithik
 
24.10.13
13:46
(0)
для чего оптимизировать? где тормозит?
16 zak555
 
24.10.13
13:47
(13) перевод на 8.2 и сделай форму управляемой и запихни в неё динамический список
17 wraithik
 
24.10.13
13:47
(10)
лучше тогда эту таблицу наполнять из "ПриПолученииДанных".
18 SherifSP
 
24.10.13
13:48
(10) Быстрее будит считать все данные без отбора, или 28 доков? Но при перемещении курсора однозначно быстрее, но при открытии дольше будит
19 Sabbath
 
24.10.13
13:49
(0) делай как в (10)  или наподобие
20 SherifSP
 
24.10.13
13:49
(18) Между строками
21 SherifSP
 
24.10.13
13:49
(19) сейчас попробую спасибо за совет
22 МойКодУныл
 
24.10.13
13:49
сколько типов у АнулированныеДокументы.ВозвратнаяНакладная? если не один - приведи тип, Сделай выразить. Можно еще поэкперементировать со временной таблицей и соединением вместо В. Но это так.
23 vhl
 
24.10.13
13:50
(0) Индекс в регистре по "ВозвратнаяНакладная" стоит?
24 vhl
 
24.10.13
13:51
(10) И получить недостоверную информацию при ее изменении.
25 Sabbath
 
24.10.13
13:51
(0) и что ты потом делаешь с этим АнулированныеДокументы  ?
26 SherifSP
 
24.10.13
13:52
(22) Только один тип "ВозвратТоваровОтПокупателя"
27 SherifSP
 
24.10.13
13:53
(23) Да
28 vhl
 
24.10.13
13:53
(25) Он потом в цикле делает "Ячейка.УстановитьТекст(ВозвратнаяНакладная
.Номер)" :)
29 SherifSP
 
24.10.13
13:59
(24) В форму добавить реквизит с типом булево и в процедуре ПриИзменении если документ изменялся или добавлялся новый, присваивать реквизиту истину а в процедуре ПриПолученииДанных проверять на этот реквизит, если Истина, значит выполняю запрос и реквизиту присваиваю ложь)
30 H A D G E H O G s
 
24.10.13
14:05
(29) Поток сознания

(0) Это не может тормозить, ты врешь.
31 H A D G E H O G s
 
24.10.13
14:06
(0) Стоп, это ты был со сканером ШК?
32 vhl
 
24.10.13
14:11
(26) Хороший вопрос
(29) Плохой совет
33 SherifSP
 
24.10.13
14:13
(31) Где?)
34 SherifSP
 
24.10.13
14:44
(31) Да, я)
35 vhl
 
24.10.13
14:51
(33) Обознался :)
36 mrDSide
 
24.10.13
14:58
(0) РегистрыСведений.АнулированныеДокументы.СоздатьКлючЗаписи()

ИЛИ

РегистрыСведений.АнулированныеДокументы.СоздатьМенеджерЗаписи()

ИЛИ

РегистрыСведений.АнулированныеДокументы.СоздатьНаборЗаписей() и загрузить твои.... расшифруй задачу
37 kosts
 
24.10.13
15:02
-Можно хотя бы на несколько минуть закэшировать полученные данные, что бы лишний раз не дергать сервер.

-Еще можно проверить не тормозит ли выгрузка в ТЗ.

-И не дергается ли сервер при получении данных документа. Отсюда не понятно как ты затем используешь полученные данные...

-Можно специальный отдельный регистр сделать.
38 kiruha
 
24.10.13
15:09
(0)
Повесь индекс в рег сведений на ВозвратнаяНакладная
и будет тебе счастье

Офигеть
39 viktor_vv
 
24.10.13
15:25
(38) См (23) и (27).
Мне правда удивительно почему-таки тормозит такой простой запрос.
Имхается тормозит совсем не запрос.
40 SherifSP
 
24.10.13
15:30
Еще такой вопрос
41 SherifSP
 
24.10.13
15:31
Вчера было норм, а сегодня документ реализация товаров услуг  с 18 позициями в тч, проводится по 30 секунд и пишет блокировка транзакции, как лечить?
42 kiruha
 
24.10.13
15:31
(39)
Спасибо, не заметил по диагонали.
У меня есть похожий код в при получении данных - никаких тормозов.
Их не может быть так возврат по индексу милли сек
43 SherifSP
 
24.10.13
15:31
+(41) Итоги все пересчитаны
44 kiruha
 
24.10.13
15:32
(41)
Похоже у тебя проблема с базой а не с запросом.
Только людей с толку сбиваешь
45 SherifSP
 
24.10.13
15:41
(44) Блокировка идет от одного пользователя всегда, он всех блокирует
46 viktor_vv
 
24.10.13
15:44
(45) Пользователь по сети ? Скуль или файловая ?
47 viktor_vv
 
24.10.13
15:45
(46)+ Зайти под этим пользователем с другого компа, тоже самое ?
48 Ненавижу 1С
 
гуру
24.10.13
15:49
(9) ага, делал, тупить стало даже сильнее, правда там и запрос сложнее был
49 kiruha
 
24.10.13
15:52
(45)
Проблема может быть в сети.
Попробуй (47)
50 brznzglwgn
 
24.10.13
16:00
Сделай кеш таблицу, один раз получаешь, дальше в ней ищешь. Взлетит.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший