Имя: Пароль:
1C
1С v8
Недостаточно память и запрос
0 zippygrill
 
06.06.13
16:47
Всем известная ошибка "Недостаточно память" при выполнение вот такого запроса с периодичностью "Месяц" за целый год 2012(думаю если взять по "Дням" то 1с с ума сойдет:)). Что с ним сделать еще можно(это всего лишь маленкий кусок из большого запроса :))?

ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ВЫБОР
       КОГДА &ВариантОтчета = 0
           ТОГДА ПродажиОбороты.Номенклатура
       ИНАЧЕ "-"
   КОНЕЦ КАК Номенклатура,
   ВЫБОР
       КОГДА &ВариантОтчета = 0
           ТОГДА ВЫБОР
                   КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
                       ТОГДА "-"
                   ИНАЧЕ ПродажиОбороты.ДоговорКонтрагента
               КОНЕЦ
       ИНАЧЕ "-"
   КОНЕЦ КАК ДоговорКонтрагента,
   ВЫБОР
       КОГДА &ВариантОтчета = 0
           ТОГДА ВЫБОР
                   КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
                       ТОГДА _СвойстваCклада.Контрагент
                   ИНАЧЕ ПродажиОбороты.Контрагент
               КОНЕЦ
       ИНАЧЕ "-"
   КОНЕЦ КАК Контрагент,
   СУММА(ВЫБОР
           КОГДА &ВариантОтчета = 0
               ТОГДА ПродажиОбороты.КоличествоОборот
           ИНАЧЕ 0
       КОНЕЦ) КАК Количество,
   СУММА(ВЫБОР
           КОГДА &ВариантОтчета = 0
               ТОГДА ПродажиОбороты.СтоимостьОборот
           ИНАЧЕ 0
       КОНЕЦ) КАК Сумма,
   СРЕДНЕЕ(ВЫБОР
           КОГДА &ВариантОтчета = 0
               ТОГДА ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот / ПродажиОбороты.КоличествоОборот, 0)
           ИНАЧЕ 0
       КОНЕЦ) КАК Цена,
   СУММА(ВЫБОР
           КОГДА &ВариантОтчета = 0
               ТОГДА ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Объем * ПродажиОбороты.КоличествоОборот, 0)
           ИНАЧЕ 0
       КОНЕЦ) КАК Обьем,
   ВЫБОР
       КОГДА &ВариантОтчета = 0
           ТОГДА ВЫБОР
                   КОГДА &Периодичность = 0
                       ТОГДА ПродажиОбороты.ПериодДень
                   КОГДА &Периодичность = 1
                       ТОГДА ПродажиОбороты.ПериодНеделя
                   КОГДА &Периодичность = 2
                       ТОГДА ПродажиОбороты.ПериодМесяц
                   КОГДА &Периодичность = 3
                       ТОГДА ПродажиОбороты.ПериодКвартал
                   КОГДА &Периодичность = 4
                       ТОГДА ПродажиОбороты.ПериодГод
                   ИНАЧЕ "-"
               КОНЕЦ
       ИНАЧЕ "-"
   КОНЕЦ КАК Периодичность,
   ВЫБОР
       КОГДА &ВариантОтчета = 0
           ТОГДА ВЫБОР
                   КОГДА &Группировка = 0
                       ТОГДА ПродажиОбороты.Номенклатура
                   ИНАЧЕ ВЫБОР
                           КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
                               ТОГДА _СвойстваCклада.Контрагент
                           ИНАЧЕ ПродажиОбороты.Контрагент
                       КОНЕЦ
               КОНЕЦ
       ИНАЧЕ "-"
   КОНЕЦ КАК Группировка,
   ВЫБОР
       КОГДА &ВариантОтчета = 0
           ТОГДА ПродажиОбороты.Регистратор
       ИНАЧЕ "-"
   КОНЕЦ КАК Регистратор,
   СРЕДНЕЕ(ВЫБОР
           КОГДА &ВариантОтчета = 0
               ТОГДА ВЫБОР
                       КОГДА ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Объем * ПродажиОбороты.КоличествоОборот, 0) = 0
                           ТОГДА 0
                       ИНАЧЕ ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот, 0) / ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Объем * ПродажиОбороты.КоличествоОборот, 0)
                   КОНЕЦ
           ИНАЧЕ 0
       КОНЕЦ) КАК ЦенаЗаЛитр
ПОМЕСТИТЬ втФактическиеЗапланированныеПродажи
ИЗ
   РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений._СвойстваCклада КАК _СвойстваCклада
       ПО ПродажиОбороты.Регистратор.Склад = _СвойстваCклада.Склад
ГДЕ
   &ВариантОтчета = 0

СГРУППИРОВАТЬ ПО
   ВЫБОР
       КОГДА &ВариантОтчета = 0
           ТОГДА ПродажиОбороты.Номенклатура
       ИНАЧЕ "-"
   КОНЕЦ,
   ВЫБОР
       КОГДА &ВариантОтчета = 0
           ТОГДА ВЫБОР
                   КОГДА &Периодичность = 0
                       ТОГДА ПродажиОбороты.ПериодДень
                   КОГДА &Периодичность = 1
                       ТОГДА ПродажиОбороты.ПериодНеделя
                   КОГДА &Периодичность = 2
                       ТОГДА ПродажиОбороты.ПериодМесяц
                   КОГДА &Периодичность = 3
                       ТОГДА ПродажиОбороты.ПериодКвартал
                   КОГДА &Периодичность = 4
                       ТОГДА ПродажиОбороты.ПериодГод
                   ИНАЧЕ "-"
               КОНЕЦ
       ИНАЧЕ "-"
   КОНЕЦ,
   ВЫБОР
       КОГДА &ВариантОтчета = 0
           ТОГДА ПродажиОбороты.Регистратор
       ИНАЧЕ "-"
   КОНЕЦ,
   ВЫБОР
       КОГДА &ВариантОтчета = 0
           ТОГДА ВЫБОР
                   КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
                       ТОГДА _СвойстваCклада.Контрагент
                   ИНАЧЕ ПродажиОбороты.Контрагент
               КОНЕЦ
       ИНАЧЕ "-"
   КОНЕЦ,
   ВЫБОР
       КОГДА &ВариантОтчета = 0
           ТОГДА ВЫБОР
                   КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
                       ТОГДА "-"
                   ИНАЧЕ ПродажиОбороты.ДоговорКонтрагента
               КОНЕЦ
       ИНАЧЕ "-"
   КОНЕЦ,
   ВЫБОР
       КОГДА &ВариантОтчета = 0
           ТОГДА ВЫБОР
                   КОГДА &Группировка = 0
                       ТОГДА ПродажиОбороты.Номенклатура
                   ИНАЧЕ ВЫБОР
                           КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
                               ТОГДА _СвойстваCклада.Контрагент
                           ИНАЧЕ ПродажиОбороты.Контрагент
                       КОНЕЦ
               КОНЕЦ
       ИНАЧЕ "-"
   КОНЕЦ
1 ptiz
 
06.06.13
16:50
Продажи в разрезе товаров и документов - тут памяти никогда не хватит
2 zippygrill
 
06.06.13
16:53
вот зараза, только что сформировал и ошибка не проявилась :)
(1) все, писе* продажникам :)
3 Fragster
 
гуру
06.06.13
16:53
избавится от выборов
4 Fragster
 
гуру
06.06.13
16:53
ПродажиОбороты.Регистратор.Склад = _СвойстваCклада.Склад  мля...
5 zippygrill
 
06.06.13
16:54
(4) и оставить только в условие? что мля? нормально :)
6 zippygrill
 
06.06.13
16:57
(4) это соединение лишь для того чтобы получить контрагент склада из ОоРП :) можно конечно выкинуть нафиг и написать просто выбор когда это ОоРП тогда "Розничный контрагент" иначе ПродажиОбороты.КОнтрагент
7 Fragster
 
гуру
06.06.13
17:00
(6) а сколько регистраторов у регистра?
8 Fragster
 
гуру
06.06.13
17:01
на СКД запрос был бы в 5 раз меньше
9 ИсчадиеADO
 
06.06.13
17:13
(0) оно не то что по дням, а по регистраторам берется
10 zippygrill
 
06.06.13
17:14
(7) без отбора по регистратору и отчет на СКД(механизм произвольных отчетов в УПП)
11 zippygrill
 
06.06.13
17:14
(9) обьясни почему по регистратору?
12 ИсчадиеADO
 
06.06.13
17:17
(11) ПО ПродажиОбороты.Регистратор.Склад
13 ИсчадиеADO
 
06.06.13
17:18
а база какая? файловая?
14 zippygrill
 
06.06.13
17:20
(12)избавился от этого регистра сделал как написал в (6).
(13)файловая(не можем себе позволить файловую :))
15 zippygrill
 
06.06.13
17:20
*база серверная ))
16 zippygrill
 
06.06.13
17:23
пробовал сейчас свернуть все до 1 уровня группировки и база упала :)
17 ИсчадиеADO
 
06.06.13
17:23
(15) непонял :)
18 ИсчадиеADO
 
06.06.13
17:24
падает при выполнении запроса или при выводе в макет? отладкой посмотри
19 ИсчадиеADO
 
06.06.13
17:26
а в РегистрСведений._СвойстваCклада сколько измерений кстати?
20 Fragster
 
гуру
06.06.13
17:35
(10) тогда нафига там ВЫБОР?
21 yra77
 
06.06.13
17:39
Я никогда не понимал заказчиков, которые просили сделать выборку миллионов записей. Зачем людям такой объем цифр? чтобы потом выкинуть отчет в эксель и свернуть до месяца например или отобрать по одной номенклатере? ЗАЧЕМ??? Умным я всегда объяснял смысл такой выборки НУЛЕВОЙ. Так что не надо это вам - будьте умнее
22 Fragster
 
гуру
06.06.13
17:40
(21) судя по тому, что у автора этот кусок помещается в ВТ, он наверное потом его крутит-верти и выдает отчет из 3-х строк
23 yra77
 
06.06.13
19:08
(22) мда, может и так. Но кому -то явно надо вправить мозги, не знаю кому только...
24 zippygrill
 
07.06.13
08:19
(22) не правда:)
(19) одно.
Закон Брукера: Даже маленькая практика стоит большой теории.