Имя: Пароль:
1C
1С v8
Оптимизация запроса 8.2. (СКД) Ошибка "Недостаточно памяти"
,
0 Pereliviya
 
09.10.12
09:46
День добрый!
Помогите оптимизировать запрос.
При формировании отчета вылетает "Недостаточно памяти".
Если ставить Отбор по определенной номенклатуре, то работает.

На чем рабочая база не скажу. Но тестовая, на которой мне дали тестировать отчет - файловая. Платформа 8.2. Конфигурация Комплексная Автоматизация 1.1.14.1.

Заказчик хочет все и сразу, как говорится.
В одном отчете объединить несколько данных: и остатки в разрезе филиалов и расходы по филиалам, и резерв, и товар в пути с разбивкой по датам (колонкам), И Общий расход с разбивкой по датам (колонкам) и т.д.

Объем данных конечно большой, но может дело в моем запросе....

Отчет написан на СКД.
Вот мое творение: http://files.mail.ru/5BNUKJ
Ах да, при открытии отчета заполняются параметры. Все обязательные.

Меня интересует это из-за большого объема информации ошибка или из-за некорректного запроса?

Спасибо!
Жду ваших идей.
4 mikecool
 
09.10.12
09:51
(3) а в 64 версии рабочие процессы сервера 1с не продолжают юзать по 2 гиг?
5 Нуф-Нуф
 
09.10.12
09:52
давай запрос
6 Maxus43
 
09.10.12
09:52
(4) откуда дровишки?
7 Pereliviya
 
09.10.12
09:54
Пожалуйста, запрос:
ВЫБРАТЬ
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
   СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) КАК НачальныйОстаток,
   СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КонечныйОстаток
ПОМЕСТИТЬ Остатки
ИЗ
   РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыВРезервеНаСкладахОстатки.Номенклатура,
   СУММА(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток) КАК Резерв
ПОМЕСТИТЬ РезервЗ
ИЗ
   РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&КонецПериода {(&КонецПериода)}, ) КАК ТоварыВРезервеНаСкладахОстатки

СГРУППИРОВАТЬ ПО
   ТоварыВРезервеНаСкладахОстатки.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыНаСкладахОбороты.Номенклатура,
   СУММА(ТоварыНаСкладахОбороты.КоличествоПриход) КАК ОбщийПриход
ПОМЕСТИТЬ ОбщийПриходЗ
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, ) КАК ТоварыНаСкладахОбороты
ГДЕ
   (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
           ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПриходныйОрдерНаТовары)

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыНаСкладахОбороты.Номенклатура,
   СУММА(ТоварыНаСкладахОбороты.КоличествоРасход) КАК ОбщийРасход,
   ТоварыНаСкладахОбороты.ПериодМесяц КАК ПоМесяцам
ПОМЕСТИТЬ ОбщийРасходЗ
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, ) КАК ТоварыНаСкладахОбороты
ГДЕ
   (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
           ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
           ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура,
   ТоварыНаСкладахОбороты.ПериодМесяц
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыНаСкладахОбороты.Номенклатура,
   СУММА(ТоварыНаСкладахОбороты.КоличествоРасход) КАК РасходКемерово
ПОМЕСТИТЬ РасходКемеровоЗ
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, ) КАК ТоварыНаСкладахОбороты
ГДЕ
   ТоварыНаСкладахОбороты.Склад В ИЕРАРХИИ(&ФилиалКемерово)
   И (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
           ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
           ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыНаСкладахОбороты.Номенклатура,
   СУММА(ТоварыНаСкладахОбороты.КоличествоРасход) КАК РасходТомск
ПОМЕСТИТЬ РасходТомскЗ
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, ) КАК ТоварыНаСкладахОбороты
ГДЕ
   ТоварыНаСкладахОбороты.Склад В ИЕРАРХИИ(&ФилиалТомск)
   И (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
           ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
           ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыНаСкладахОбороты.Номенклатура,
   СУММА(ТоварыНаСкладахОбороты.КоличествоРасход) КАК РасходНК
ПОМЕСТИТЬ РасходНКЗ
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, ) КАК ТоварыНаСкладахОбороты
ГДЕ
   ТоварыНаСкладахОбороты.Склад В ИЕРАРХИИ(&ФилиалНК)
   И (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
           ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
           ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
   СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОстатокКемерово
ПОМЕСТИТЬ ОстатокКемеровоЗ
ИЗ
   РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
   ТоварыНаСкладахОстаткиИОбороты.Склад В ИЕРАРХИИ(&ФилиалКемерово)

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
   СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОстатокТомск
ПОМЕСТИТЬ ОстатокТомскЗ
ИЗ
   РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
   ТоварыНаСкладахОстаткиИОбороты.Склад В ИЕРАРХИИ(&ФилиалТомск)

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
   СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОстатокНК
ПОМЕСТИТЬ ОстатокНКЗ
ИЗ
   РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
   ТоварыНаСкладахОстаткиИОбороты.Склад В ИЕРАРХИИ(&ФилиалНК)

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЗаказыПоставщикамОстатки.Номенклатура,
   СУММА(ЗаказыПоставщикамОстатки.КоличествоОстаток) КАК КолТоварВПути,
   НАЧАЛОПЕРИОДА(ЗаказыПоставщикамОстатки.ЗаказПоставщику.Дата, ДЕНЬ) КАК ТоварВПути
ПОМЕСТИТЬ ТоварВПутиЗ
ИЗ
   РегистрНакопления.ЗаказыПоставщикам.Остатки(&КонецПериода {(&КонецПериода)}, ) КАК ЗаказыПоставщикамОстатки
ГДЕ
   ЗаказыПоставщикамОстатки.КоличествоОстаток <> 0

СГРУППИРОВАТЬ ПО
   ЗаказыПоставщикамОстатки.Номенклатура,
   НАЧАЛОПЕРИОДА(ЗаказыПоставщикамОстатки.ЗаказПоставщику.Дата, ДЕНЬ)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   СУММА(ЦеныНоменклатурыСрезПоследних.Цена) КАК ЦенаЗакупа
ПОМЕСТИТЬ ЦенаЗакупаЗ
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода {(&КонецПериода)}, ) КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
   ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦенЗакупа

СГРУППИРОВАТЬ ПО
   ЦеныНоменклатурыСрезПоследних.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   СУММА(ЦеныНоменклатурыСрезПоследних.Цена) КАК ЦенаРозницы
ПОМЕСТИТЬ ЦенаРозницыЗ
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода {(&КонецПериода)}, ) КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
   ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦенРозница

СГРУППИРОВАТЬ ПО
   ЦеныНоменклатурыСрезПоследних.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Остатки.Номенклатура,
   СУММА(ЕСТЬNULL(Остатки.НачальныйОстаток, 0)) КАК НачальныйОстаток,
   СУММА(ЕСТЬNULL(Остатки.КонечныйОстаток, 0)) КАК КонечныйОстаток,
   СУММА(ЕСТЬNULL(ОбщийПриходЗ.ОбщийПриход, 0)) КАК ОбщийПриход,
   СУММА(ЕСТЬNULL(ОбщийРасходЗ.ОбщийРасход, 0)) КАК ОбщийРасход,
   ОбщийРасходЗ.ПоМесяцам,
   СУММА(ЕСТЬNULL(ОстатокКемеровоЗ.ОстатокКемерово, 0)) КАК ОстатокКемерово,
   СУММА(ЕСТЬNULL(ОстатокНКЗ.ОстатокНК, 0)) КАК ОстатокНК,
   СУММА(ЕСТЬNULL(ОстатокТомскЗ.ОстатокТомск, 0)) КАК ОстатокТомск,
   СУММА(ЕСТЬNULL(РасходКемеровоЗ.РасходКемерово, 0)) КАК РасходКемерово,
   СУММА(ЕСТЬNULL(РасходНКЗ.РасходНК, 0)) КАК РасходНК,
   СУММА(ЕСТЬNULL(РасходТомскЗ.РасходТомск, 0)) КАК РасходТомск,
   СУММА(ЕСТЬNULL(РезервЗ.Резерв, 0)) КАК Резерв,
   СУММА(ЕСТЬNULL(ТоварВПутиЗ.КолТоварВПути, 0)) КАК КолТоварВПути,
   ТоварВПутиЗ.ТоварВПути,
   СУММА(ЕСТЬNULL(ЦенаЗакупаЗ.ЦенаЗакупа, 0)) КАК ЦенаЗакупа,
   СУММА(ЕСТЬNULL(ЦенаРозницыЗ.ЦенаРозницы, 0)) КАК ЦенаРозницы,
   МАКСИМУМ(Остатки.Номенклатура.ОтветственныйМенеджерЗаПокупки) КАК ОтветственныйМенеджерЗаПокупки,
   МАКСИМУМ(Остатки.Номенклатура.ОсновнойПоставщик) КАК ОсновнойПоставщик
ИЗ
   Остатки КАК Остатки
       ПОЛНОЕ СОЕДИНЕНИЕ ЦенаРозницыЗ КАК ЦенаРозницыЗ
       ПО Остатки.Номенклатура = ЦенаРозницыЗ.Номенклатура
       ПОЛНОЕ СОЕДИНЕНИЕ ЦенаЗакупаЗ КАК ЦенаЗакупаЗ
       ПО Остатки.Номенклатура = ЦенаЗакупаЗ.Номенклатура
       ПОЛНОЕ СОЕДИНЕНИЕ ТоварВПутиЗ КАК ТоварВПутиЗ
       ПО Остатки.Номенклатура = ТоварВПутиЗ.Номенклатура
       ПОЛНОЕ СОЕДИНЕНИЕ ОстатокКемеровоЗ КАК ОстатокКемеровоЗ
       ПО Остатки.Номенклатура = ОстатокКемеровоЗ.Номенклатура
       ПОЛНОЕ СОЕДИНЕНИЕ ОстатокНКЗ КАК ОстатокНКЗ
       ПО Остатки.Номенклатура = ОстатокНКЗ.Номенклатура
       ПОЛНОЕ СОЕДИНЕНИЕ ОстатокТомскЗ КАК ОстатокТомскЗ
       ПО Остатки.Номенклатура = ОстатокТомскЗ.Номенклатура
       ПОЛНОЕ СОЕДИНЕНИЕ РасходНКЗ КАК РасходНКЗ
       ПО Остатки.Номенклатура = РасходНКЗ.Номенклатура
       ПОЛНОЕ СОЕДИНЕНИЕ РасходТомскЗ КАК РасходТомскЗ
       ПО Остатки.Номенклатура = РасходТомскЗ.Номенклатура
       ПОЛНОЕ СОЕДИНЕНИЕ ОбщийРасходЗ КАК ОбщийРасходЗ
       ПО Остатки.Номенклатура = ОбщийРасходЗ.Номенклатура
       ПОЛНОЕ СОЕДИНЕНИЕ РасходКемеровоЗ КАК РасходКемеровоЗ
       ПО Остатки.Номенклатура = РасходКемеровоЗ.Номенклатура
       ПОЛНОЕ СОЕДИНЕНИЕ ОбщийПриходЗ КАК ОбщийПриходЗ
       ПО Остатки.Номенклатура = ОбщийПриходЗ.Номенклатура
       ПОЛНОЕ СОЕДИНЕНИЕ РезервЗ КАК РезервЗ
       ПО Остатки.Номенклатура = РезервЗ.Номенклатура

СГРУППИРОВАТЬ ПО
   Остатки.Номенклатура,
   ОбщийРасходЗ.ПоМесяцам,
   ТоварВПутиЗ.ТоварВПути
8 mikecool
 
09.10.12
09:54
+4 Основным преимуществом 64-разрядного сервера "1С:Предприятия 8.1" является возможность использования практически неограниченного адресного пространства, выделяемого рабочему процессу.
уже не так )) http://www.1c.ru/news/info.jsp?id=6554
9 Живой Ископаемый
 
09.10.12
09:56
2(8) Надо было сказать: Я тот "Рип Ван Винкль"
10 saaken
 
09.10.12
10:05
убери полное соединение
11 Pereliviya
 
09.10.12
10:08
(10) в моем случае нужно полное соединение, НО, если поставить левое, все та же проблема. Хотя..... ща попробую внутреннее поставить...
12 Aprobator
 
09.10.12
10:09
(7) не надо сгруппировать и сумма при работе с виртуальными таблицами.
13 mikecool
 
09.10.12
10:10
(9) :)
14 Aprobator
 
09.10.12
10:11
вот это

......

ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   СУММА(ЦеныНоменклатурыСрезПоследних.Цена) КАК ЦенаРозницы
ПОМЕСТИТЬ ЦенаРозницыЗ
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода {(&КонецПериода)}, ) КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
   ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦенРозница

СГРУППИРОВАТЬ ПО
   ЦеныНоменклатурыСрезПоследних.Номенклатура
;
.....

в мемориз - однозначно. Во первых какая еще сумма у регистра сведений? Во вторых условие в праметры виртуальной таблицы.
15 Axel2009
 
09.10.12
10:12
из 9 запросов к ТоварыНаСкладах необходимо сделать один
16 Aprobator
 
09.10.12
10:13
все условия какие только можно в параметры виртуальных таблиц.
17 Pereliviya
 
09.10.12
10:16
учитываю все рекомендациии.... ща пробую все условия внуть вирт таблице установить и убрать группировки... сделаю. отпишусь.
18 Aprobator
 
09.10.12
10:16
(15) + 100500 сначала все по условию по периоду выбирается в ВТ. А потом уже из нее по условиям раскладывается куда надо.
19 Axel2009
 
09.10.12
10:18
+ в данном случае полное объединение лучше сразу было оформить через объединить все. тогда полное соединение отработает.
а вот это
ВЫБРАТЬ
   Остатки.Номенклатура,
будет NULL возвращать если нет остатков по номенклатуре. запрос отработает некорректно
20 Axel2009
 
09.10.12
10:18
(19)+ тогда КАК полное соединение отработает.
21 ptiz
 
09.10.12
10:21
(0) Зачем тебе группировкам по дням в ТоварВПути3, если ты её не используешь?
22 Pereliviya
 
09.10.12
10:26
(21) группировку по дням использую в СКД настройках
(16) установила все условия во вирт.таблицах - не помогло.
(19) изначально так и работало через объединение, но все равно было недостаточно памяти. Переделала на соединение для проверки, но итог один.
23 prog01
 
09.10.12
10:28
(0)какая полатформа?
Ошибка загрузки документа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data-composition-system/schema}denyIncompleteValues    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType
@
24 ptiz
 
09.10.12
10:31
(22) " группировку по дням использую в СКД настройках" - как именно, если ты не вытащил это поле в конечной таблице?
У тебя все данные умножаются на кол-во дней.
25 Pereliviya
 
09.10.12
10:32
(23) платформа 8.2.15.318
26 Pereliviya
 
09.10.12
10:33
(19) вот самый первый запрос через объединение
ВЫБРАТЬ
   ИтогТаблицы.Номенклатура КАК Номенклатура,
   ИтогТаблицы.Номенклатура.ВхождениеВМатрицу КАК ВхождениеВМатрицу,
   ИтогТаблицы.НачальныйОстаток КАК НачальныйОстаток,
   ИтогТаблицы.ПриходОбщий КАК ПриходОбщий,
   ИтогТаблицы.РасходОбщий КАК РасходОбщий,
   ИтогТаблицы.РасходКемерово КАК РасходКемерово,
   ИтогТаблицы.РасходНК КАК РасходНК,
   ИтогТаблицы.РасходТомск КАК РасходТомск,
   ИтогТаблицы.ОстатокКемерово КАК ОстатокКемерово,
   ИтогТаблицы.ОстатокНК КАК ОстатокНК,
   ИтогТаблицы.ОстатокТомск КАК ОстатокТомск,
   ИтогТаблицы.КонечныйОстаток КАК КонечныйОстаток,
   ИтогТаблицы.Резерв КАК Резерв,
   ИтогТаблицы.Номенклатура.ОтветственныйМенеджерЗаПокупки КАК ОтветственныйМенеджерЗаПокупки,
   ИтогТаблицы.Номенклатура.ОсновнойПоставщик КАК ОсновнойПоставщик,
   ИтогТаблицы.ЦенаЗакупа КАК ЦенаЗакупа,
   ИтогТаблицы.ЦенаРозница КАК ЦенаРозница,
   ИтогТаблицы.ТоварВПути КАК ТоварВПути,
   ИтогТаблицы.КолТоварвПути КАК КолТоварвПути,
   ИтогТаблицы.ПоМесяцам КАК ПоМесяцам
ИЗ
   (ВЫБРАТЬ
       ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
       СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) КАК НачальныйОстаток,
       СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КонечныйОстаток,
       0 КАК Резерв,
       0 КАК ПриходОбщий,
       0 КАК РасходОбщий,
       0 КАК РасходКемерово,
       0 КАК РасходТомск,
       0 КАК РасходНК,
       0 КАК ОстатокКемерово,
       0 КАК ОстатокНК,
       0 КАК ОстатокТомск,
       0 КАК ЦенаЗакупа,
       0 КАК ЦенаРозница,
       NULL КАК ПоМесяцам,
       NULL КАК ТоварВПути,
       0 КАК КолТоварвПути
   ИЗ
       РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
   
   СГРУППИРОВАТЬ ПО
       ТоварыНаСкладахОстаткиИОбороты.Номенклатура
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ТоварыВРезервеНаСкладахОстатки.Номенклатура,
       0,
       0,
       СУММА(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток),
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       NULL,
       NULL,
       0
   ИЗ
       РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&КонецПериода {(&КонецПериода)}, ) КАК ТоварыВРезервеНаСкладахОстатки
   
   СГРУППИРОВАТЬ ПО
       ТоварыВРезервеНаСкладахОстатки.Номенклатура
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ТоварыНаСкладахОборотыПриход.Номенклатура,
       0,
       0,
       0,
       СУММА(ТоварыНаСкладахОборотыПриход.КоличествоПриход),
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       NULL,
       NULL,
       0
   ИЗ
       РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Регистратор, ) КАК ТоварыНаСкладахОборотыПриход
   ГДЕ
       (ТоварыНаСкладахОборотыПриход.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
               ИЛИ ТоварыНаСкладахОборотыПриход.Регистратор ССЫЛКА Документ.ПриходныйОрдерНаТовары)
   
   СГРУППИРОВАТЬ ПО
       ТоварыНаСкладахОборотыПриход.Номенклатура
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ТоварыНаСкладахОбороты.Номенклатура,
       0,
       0,
       0,
       0,
       СУММА(ТоварыНаСкладахОбороты.КоличествоРасход),
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       ТоварыНаСкладахОбороты.ПериодМесяц,
       NULL,
       0
   ИЗ
       РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, ) КАК ТоварыНаСкладахОбороты
   ГДЕ
       (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
               ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
               ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
   
   СГРУППИРОВАТЬ ПО
       ТоварыНаСкладахОбороты.Номенклатура,
       ТоварыНаСкладахОбороты.ПериодМесяц
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       КемеровоРасход.Номенклатура,
       0,
       0,
       0,
       0,
       0,
       СУММА(КемеровоРасход.КоличествоРасход),
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       NULL,
       NULL,
       0
   ИЗ
       РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, , Склад В ИЕРАРХИИ (&ФилиалКемерово)) КАК КемеровоРасход
   ГДЕ
       (КемеровоРасход.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
               ИЛИ КемеровоРасход.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
               ИЛИ КемеровоРасход.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
   
   СГРУППИРОВАТЬ ПО
       КемеровоРасход.Номенклатура
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       РасходТомск.Номенклатура,
       0,
       0,
       0,
       0,
       0,
       0,
       СУММА(РасходТомск.КоличествоРасход),
       0,
       0,
       0,
       0,
       0,
       0,
       NULL,
       NULL,
       0
   ИЗ
       РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, Склад В ИЕРАРХИИ (&ФилиалТомск)) КАК РасходТомск
   ГДЕ
       (РасходТомск.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
               ИЛИ РасходТомск.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
               ИЛИ РасходТомск.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
   
   СГРУППИРОВАТЬ ПО
       РасходТомск.Номенклатура
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       РасходНК.Номенклатура,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       СУММА(РасходНК.КоличествоРасход),
       0,
       0,
       0,
       0,
       0,
       NULL,
       NULL,
       0
   ИЗ
       РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, Склад В ИЕРАРХИИ (&ФилиалНК)) КАК РасходНК
   ГДЕ
       (РасходНК.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
               ИЛИ РасходНК.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
               ИЛИ РасходНК.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
   
   СГРУППИРОВАТЬ ПО
       РасходНК.Номенклатура
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ОстаткиКемерово.Номенклатура,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       СУММА(ОстаткиКемерово.КоличествоКонечныйОстаток),
       0,
       0,
       0,
       0,
       NULL,
       NULL,
       0
   ИЗ
       РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, , Склад В ИЕРАРХИИ (&ФилиалКемерово)) КАК ОстаткиКемерово
   
   СГРУППИРОВАТЬ ПО
       ОстаткиКемерово.Номенклатура
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ОстаткиНК.Номенклатура,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       СУММА(ОстаткиНК.КоличествоКонечныйОстаток),
       0,
       0,
       0,
       NULL,
       NULL,
       0
   ИЗ
       РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, , Склад В ИЕРАРХИИ (&ФилиалНК)) КАК ОстаткиНК
   
   СГРУППИРОВАТЬ ПО
       ОстаткиНК.Номенклатура
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ОстаткиТомск.Номенклатура,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       СУММА(ОстаткиТомск.КоличествоКонечныйОстаток),
       0,
       0,
       NULL,
       NULL,
       0
   ИЗ
       РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, , Склад В ИЕРАРХИИ (&ФилиалТомск)) КАК ОстаткиТомск
   
   СГРУППИРОВАТЬ ПО
       ОстаткиТомск.Номенклатура
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ЦеныНоменклатурыСрезПоследних.Номенклатура,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       СУММА(ЦеныНоменклатурыСрезПоследних.Цена),
       0,
       NULL,
       NULL,
       0
   ИЗ
       РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода {(&КонецПериода)}, ТипЦен = &ТипЦенЗакупа) КАК ЦеныНоменклатурыСрезПоследних
   
   СГРУППИРОВАТЬ ПО
       ЦеныНоменклатурыСрезПоследних.Номенклатура
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ЦеныНоменклатурыСрезПоследних.Номенклатура,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       СУММА(ЦеныНоменклатурыСрезПоследних.Цена),
       NULL,
       NULL,
       0
   ИЗ
       РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода {(&КонецПериода)}, ТипЦен = &ТипЦенРозница) КАК ЦеныНоменклатурыСрезПоследних
   
   СГРУППИРОВАТЬ ПО
       ЦеныНоменклатурыСрезПоследних.Номенклатура
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ЗаказыПоставщикамОстатки.Номенклатура,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       NULL,
       НАЧАЛОПЕРИОДА(ЗаказыПоставщикамОстатки.ЗаказПоставщику.Дата, ДЕНЬ),
       ЗаказыПоставщикамОстатки.КоличествоОстаток
   ИЗ
       РегистрНакопления.ЗаказыПоставщикам.Остатки(&КонецПериода {(&КонецПериода)}, ) КАК ЗаказыПоставщикамОстатки
   ГДЕ
       ЗаказыПоставщикамОстатки.КоличествоОстаток <> 0) КАК ИтогТаблицы
27 Pereliviya
 
09.10.12
10:38
(24) ВЫБРАТЬ
       ....
   СУММА(ЕСТЬNULL(ТоварВПутиЗ.КолТоварВПути, 0)) КАК КолТоварВПути,
   ТоварВПутиЗ.ТоварВПути,
       ....
в каком месте не выбраны поля?
28 Pereliviya
 
09.10.12
10:39
ну подскажите что может быть????
29 ptiz
 
09.10.12
10:45
(27) Тьфу на тебя так поля называть! :)
30 Pereliviya
 
09.10.12
10:46
(29) уж как смогла :))
31 ptiz
 
09.10.12
10:47
Ты прикинь примерно, сколько строк получится в выходной таблице.
Выведи отдельно ТоварВПути3 и итоговую таблицу без соединения с ТоварВПути3.
32 Pereliviya
 
09.10.12
10:49
(31) ууу.... там очень много строк....
сделаю скажу цифры.
33 ДемонМаксвелла
 
09.10.12
11:08
(32) дело не в запросе, даже группировка в запросе не имеет особого значения. СКД нормально обрабатывает миллионы строк, а вот вывести их в табличный документ не может, т.к. он целиком находится в оперативной памяти, и памяти клиента не хватает.
34 Pereliviya
 
09.10.12
11:08
(31) товар в пути  2366 строк, остальная таблица 25790 строк
35 Pereliviya
 
09.10.12
11:09
(33) какое решение?
36 ДемонМаксвелла
 
09.10.12
11:12
делать вывод СКД программно, контролировать количество строк, прекращать вывод не дожидаясь "Недостаточно памяти". убрать расшифровку - слегка поможет.
37 ДемонМаксвелла
 
09.10.12
11:14
проблема наступает при миллионах строк. 25000 - это детский лепет.
38 Pereliviya
 
09.10.12
11:16
(37) согдасна. Но вот вылетает же
39 ДемонМаксвелла
 
09.10.12
11:19
(38) оценивать нужно количество строк в отчете, а не в исходных таблицах. при соединении двух таблиц по 1000 записей уже технически возможно получить миллион.
40 Pereliviya
 
09.10.12
11:23
эта проблема появилась, когда добавилась колонка общего расхода по месяцам.
41 ДемонМаксвелла
 
09.10.12
11:23
сделай вывод СКД программно, количество строк в итоговом отчете посчитай в таком цикле:

Пока ЭлементРезультата <> Неопределено Цикл        
   ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
   ЭлементРезультата = ПроцессорКомпоновки.Следующий();
КонецЦикла;
42 ptiz
 
09.10.12
11:30
(37) У неё идет соединение этих двух таблиц, так что записей будет больше.
Но если "товар в пути  2366 строк", то не намного больше.

Не должно падать.
Либо кол-во строк неверно посчитано.
43 Kashemir
 
09.10.12
11:41
Проблема озвученная в (0) является клиентской проблемой и наиболее вероятно возникает при получении слишком большого количества результатов - (33) прав.

Но есть и второй вариант - размер самой базовой настройки может превысить некое фиксированное значение - до выполнения запроса даже дело не дойдет. У меня был такой опыт - запрос для схемы строился на основе справочника показателей - сотня таблиц объединения показателей с ~400 параметрами - слет по памяти. Причем сам процесс 1с сам по себе отжирал при этом не более 400мб
44 Axel2009
 
09.10.12
12:33
ВЫБРАТЬ
   ЗаказыПоставщикамОстатки.Номенклатура,
   СУММА(ЗаказыПоставщикамОстатки.КоличествоОстаток) КАК КолТоварВПути,
   НАЧАЛОПЕРИОДА(ЗаказыПоставщикамОстатки.ЗаказПоставщику.Дата, ДЕНЬ) КАК ТоварВПути
ПОМЕСТИТЬ ТоварВПутиЗ
ИЗ
   РегистрНакопления.ЗаказыПоставщикам.Остатки(&КонецПериода {(&КонецПериода)}, ) КАК ЗаказыПоставщикамОстатки
ГДЕ
   ЗаказыПоставщикамОстатки.КоличествоОстаток <> 0

СГРУППИРОВАТЬ ПО
   ЗаказыПоставщикамОстатки.Номенклатура,
   НАЧАЛОПЕРИОДА(ЗаказыПоставщикамОстатки.ЗаказПоставщику.Дата, ДЕНЬ)

прикольное перемножение данных. если номенклатура поступает 2 раза, то на выходе получится 4096 строк
45 Aprobator
 
09.10.12
14:11
(44) это как? Обращение вроде к виртуальной таблице регистра свертку делает. Другое дело что услове ГДЕ тут нафиг не нужно. Не может в остатках 0 быть.
46 Axel2009
 
09.10.12
14:24
(45) группировка то по дням есть. значит сколько раз поступало, столько строк и будет
47 Aprobator
 
09.10.12
14:37
(46) группировку вижу, но не вижу перемножения.
48 Axel2009
 
09.10.12
14:39
поторопился.. масштабы поменьше но все же

ВЫБРАТЬ
   ТоварыНаСкладахОбороты.Номенклатура,
   СУММА(ТоварыНаСкладахОбороты.КоличествоРасход) КАК ОбщийРасход,
   ТоварыНаСкладахОбороты.ПериодМесяц КАК ПоМесяцам
ПОМЕСТИТЬ ОбщийРасходЗ
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, ) КАК ТоварыНаСкладахОбороты
ГДЕ
  (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
          ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
          ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура,
   ТоварыНаСкладахОбороты.ПериодМесяц
;

ВЫБРАТЬ
   ЗаказыПоставщикамОстатки.Номенклатура,
   СУММА(ЗаказыПоставщикамОстатки.КоличествоОстаток) КАК КолТоварВПути,
   НАЧАЛОПЕРИОДА(ЗаказыПоставщикамОстатки.ЗаказПоставщику.Дата, ДЕНЬ) КАК ТоварВПути
ПОМЕСТИТЬ ТоварВПутиЗ
ИЗ
   РегистрНакопления.ЗаказыПоставщикам.Остатки(&КонецПериода {(&КонецПериода)}, ) КАК ЗаказыПоставщикамОстатки
ГДЕ
   ЗаказыПоставщикамОстатки.КоличествоОстаток <> 0

СГРУППИРОВАТЬ ПО
   ЗаказыПоставщикамОстатки.Номенклатура,
   НАЧАЛОПЕРИОДА(ЗаказыПоставщикамОстатки.ЗаказПоставщику.Дата, ДЕНЬ)

эти 2 запроса при соединении по номенклатуре что сделают?
49 Aprobator
 
09.10.12
14:53
(48) поскольку свертка есть в обоих подзапросах, то умножение будет  при соединении только по номенклатуре, если будет еще добавлено и соединение по периодам, то ничего страшного не вижу.
50 Aprobator
 
09.10.12
14:54
хотя месяц с днем - небольщой кирдык то будет конечно.
51 Pereliviya
 
09.10.12
15:27
(48) Периоды выбраны для разных целей.
Поле "ПоМесяцам" разбивает Расход по месяцам за выбранный период, поле "ТоварВПути" разбивает на конкретные даты заказанных товаров, но еще  не поступивших, т.е. в пути.
Вот пример отчета: http://files.mail.ru/C6PB0R
Если есть другие варианты решения подобной задачи буду рада увидеть и применить в своей задачи.
52 Fragster
 
гуру
09.10.12
15:28
где фотка?
53 Fragster
 
гуру
09.10.12
15:28
падает на запросе или на "вывод отчета"?
54 Pereliviya
 
09.10.12
15:31
(53) на выводе отчета
55 Axel2009
 
09.10.12
15:31
(51) да без разницы для каких целей.
если поступлений будет 3, а отгрузок будет 5, как их выводить в отчете?
56 Pereliviya
 
09.10.12
15:47
?
57 Fragster
 
гуру
09.10.12
15:51
(54) а фотка где?
58 Fragster
 
гуру
09.10.12
15:52
(54) на скольки %?
59 Pereliviya
 
09.10.12
15:56
(57) зачем?
(58) на 0 % стоит думает и выводит "Недостаточно памяти".
60 Kashemir
 
09.10.12
15:58
(59) 3 год на форуме и спрашиваешь зачем ?

Открой параллельно диспечер задач и следи за потреблением памяти - обрати внимания на максимальное значение перед вылетом ошибки
61 Pereliviya
 
09.10.12
16:03
(60) 3 года как зарегистрирована - не показатель.
62 Fragster
 
гуру
09.10.12
16:04
(59) файловая?
63 Pereliviya
 
09.10.12
16:07
(62) к сожалею да. Файловая.
При формировании отчета сжирает всю память.
Память доходит до 3,95 ГБ
Физическая память всего 4086
              свободно 4  - это при пике (ошибке).
64 Fragster
 
гуру
09.10.12
16:09
(63) потребление памяти надо смотреть процессом, а не "физическая память". или у тебя своп выключен?
а если файловая - то нужно курить запрос на предмет соединений, даже неявных (получение данных через 2 и более точек).
65 Fragster
 
гуру
09.10.12
16:12
удаление неиспользуемых временных таблиц, если неправильных соединений нет, просто объем такой. ну а если запрос оптимален, то тут только обработка частями или скуль помогут. кстати, реальный текст запроса может отличаться от того, что задано в конфигураторе, соответственно нужно использовать консоль отчетов, которая показывает этот реальный текст
66 Fragster
 
гуру
09.10.12
16:13
а просто в консоли запросов отчет выполняется?
67 Pereliviya
 
09.10.12
16:18
(65) процессом доходит до 1 815 304 КБ (если я правильно поняла)
в консоли отчет спокойно формируется.
68 Pereliviya
 
09.10.12
16:19
(65) попробую временные таблицы удалять... спасибо за совет
69 Fragster
 
гуру
09.10.12
16:19
(67) получи реальный текст запроса, а потом его в консоль запросов запихай
70 Aprobator
 
10.10.12
10:06
(67) если в консоли формируется, то автозаполнение в СКД в сад и явно указываешь какие поля доступны для вывода и условий в СКД.
71 ЧеловекДуши
 
10.10.12
10:14
(67)32-ух битное, а это лихо так написать запрос, что бы он отъел все пространство до самого краха :DDDD
...
Все дело в фото...
72 ЧеловекДуши
 
10.10.12
10:15
+(67)Лучше начать смотреть в ту сторону, что у вас неправильное представления ведения учета, коль приходится лопатить такой объем информации :)
73 Pereliviya
 
10.10.12
10:31
(72) задача состояла написать такой отчет. Базу вижу впервые, т.е. я сторонний программист. А клиенту ну захотелось в одном отчете все и сразу... ну бывает...
74 Pereliviya
 
10.10.12
10:41
(71) предложите компактнее вариант чтоб выглядело таким образом (51)
75 Axel2009
 
10.10.12
10:44
(74) сначала (55) прочитать надо бы.
76 Pereliviya
 
10.10.12
10:46
(75) и?
77 Pereliviya
 
10.10.12
10:47
(75) выводить как в (51)
78 Pereliviya
 
10.10.12
14:01
В общем, решила проверять свой запрос частями, чтоб понять на каком моменте у меня "Рушится". Оказалось вот этот запрос:

ВЫБРАТЬ
   ТоварыНаСкладахОбороты.Номенклатура            КАК Номенклатура,
   СУММА(ТоварыНаСкладахОбороты.КоличествоРасход) КАК КоличествоРасход,
   ТоварыНаСкладахОбороты.ПериодМесяц             КАК ПериодМесяц
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ТоварыНаСкладахОбороты
ГДЕ
   (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
           ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
           ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура,
   ТоварыНаСкладахОбороты.ПериодМесяц

эх....
79 Pereliviya
 
10.10.12
14:07
ну нехватает ему памяти :(((
80 Pereliviya
 
10.10.12
14:12
идея! :))))  "оптимизируем" условие:

ВЫБРАТЬ
   ТоварыНаСкладахОбороты.Номенклатура            КАК Номенклатура,
   СУММА(ТоварыНаСкладахОбороты.КоличествоРасход) КАК КоличествоРасход,
   ТоварыНаСкладахОбороты.ПериодМесяц             КАК ПериодМесяц
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ТоварыНаСкладахОбороты
ГДЕ
   (НЕ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров)
СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура,
   ТоварыНаСкладахОбороты.ПериодМесяц

и.... печалько.... ничто не помогает справиться.
81 Pereliviya
 
10.10.12
14:14
в общем, опечалила клиента. Сказала что такой отчет можно формировать только если выбирать в отборе конкретную номенклатуру :)))
82 Aprobator
 
10.10.12
14:14
опять группировка
83 Fragster
 
гуру
10.10.12
14:16
ТИИ с логической цеслотностью. обращение к реальной таблице вместо виртуальной.
84 Pereliviya
 
10.10.12
14:21
(82) что с ней, что без нее.. вылетает уже ненавистное окошко с сообщением "Недостаточно памяти" :(( Правда конечно уже не на 0%, а на 18% вылетает! Прогресс! :)))
85 Fragster
 
гуру
10.10.12
14:23
(84) на закладке "макет" задай для полей макеты без расшифровок.
86 GANR
 
10.10.12
14:23
1. (7) Нужно как угодно избавиться от такого количества полных соединений - на них уйма времени уходит. Наверняка то, что полным соединением делается можно сделать посредством "объединить все" и "выбор когда".

2. Временные таблицы, если они получаются большими и используются один раз работают в разы медленнее, чем вложенный запрос, т. к. в случае с ВТ уходит время для из записи выборки на жесткий диск.

3. (26) Уже лучше. Вместо множества запросов к одной и той-же таблице (скажем, ТоварыНаСкладах) через объеднить все используй запрос один раз - не надо ничего объединять, надо так:

...
выбор когда Склад = &ФилиалКемерово Тогда Количество иначе 0 конец КАК ОстатокКемерово,
выбор когда Склад = &ФилиалНовосибирск Тогда Количество иначе 0 конец КАК ОстатокНовосибирск,
...

Смысл понятен?
87 Fragster
 
гуру
10.10.12
14:25
(86).2 временные таблицы в 90% работают быстрее чем виртуальные в соединениях.
88 GANR
 
10.10.12
14:26
(87) Хорошо-бы план запроса в SQL-варианте бы ещё поглядеть, если нужный софт и навык есть.
89 Pereliviya
 
10.10.12
14:26
(86) смысл понятен, но! Упустите пока все выше сказанное. Анализируем запрос только (80).
90 Fragster
 
гуру
10.10.12
14:27
(88) да, в этом все и дело, что виртуальная таблица - на самом деле это 2-4 вложенных запроса, из-за чего план строится кривой.
91 GANR
 
10.10.12
14:34
(89) Глянуть-бы, во что (80) транслируется - нет ли там UNION ALL по всем типам регистраторов для регистра "Товары на складах"? Если так - тогда понятно почему тормоза. Боюсь, что оптимальнее, в таком случае, может быть только ПРЯМОЙ SQL-запрос.
92 Pereliviya
 
10.10.12
14:36
(91) так то конечно! Но, в самом начале (0) говорила что база файловая.
93 GANR
 
10.10.12
14:44
(92) А если, фильтр в (80) по Регистратор ССЫЛКА ... убрать работает?
94 GANR
 
10.10.12
14:48
(92) А может попробовать так вместо (80):
ВЫБРАТЬ
   ТоварыНаСкладахОбороты.Номенклатура            КАК Номенклатура,
   СУММА(ТоварыНаСкладахОбороты.КоличествоРасход) КАК КоличествоРасход,
   ТоварыНаСкладахОбороты.ПериодМесяц             КАК ПериодМесяц
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ТоварыНаСкладахОбороты
ГДЕ
   НЕ ТоварыНаСкладахОбороты.Регистратор В (ВЫБРАТЬ Ссылка ИЗ Документ.ПеремещениеТоваров)
СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура,
   ТоварыНаСкладахОбороты.ПериодМесяц
95 Pereliviya
 
10.10.12
14:56
(94) Убрала вообще регистратор и из периодичности и из условия соответственно, все равно вылетает. Правда на 65% :)
96 Pereliviya
 
10.10.12
14:58
т.е. такой запрос стал:
ВЫБРАТЬ
   ТоварыНаСкладахОбороты.Номенклатура,
   ТоварыНаСкладахОбороты.КоличествоРасход КАК КоличествоРасход,
   ТоварыНаСкладахОбороты.Период
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК ТоварыНаСкладахОбороты
97 Aprobator
 
10.10.12
14:59
и условие на регистратор пало смертью храбрых.
98 Pereliviya
 
10.10.12
14:59
(97) да уже бы как-нибудь заработало :)))
99 GANR
 
10.10.12
15:06
(98) Что сказать, тяжелый случай. Напишу хоть порожняк, глядишь - ветвь поднимется.
100 GANR
 
10.10.12
15:07
(100)
101 Zero on a dice
 
10.10.12
15:09
к слову, эмпирическим путем было выявлено, что с х64 системой 1с работает много лучше, нежели с х86.
условия - одинаковые клиентские машины (и3, 4гб), один и тот же сервер 1с+скл.
своеобразные выборки на х86 (вин7) выпадали, на х64 (вин7) обрабатывались.

капитан очевидность, конечно, но вдруг поможет
102 Pereliviya
 
10.10.12
15:13
(101) Спасибо!
Спасибо ВСЕМ за содействие.
103 GANR
 
10.10.12
15:18
(102) Если решишь - выложи работающий запрос в ветку. Лично мне уже интересно стало с исследовательской точки зрения.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший