Форум программистов, компьютерный форум, киберфорум
1С: Типовые и стандартные решения
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 04.05.2014
Сообщений: 28
1

Оптимизация запроса 1С

01.07.2014, 00:40. Показов 775. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Очень медленно работает запрос. Можно ли его как-то оптимизировать?

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
ЗапросПоТоварам.Текст = "
    |ВЫБРАТЬ
    |   Истина                                                КАК Пометка,
    |   Ложь                                                  КАК МеткаОстаткиПоСкладу,
    |   3                                                     КАК ПриоритетПоСкладам,
    |   ВнутреннийЗапрос.Номенклатура.Код                     КАК Код,
    |   ВнутреннийЗапрос.Номенклатура.Артикул                 КАК Артикул,
    |   ВнутреннийЗапрос.Номенклатура                         КАК Номенклатура,
    |   ВнутреннийЗапрос.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
    |   ВнутреннийЗапрос.ХарактеристикаНоменклатуры           КАК ХарактеристикаНоменклатуры,
    |   ВнутреннийЗапрос.ЗаказПокупателя                      КАК ЗаказПокупателя,
    |   ВнутреннийЗапрос.ЗаказПокупателя.Склад            КАК Склад,
    |   СУММА(ВнутреннийЗапрос.Запланировано)                 КАК Запланировано,"
    + ?(мЧастичноеЗаполнение, "                               
    |   ВЫБОР КОГДА СУММА(ВнутреннийЗапрос.Заполнено) ЕСТЬ NULL ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК ФлагЗаполнено,
    |   СУММА(ВнутреннийЗапрос.Заполнено)                     КАК Заполнено,
    |   СУММА(ВнутреннийЗапрос.ЗаполненоИзРезерва)            КАК ЗаполненоИзРезерва,", "
    |   0                                                     КАК ФлагЗаполнено,
    |   0                                                     КАК Заполнено,
    |   0                                                     КАК ЗаполненоИзРезерва,") + "
    |   СУММА(ВнутреннийЗапрос.ОсталосьОтгрузить)             КАК ОсталосьОтгрузить,
    |   СУММА(ОстаткиРезерв.КоличествоОстаток)                КАК РезервПоЗаказу," 
    + ?(ПревышатьОстаткиОрганизации, "
    |   0                                                     КАК ОстатокПоОрганизации,", "
    |   СУММА(ОстаткиОрганизаций.КоличествоОстаток)           КАК ОстатокПоОрганизации,") + "
    |   СУММА(ОстаткиНаСкладе.КоличествоОстаток)              КАК СвободныйОстаток,
    |   0                                                     КАК МожноОтгрузить,
    |   0                                                     КАК ДобавитьВДокумент
    |ИЗ
    |   (
    |   ВЫБРАТЬ
    |       ОстаткиЗаказ.ЗаказПокупателя            КАК ЗаказПокупателя,
    |       ОстаткиЗаказ.Номенклатура               КАК Номенклатура,
    |       ОстаткиЗаказ.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |       МАКСИМУМ(ОстаткиЗаказ.КоличествоКонечныйОстаток)КАК ОсталосьОтгрузить,"
    + ?(мЧастичноеЗаполнение, "                               
    |       СУММА("+ТекстКоличествоРеализация+") КАК Заполнено,
    |       СУММА(ВЫБОР КОГДА ДокументРеализация.СпособСписанияОстаткаТоваров=ЗНАЧЕНИЕ(Перечисление.СпособыСписанияОстаткаТоваров.ИзРезерва) ТОГДА "+ТекстКоличествоРеализация+" ИНАЧЕ 0 КОНЕЦ) КАК ЗаполненоИзРезерва,", "") + "
    |       МАКСИМУМ(ОстаткиЗаказ.КоличествоПриход) КАК Запланировано
    |   ИЗ
    |       РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(,&ДатаОстатков,,, ДоговорКонтрагента = &ДоговорКонтрагента 
    |                                                     И ЗаказПокупателя В (&СписокЗаказов)
    |                                                     И СтатусПартии <> &СтатусТары
    |                                                     И Номенклатура.Услуга <> Истина) КАК ОстаткиЗаказ
    |
    |" + ?(мЧастичноеЗаполнение, "
    |ЛЕВОЕ СОЕДИНЕНИЕ // заполнено
    |   Документ.РеализацияТоваровУслуг.Товары КАК ДокументРеализация
    |ПО
    |   ДокументРеализация.Ссылка      = &ДокументСсылка
    |   И ОстаткиЗаказ.ЗаказПокупателя = ДокументРеализация.ЗаказПокупателя
    |   И ОстаткиЗаказ.Номенклатура    = ДокументРеализация.Номенклатура
    |   И ОстаткиЗаказ.ХарактеристикаНоменклатуры = ДокументРеализация.ХарактеристикаНоменклатуры", "") + "
    |
    |   СГРУППИРОВАТЬ ПО
    |       ОстаткиЗаказ.ЗаказПокупателя,
    |       ОстаткиЗаказ.Номенклатура,
    |       ОстаткиЗаказ.ХарактеристикаНоменклатуры
    |
    |   ) КАК ВнутреннийЗапрос
    |
    |ЛЕВОЕ СОЕДИНЕНИЕ // резервы
    |   РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаОстатков, ДокументРезерва В (&СписокЗаказов) "+?(НЕ мУказаниеСкладовВТЧ, " И Склад = &Склад","") +") КАК ОстаткиРезерв
    |ПО
    |   ВнутреннийЗапрос.ЗаказПокупателя              = ОстаткиРезерв.ДокументРезерва
    |   И ВнутреннийЗапрос.Номенклатура                 = ОстаткиРезерв.Номенклатура
    |   И ВнутреннийЗапрос.ХарактеристикаНоменклатуры = ОстаткиРезерв.ХарактеристикаНоменклатуры
    |"
    + ?(НЕ ПревышатьОстаткиОрганизации, "
    |ЛЕВОЕ СОЕДИНЕНИЕ // остатки организаций
    |   РегистрНакопления.ТоварыОрганизаций.Остатки(&ДатаОстатков, Организация = &Организация) КАК ОстаткиОрганизаций
    |ПО
    |   ВнутреннийЗапрос.Номенклатура                 = ОстаткиОрганизаций.Номенклатура
    |   И ВнутреннийЗапрос.ХарактеристикаНоменклатуры = ОстаткиОрганизаций.ХарактеристикаНоменклатуры", "") + "
    |
    |ЛЕВОЕ СОЕДИНЕНИЕ // реальные товары на складе за вычетом резервов и товаров к передаче
    |   (
    |   ВЫБРАТЬ
    |       ОстаткиНаСкладе.Номенклатура,
    |       ОстаткиНаСкладе.ХарактеристикаНоменклатуры,
    |       ОстаткиНаСкладе.КоличествоОстаток
    |       - ВЫБОР КОГДА ОстаткиВРезерве.КоличествоОстаток ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ОстаткиВРезерве.КоличествоОстаток КОНЕЦ
    |       - ВЫБОР КОГДА ОстаткиКПередаче.КоличествоОстаток ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ОстаткиКПередаче.КоличествоОстаток КОНЕЦ КАК КоличествоОстаток
    |
    |   ИЗ  "+ПодзапросОстатки+"
    |
    |   ЛЕВОЕ СОЕДИНЕНИЕ
    |       РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаОстатков," + УсловиеСклад + ") КАК ОстаткиВРезерве
    |   ПО
    |       ОстаткиНаСкладе.Номенклатура                 = ОстаткиВРезерве.Номенклатура
    |       И ОстаткиНаСкладе.ХарактеристикаНоменклатуры = ОстаткиВРезерве.ХарактеристикаНоменклатуры
    |
    |   ЛЕВОЕ СОЕДИНЕНИЕ
    |       РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&ДатаОстатков," + УсловиеСклад + ") КАК ОстаткиКПередаче
    |   ПО
    |       ОстаткиНаСкладе.Номенклатура                 = ОстаткиКПередаче.Номенклатура
    |       И ОстаткиНаСкладе.ХарактеристикаНоменклатуры = ОстаткиКПередаче.ХарактеристикаНоменклатуры
    |
    |   ) КАК ОстаткиНаСкладе
    |ПО
    |   ВнутреннийЗапрос.Номенклатура                 = ОстаткиНаСкладе.Номенклатура
    |   И ВнутреннийЗапрос.ХарактеристикаНоменклатуры = ОстаткиНаСкладе.ХарактеристикаНоменклатуры
    |ГДЕ
    |   Запланировано > 0
    |   И ОсталосьОтгрузить >= 0
    |
    |   СГРУППИРОВАТЬ ПО
    |   ВнутреннийЗапрос.ЗаказПокупателя,
    |   ВнутреннийЗапрос.ЗаказПокупателя.Склад,
    |   ВнутреннийЗапрос.Номенклатура,
    |   ВнутреннийЗапрос.ХарактеристикаНоменклатуры
    |";
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2014, 00:40
Ответы с готовыми решениями:

Оптимизация запроса
Делаю запрос в скд, в котором на каждую дату документа берутся цены. Данные получаются верные , но...

Оптимизация запроса
Доброе утро. Меня постигла небесная кара, а именно отдали чужой запрос на оптимизацию. Такого...

Оптимизация запроса
Есть задача определить движение номенклатуры по счетам, т.е. с какого дебета на какой кредит ушла...

8.2 Оптимизация запроса ?
Есть справочник с интересующими записями: Родитель, ДатаНачало и ДатаОкончание и Включен(булеан)....

4
Модератор
Эксперт 1С
3786 / 2965 / 590
Регистрация: 10.03.2011
Сообщений: 11,670
Записей в блоге: 1
01.07.2014, 04:05 2
Убрать вложенные запрос - ну не умеет оптимизатор с ними работать
1
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
01.07.2014, 11:30 3
пошагово надо.
ПодзапросОстатки - для начала загнать во временную таблицу и посмотреть, что будет.
Собственно, что Dethmontt и посоветовал.
1
2 / 2 / 0
Регистрация: 04.05.2014
Сообщений: 28
08.07.2014, 00:56  [ТС] 4
Спасибо за ответы. Использую временные таблицы, не помогает, время выполнения запроса 17с.
В конфигурации "Управление торговлей для Беларуси 2.0" быстро работает, а в "Управление торговлей для Беларуси 1.0" медленно. В чем может быть причина?
0
Модератор
Эксперт 1С
3786 / 2965 / 590
Регистрация: 10.03.2011
Сообщений: 11,670
Записей в блоге: 1
08.07.2014, 01:01 5
Смотри что бы поля по которым соединяешь попадали в индекс
Если в индекс попадать не будешь получишь scantable

Добавлено через 30 секунд
З.ы. ну и собственно где сам запрос?
0
08.07.2014, 01:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2014, 01:01
Помогаю со студенческими работами здесь

Оптимизация запроса
1С 8.2, конфигурация написана полностью с нуля. Есть запрос, который заполняет таблицу отчета по ДЗ...

Оптимизация запроса
1С 7.7(27), Бухгалтерия(514), MS SQL 2008 (Express) При обработке документа &quot;Начисление...

Оптимизация скорости выполнения запроса
имею запрос :) вернее он имеет меня:) цикл в цикле получился ВЫБРАТЬ...

Оптимизация запроса.не совсем понимаю каг?! =-O
Дамы и господа! Сам являюсь человеком несведущим в 1с программировании. Но очень хочу этому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru