|
Оптимизация запроса 8.2. (СКД) Ошибка "Недостаточно памяти" | ☑ | ||
---|---|---|---|---|
0
Pereliviya
09.10.12
✎
09:46
|
День добрый!
Помогите оптимизировать запрос. При формировании отчета вылетает "Недостаточно памяти". Если ставить Отбор по определенной номенклатуре, то работает. На чем рабочая база не скажу. Но тестовая, на которой мне дали тестировать отчет - файловая. Платформа 8.2. Конфигурация Комплексная Автоматизация 1.1.14.1. Заказчик хочет все и сразу, как говорится. В одном отчете объединить несколько данных: и остатки в разрезе филиалов и расходы по филиалам, и резерв, и товар в пути с разбивкой по датам (колонкам), И Общий расход с разбивкой по датам (колонкам) и т.д. Объем данных конечно большой, но может дело в моем запросе.... Отчет написан на СКД. Вот мое творение: http://files.mail.ru/5BNUKJ Ах да, при открытии отчета заполняются параметры. Все обязательные. Меня интересует это из-за большого объема информации ошибка или из-за некорректного запроса? Спасибо! Жду ваших идей. |
|||
1
mikecool
09.10.12
✎
09:48
|
неправильно проверять творение на другом типу Субд
и где фотка? |
|||
2
mikecool
09.10.12
✎
09:49
|
"Недостаточно памяти" просто может быть оттого, что ограничили память на процесс на скуле, да и раб. процесс у 1С имеет всего 2 гига для работы
|
|||
3
aleks-id
09.10.12
✎
09:50
|
>>раб. процесс у 1С имеет всего 2 гига для работы
я думал все на х64 давно перешли... |
|||
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) Если решишь - выложи работающий запрос в ветку. Лично мне уже интересно стало с исследовательской точки зрения.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |