|
Нехватка памяти для запроса. | ☑ | ||
---|---|---|---|---|
0
unknown181538
19.08.11
✎
14:32
|
ВЫБРАТЬ
АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, АналитикаУчетаНоменклатуры.Склад КАК Склад, АналитикаУчетаНоменклатуры.КлючАналитики КАК КлючАналитики ПОМЕСТИТЬ АнУчета ИЗ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры ИНДЕКСИРОВАТЬ ПО КлючАналитики, Склад, Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВЫБОР КОГДА СебестоимостьТоваровОстатки.Организация = &ОргЭА ТОГДА СебестоимостьТоваровОстатки.КоличествоОстаток ИНАЧЕ 0 КОНЕЦ КАК КоличествоЭА, ВЫБОР КОГДА СебестоимостьТоваровОстатки.Организация = &ОргЭА ТОГДА СебестоимостьТоваровОстатки.СтоимостьОстаток ИНАЧЕ 0 КОНЕЦ КАК СуммаЭА, ВЫБОР КОГДА СебестоимостьТоваровОстатки.Организация = &ОргАП ТОГДА СебестоимостьТоваровОстатки.КоличествоОстаток ИНАЧЕ 0 КОНЕЦ КАК КоличествоАП, ВЫБОР КОГДА СебестоимостьТоваровОстатки.Организация = &ОргАП ТОГДА СебестоимостьТоваровОстатки.СтоимостьОстаток ИНАЧЕ 0 КОНЕЦ КАК СуммаАП, ВЫБОР КОГДА СебестоимостьТоваровОстатки.Организация = &ОргУУ ТОГДА СебестоимостьТоваровОстатки.КоличествоОстаток ИНАЧЕ 0 КОНЕЦ КАК КоличествоУУ, ВЫБОР КОГДА СебестоимостьТоваровОстатки.Организация = &ОргУУ ТОГДА СебестоимостьТоваровОстатки.СтоимостьОстаток ИНАЧЕ 0 КОНЕЦ КАК СуммаУУ, АнУчета.Номенклатура.Код КАК Товар, ВЫБОР КОГДА АнУчета.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ВиртуальныйСклад) ТОГДА СебестоимостьТоваровОстатки.КоличествоОстаток ИНАЧЕ 0 КОНЕЦ КАК КоличествоВиртуальный, ВЫБОР КОГДА АнУчета.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ВиртуальныйСклад) ТОГДА СебестоимостьТоваровОстатки.СтоимостьОстаток ИНАЧЕ 0 КОНЕЦ КАК СуммаВиртуальный ПОМЕСТИТЬ ОстУТ ИЗ РегистрНакопления.СебестоимостьТоваров.Остатки(&Период, ) КАК СебестоимостьТоваровОстатки ЛЕВОЕ СОЕДИНЕНИЕ АнУчета КАК АнУчета ПО СебестоимостьТоваровОстатки.АналитикаУчетаНоменклатуры = АнУчета.КлючАналитики ИНДЕКСИРОВАТЬ ПО Товар ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ АнУч.Склад КАК Склад, АнУч.КлючАналитики КАК КлючАналитики ПОМЕСТИТЬ АнУчПроизводство ИЗ АнУчета КАК АнУч ГДЕ АнУч.Склад = ЗНАЧЕНИЕ(Справочник.Склады.СкладПроизводства) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СебестоимостьТоваровОстатки.КоличествоОстаток КАК Количество, СебестоимостьТоваровОстатки.СтоимостьОстаток КАК Сумма, АнУчета.Номенклатура.Код КАК Товар ПОМЕСТИТЬ Производство ИЗ РегистрНакопления.СебестоимостьТоваров.Остатки( , АналитикаУчетаНоменклатуры В (ВЫБРАТЬ АнУчПроизводство.КлючАналитики ИЗ АнУчПроизводство КАК АнУчПроизводство)) КАК СебестоимостьТоваровОстатки ЛЕВОЕ СОЕДИНЕНИЕ АнУчета КАК АнУчета ПО СебестоимостьТоваровОстатки.АналитикаУчетаНоменклатуры = АнУчета.КлючАналитики ИНДЕКСИРОВАТЬ ПО Товар ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОстаткиБП.Товар КАК Товар, ОстаткиБП.КоличествоЭА, ОстаткиБП.КоличествоАП, ОстаткиБП.СуммаЭА, ОстаткиБП.СуммаАП ПОМЕСТИТЬ БП ИЗ &ТаблицаБП КАК ОстаткиБП ИНДЕКСИРОВАТЬ ПО Товар ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Остатки77.Товар КАК Товар, Остатки77.Сумма, Остатки77.Дельта, Остатки77.Количество ПОМЕСТИТЬ О77 ИЗ &ТаблицаОстатков77 КАК Остатки77 ИНДЕКСИРОВАТЬ ПО Товар ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СпрНоменклатура.Код КАК Товар, БП.КоличествоЭА, БП.КоличествоАП, БП.СуммаЭА, БП.СуммаАП, О77.Сумма, О77.Дельта, О77.Количество, ОстУТ.СуммаЭА КАК СуммаЭАУТ, ОстУТ.КоличествоАП КАК КоличествоАПУТ, ОстУТ.СуммаАП КАК СуммаАПУТ, ОстУТ.КоличествоУУ, ОстУТ.КоличествоЭА КАК КоличествоЭАУТ, ОстУТ.СуммаУУ, ОстУТ.Товар КАК Товар2, ОстУТ.КоличествоВиртуальный, ОстУТ.СуммаВиртуальный, Производство.Количество КАК КоличествоПроизводство ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ О77 КАК О77 ПО СпрНоменклатура.Код = О77.Товар ЛЕВОЕ СОЕДИНЕНИЕ ОстУТ КАК ОстУТ ПО (СпрНоменклатура.Код = О77.Товар) ЛЕВОЕ СОЕДИНЕНИЕ БП КАК БП ПО СпрНоменклатура.Код = БП.Товар ЛЕВОЕ СОЕДИНЕНИЕ Производство КАК Производство ПО СпрНоменклатура.Код = Производство.Товар ГДЕ (БП.КоличествоЭА <> 0 ИЛИ БП.КоличествоАП <> 0 ИЛИ БП.СуммаЭА <> 0 ИЛИ БП.СуммаАП <> 0 ИЛИ Производство.Количество <> 0 ИЛИ О77.Сумма <> 0 ИЛИ О77.Дельта <> 0 ИЛИ О77.Количество <> 0 ИЛИ ОстУТ.КоличествоЭА <> 0 ИЛИ ОстУТ.СуммаЭА <> 0 ИЛИ ОстУТ.КоличествоАП <> 0 ИЛИ ОстУТ.СуммаАП <> 0 ИЛИ ОстУТ.КоличествоУУ <> 0 ИЛИ ОстУТ.СуммаУУ <> 0 ИЛИ ОстУТ.КоличествоВиртуальный <> 0 ИЛИ ОстУТ.СуммаВиртуальный <> 0) Падает с ошибкой "недостаточно памяти". Как можно переписать? Как узнать какая их временных таблиц слишком раздувается? Нерпавильных связей не вижу. Можно ли сделать полное соединение 4-х таблиц без соединения со справочником? В таблицах значений остатки полученный по OLE и COM из еще двух баз. Задача сравнить остатки в трех базах. |
|||
1
Axel2009
19.08.11
✎
14:35
|
последняя
|
|||
2
unknown181538
19.08.11
✎
14:38
|
(1) Да. Если убрать последнюю, хватает памяти.
А что ж делать? |
|||
3
unknown181538
19.08.11
✎
14:42
|
Если удалить временную таблицу(в данном случае первую только), память сразу освободится?
|
|||
4
Axel2009
19.08.11
✎
14:42
|
сворачивать остатки надо прежде чем соединять. перемножений записей куча.
|
|||
5
unknown181538
19.08.11
✎
14:45
|
(4) Остатки полученные из виртуальной таблицы и так должны быть свернуты. Даже и в этом случае, по-моему.
Таблицы значений и так свернуты. |
|||
6
unregistered
19.08.11
✎
14:47
|
Зачем отдельные ресурсы на каждую базу?
почему нельзя бало сделать "База-источник" - измерение, Количество и Сумма - ресурсы. |
|||
7
ANDRU48
19.08.11
✎
14:49
|
64 битный сервак 2008, побольше в нем памяти и хороший проц.
|
|||
8
GenV
19.08.11
✎
14:49
|
(5) Сначала у тебя будет 4 кратное соединение, а потом только условия наложатся на все это безобразие. Почему сразу условие на таблицы не наложить?
|
|||
9
unknown181538
19.08.11
✎
14:53
|
(6)Постобработка сложнее будет. Разные склады и организации имеют разный смысл.
Хотя можно попробовать "ОБЪЕДИНИТЬ ВСЕ"и свернуть. (8) Мне просто нужно полное соединение 4-х таблиц. Условие - то,что есть остатки |
|||
10
TENSOR
19.08.11
✎
14:57
|
Можно попробовать левые соединения делать по порядку, а не сразу все\
|
|||
11
Alexandr Puzakov
19.08.11
✎
14:57
|
Ахтунг! В первом запросе пакета запихал во временную таблицу целый регистр, во втором запросе пакета соединяешь виртуальную таблицу со временной (не есть гуд!), потом фигачишь данные во временные таблицы из таблиц значений фиг знает какого размера...
|
|||
12
unknown181538
19.08.11
✎
14:58
|
(11) А как надо?
|
|||
13
GenV
19.08.11
✎
14:58
|
(9) Что мешает условие, что есть остатки наложить !до! помещения во временную таблицу?
|
|||
14
unknown181538
19.08.11
✎
15:00
|
(13) Нет, просто не придумал иначе как сделать соединение 4-х таблиц, которые все с остатками, кроме как соединить со справочником.
|
|||
15
Alexandr Puzakov
19.08.11
✎
15:03
|
(12)
Совершенно незачем пихать весь регистр во временную таблицу, ведь можно соединить прямо с ним, виртуальную таблицу ОстаткиТоваров лучше поместить во временную таблицу и проиндексировать по номенклатуре. Вот потом все это дело можно уже соединять. |
|||
16
Axel2009
19.08.11
✎
15:07
|
(14) вот сделай что додумал в (9) в первой части.
|
|||
17
unknown181538
19.08.11
✎
15:07
|
(15) Но ведь все равно будут выбраны все записи из регистра. А он используется два раза. Из индексированной ВТ должно читаться быстрее, чем с диска.
|
|||
18
unknown181538
19.08.11
✎
15:07
|
(16)Пробую.
|
|||
19
unknown181538
19.08.11
✎
15:08
|
Вроде получилось, всем спасибо.
|
|||
20
Axel2009
19.08.11
✎
15:08
|
(17) а ВТ где хранится по твоему?
|
|||
21
unknown181538
19.08.11
✎
17:50
|
(20) ВТ может и в ОЗУ остаться.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |