Имя: Пароль:
1C
1C 7.7
v7: Получить Дату и номер документа Запросом.
, ,
0 Владимир1С
 
24.01.17
16:23
Здравствуйте.
Появилась необходимость получить Даты и Номера документов из регистров базы.

Оптимизировал текст, получение даты и номера внёс в запрос, и ...

-------------------- Запрос 1 - без оптимизации --------------------
   Запрос выполнялся 0 ч. 0 м. 1 с. (1 сек.)
   Таблица выводилась 0 ч. 0 м. 12 с. (12 сек.)
      Общая длительность 0 ч. 0 м. 13 с. (13 сек.)
-------------------- Запрос 2 - оптимизация справочников --------------------
   Запрос выполнялся 0 ч. 0 м. 1 с. (1 сек.)
   Таблица выводилась 0 ч. 0 м. 8 с. (8 сек.)
      Общая длительность 0 ч. 0 м. 9 с. (9 сек.)
-------------------- Запрос 3 - оптимизация справочников и документов --------------------
   Запрос выполнялся 0 ч. 0 м. 50 с. (50 сек.)
   Таблица выводилась 0 ч. 0 м. 1 с. (1 сек.)
      Общая длительность 0 ч. 0 м. 51 с. (51 сек.)

Это тест серверного варианта базы данных. Есть какое нибудь решение , кроме использования 1СPP?
1 Aleksey
 
24.01.17
16:26
Попробуй 25 строку закоментировать
2 Владимир1С
 
24.01.17
16:28
(1) Вопрос по существу, у кого нибудь получыалось использованием штатных методов избежать участи получить результат по третьему варианту?
3 Владимир1С
 
24.01.17
16:31
Без Оптимизации:
    ЗП=СоздатьОбъект("Запрос");
    ТЗ="Период с НачДата По КонДата;
    |Склад=Регистр.Прибыль.Склад;
    |Товар=Регистр.Прибыль.Товар;
    |Количество=Регистр.Прибыль.Количество;
    |
    |Группировка Склад Упорядочить по Склад.КодИБ;
    |Группировка Товар Без Групп Упорядочить по Товар.Код;
    |Группировка Документ;
    |
    |Функция Продано=Сумма(Количество);";

Оптимизация справочников:
    ЗП=СоздатьОбъект("Запрос");
    ТЗ="Период с НачДата По КонДата;
    |Склад=Регистр.Прибыль.Склад;
    |СкладКодИБ=Регистр.Прибыль.Склад.КодИБ;
    |СкладНаим=Регистр.Прибыль.Склад.Наименование;
    |Товар=Регистр.Прибыль.Товар;
    |ТоварКод=Регистр.Прибыль.Товар.Код;
    |ТоварНаим=Регистр.Прибыль.Товар.Наименование;
    |Количество=Регистр.Прибыль.Количество;
    |
    |Группировка Склад Упорядочить по Склад.КодИБ;
    |Группировка Товар Без Групп Упорядочить по Товар.Код;
    |Группировка Документ;
    |
    |Функция Продано=Сумма(Количество);";


И справочников и документов:

    ЗП=СоздатьОбъект("Запрос");
    ТЗ="Период с НачДата По КонДата;
    |Склад=Регистр.Прибыль.Склад;
    |СкладКодИБ=Регистр.Прибыль.Склад.КодИБ;
    |СкладНаим=Регистр.Прибыль.Склад.Наименование;
    |Товар=Регистр.Прибыль.Товар;
    |ТоварКод=Регистр.Прибыль.Товар.Код;
    |ТоварНаим=Регистр.Прибыль.Товар.Наименование;
    |Количество=Регистр.Прибыль.Количество;
    |ТекДок=Регистр.Прибыль.ТекущийДокумент;
    |ТекДокНомерДок=Регистр.Прибыль.ТекущийДокумент.ЗакрытиеСмены.НомерДок,
    |                Регистр.Прибыль.ТекущийДокумент.НакладнаяРасход.НомерДок,
    |                Регистр.Прибыль.ТекущийДокумент.ОтчетРеализатора.НомерДок,
    |                Регистр.Прибыль.ТекущийДокумент.Возврат.НомерДок,
    |                Регистр.Прибыль.ТекущийДокумент.ВозвратПоОтчетуРеализатора.НомерДок,
    |                Регистр.Прибыль.ТекущийДокумент.Сторно.НомерДок,
    |                Регистр.Прибыль.ТекущийДокумент.НакладнаяРасходРаспр.НомерДок;
    |ТекДокДатаДок=    Регистр.Прибыль.ТекущийДокумент.ЗакрытиеСмены.ДатаДок,
    |                Регистр.Прибыль.ТекущийДокумент.НакладнаяРасход.ДатаДок,
    |                Регистр.Прибыль.ТекущийДокумент.ОтчетРеализатора.ДатаДок,
    |                Регистр.Прибыль.ТекущийДокумент.Возврат.ДатаДок,
    |                Регистр.Прибыль.ТекущийДокумент.ВозвратПоОтчетуРеализатора.ДатаДок,
    |                Регистр.Прибыль.ТекущийДокумент.Сторно.ДатаДок,
    |                Регистр.Прибыль.ТекущийДокумент.НакладнаяРасходРаспр.ДатаДок;
    |
    |Группировка Склад Упорядочить по Склад.КодИБ;
    |Группировка Товар Без Групп Упорядочить по Товар.Код;
    |Группировка ТекДок;
    |
    |Функция Продано=Сумма(Количество);";
4 Ёпрст
 
24.01.17
16:31
(2) есть
5 Ёпрст
 
24.01.17
16:32
(3) выкинь упорядочивание к едрени фени из текста запроса
6 Владимир1С
 
24.01.17
16:32
(4) Если не секрет, какой?
7 Владимир1С
 
24.01.17
16:33
(5) последую совету, отпишусь.
8 Ёпрст
 
24.01.17
16:34
ну и 3-ий запрос, в топку, как и второй
9 Владимир1С
 
24.01.17
16:37
(8) я потому и задал вопрос, что не понимаю особо, какая логика внутри 7.7 ... можно чуть поподробнее?
10 Ёпрст
 
24.01.17
16:38
(9) открой профайлер, отлови запрос  - вот и вся логика.
11 Ёпрст
 
24.01.17
16:39
посмотри, что происходит, если втыкаешь упорядочивание или пишешь условия через точку.
12 Ёпрст
 
24.01.17
16:39
или, перечисляешь что либо через зпт как в 3-ем запросе.
13 МихаилМ
 
24.01.17
16:46
учтите, что для скл версии  быстрее данные получить запросом
(кроме бух компоненты) , а для дбф - выборкой.
14 Builder
 
24.01.17
16:52
Кто нибудь объясните зачем ТС в 3-м запросе ТекДокНомерДок и ТекДокДатаДок ????
15 Владимир1С
 
24.01.17
16:55
(14) этот вопрос ещё будет обсуждаться..

Результатик не обнадёжил:

-------------------- Запрос 1 - без оптимизации  БЕЗ УПОРЯДОЧИВАНИЯ  --------------------
   Запрос выполнялся 0 ч. 0 м. 4 с. (4 сек.)
   Таблица выводилась 0 ч. 0 м. 15 с. (15 сек.)
      Общая длительность 0 ч. 0 м. 19 с. (19 сек.)
-------------------- Запрос 2 - оптимизация справочников  БЕЗ УПОРЯДОЧИВАНИЯ  --------------------
   Запрос выполнялся 0 ч. 0 м. 5 с. (5 сек.)
   Таблица выводилась 0 ч. 0 м. 8 с. (8 сек.)
      Общая длительность 0 ч. 0 м. 13 с. (13 сек.)
-------------------- Запрос 3 - оптимизация справочников и документов БЕЗ УПОРЯДОЧИВАНИЯ --------------------
   Запрос выполнялся 0 ч. 0 м. 57 с. (57 сек.)
   Таблица выводилась 0 ч. 0 м. 3 с. (3 сек.)
      Общая длительность 0 ч. 1 м. 0 с. (60 сек.)
-------------------- Запрос 1 - без оптимизации --------------------
   Запрос выполнялся 0 ч. 0 м. 1 с. (1 сек.)
   Таблица выводилась 0 ч. 0 м. 12 с. (12 сек.)
      Общая длительность 0 ч. 0 м. 13 с. (13 сек.)
-------------------- Запрос 2 - оптимизация справочников --------------------
   Запрос выполнялся 0 ч. 0 м. 1 с. (1 сек.)
   Таблица выводилась 0 ч. 0 м. 7 с. (7 сек.)
      Общая длительность 0 ч. 0 м. 8 с. (8 сек.)
-------------------- Запрос 3 - оптимизация справочников и документов --------------------
   Запрос выполнялся 0 ч. 0 м. 51 с. (51 сек.)
   Таблица выводилась 0 ч. 0 м. 1 с. (1 сек.)
      Общая длительность 0 ч. 0 м. 52 с. (52 сек.)
16 Ёпрст
 
24.01.17
16:57
(15) как ты меряешь выполнение запроса то хоть ?
И зачем ЭТО всё вообще упало ?
Тем более, с такими полями
17 Builder
 
24.01.17
16:57
(15) Что, ТекДок.ДатаДок и ТекДок.НомерДок не работает уже?
18 Ёпрст
 
24.01.17
16:58
ну и выкинб слово оптимизация - там её никакой нет
19 Владимир1С
 
24.01.17
16:59
В запросе .текущийДокумент.НомерДок и .ДатаДок нет, не работают. Только через строку вида документа.
20 Ёпрст
 
24.01.17
17:00
(19) работают, зависит от версии ИБ (в скуле возвращает что-то одно из НомерДок/ДатаДок в ДБФ - наеборот)
21 Ёпрст
 
24.01.17
17:00
не помню ужо, ибо нафик оно не надо
22 Владимир1С
 
24.01.17
17:01
от 20 до 25 % дало прирост скорости только по справочникам, и то, учтя, что у меня переменные среды сеансча пользователя на РАМ диске в оперативке. мдя..
(18) Спасибо, запомню.
23 Ёпрст
 
24.01.17
17:01
+Зависит еще от флага быстрая обработка движений (или хотя бы галки на одном из измерений регистра в отборе движений/итогов)
24 Builder
 
24.01.17
17:03
(19) А зафига они в запросе то?
После запроса дату с номером не получить?
25 Владимир1С
 
24.01.17
17:08
Можно, однако был расчёт на скорость пакетного получения данных. Увы, всё понятно. :(
26 Builder
 
24.01.17
17:16
(25) А сразу озвучить цель можно было?
27 Ёпрст
 
24.01.17
17:33
(25) быстрее, чем прямым запросом не получить, и то, там надо тоже стремится попадать в индекс
28 Ёпрст
 
24.01.17
17:34
а тут, воткни галку в регистр - быстрая обработка движений, тогда у тя будет и номер и дата в запросе в чорном
29 Злопчинский
 
24.01.17
17:57
нафига в отчете который выполняетс 50 секунд детализация дпо прибылеобразующим документам...? смотреть кто накосячил?