|
Запрос. При выполнении выскакивает "Недостаточно памяти". | ☑ | ||
---|---|---|---|---|
0
Pro-tone
05.08.11
✎
17:03
|
Есть запрос, который я составил опираясь на помощь людей в этой ветке v8: Нужна помощь с запросом.
Только запрос идет немного в другой функции, но принцип тот же. Вот текст: "ВЫБРАТЬ | НДСНачисленныйОстатки.СчетФактура КАК СчетФактура, | ЕСТЬNULL(НДСНачисленныйОстатки.СчетФактура.Дата, &КонецПериода) КАК СчетФактураДата, | ВЫБОР | КОГДА ЕСТЬNULL(НДСНачисленныйОстатки.СчетФактура.Дата, &КонецПериода) >= &Начало2006Года | ТОГДА &МоментОпределения_ПоОтгрузке | ИНАЧЕ ЕСТЬNULL(УчетнаяПолитикаОрганизаций.МоментОпределенияНалоговойБазыНДС, &МоментОпределения_ПоОтгрузке) | КОНЕЦ КАК МоментОпределенияНалоговойБазыНДС, | НДСНачисленныйОстатки.ВидЦенности, | НДСНачисленныйОстатки.СтавкаНДС, | НДСНачисленныйОстатки.Покупатель, | СУММА(ЕСТЬNULL(НДСНачисленныйОстатки.СуммаБезНДСОстаток, 0) - ЕСТЬNULL(НДСРеализация0Остатки.СуммаБезНДСОстаток, 0)) КАК СуммаБезНДС, | СУММА(ЕСТЬNULL(НДСНачисленныйОстатки.НДСОстаток, 0) - ЕСТЬNULL(НДСРеализация0Остатки.НДСОстаток, 0)) КАК СуммаНДС, | СУММА(ЕСТЬNULL(НДСНачисленныйОстатки.СуммаБезНДСОстаток, 0) - ЕСТЬNULL(НДСРеализация0Остатки.СуммаБезНДСОстаток, 0) + ЕСТЬNULL(НДСНачисленныйОстатки.НДСОстаток, 0) - ЕСТЬNULL(НДСРеализация0Остатки.НДСОстаток, 0)) КАК СуммаСНДС, | ВЫБОР | КОГДА НДСНачисленныйОстатки.ВидЦенности = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.НалоговыйАгентКомитент) | ТОГДА НДСНачисленныйОстатки.ДоговорКонтрагента | ИНАЧЕ НЕОПРЕДЕЛЕНО | КОНЕЦ КАК ДоговорКонтрагента |ПОМЕСТИТЬ ВТ1 |ИЗ | РегистрНакопления.НДСНачисленный.Остатки( | &КонецПериодаГраница, | Организация = &Организация | И (НЕ ВидНачисления В (&ИсключаемыеВидыНачисления))) КАК НДСНачисленныйОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НДСРеализация0.Остатки(&КонецПериодаГраница, Организация = &Организация) КАК НДСРеализация0Остатки | ПО НДСНачисленныйОстатки.СчетФактура = НДСРеализация0Остатки.СчетФактура | И НДСНачисленныйОстатки.ВидЦенности = НДСРеализация0Остатки.ВидЦенности | И НДСНачисленныйОстатки.СтавкаНДС = НДСРеализация0Остатки.СтавкаНДС | И НДСНачисленныйОстатки.Покупатель = НДСРеализация0Остатки.Покупатель | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчетнаяПолитикаОрганизаций КАК УчетнаяПолитикаОрганизаций | ПО (УчетнаяПолитикаОрганизаций.Организация = НДСНачисленныйОстатки.Организация) | И (УчетнаяПолитикаОрганизаций.Период В | (ВЫБРАТЬ | МАКСИМУМ(УчетнаяПолитикаОрганизаций.Период) КАК Период | ИЗ | РегистрСведений.УчетнаяПолитикаОрганизаций КАК УчетнаяПолитикаОрганизаций | ГДЕ | ЕСТЬNULL(НДСНачисленныйОстатки.СчетФактура.Дата, &КонецПериода) >= УчетнаяПолитикаОрганизаций.Период | И УчетнаяПолитикаОрганизаций.Организация = НДСНачисленныйОстатки.Организация)) |ГДЕ | НДСНачисленныйОстатки.СчетФактура.Дата >= &НачалоПериода | |СГРУППИРОВАТЬ ПО | НДСНачисленныйОстатки.ВидЦенности, | НДСНачисленныйОстатки.СчетФактура, | НДСНачисленныйОстатки.СтавкаНДС, | НДСНачисленныйОстатки.Покупатель, | ЕСТЬNULL(НДСНачисленныйОстатки.СчетФактура.Дата, &КонецПериода), | ВЫБОР | КОГДА ЕСТЬNULL(НДСНачисленныйОстатки.СчетФактура.Дата, &КонецПериода) >= &Начало2006Года | ТОГДА &МоментОпределения_ПоОтгрузке | ИНАЧЕ ЕСТЬNULL(УчетнаяПолитикаОрганизаций.МоментОпределенияНалоговойБазыНДС, &МоментОпределения_ПоОтгрузке) | КОНЕЦ, | ВЫБОР | КОГДА НДСНачисленныйОстатки.ВидЦенности = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.НалоговыйАгентКомитент) | ТОГДА НДСНачисленныйОстатки.ДоговорКонтрагента | ИНАЧЕ НЕОПРЕДЕЛЕНО | КОНЕЦ | |ИМЕЮЩИЕ | (НЕ СУММА(ЕСТЬNULL(НДСНачисленныйОстатки.СуммаБезНДСОстаток, 0) - ЕСТЬNULL(НДСРеализация0Остатки.СуммаБезНДСОстаток, 0) + ЕСТЬNULL(НДСНачисленныйОстатки.НДСОстаток, 0) - ЕСТЬNULL(НДСРеализация0Остатки.НДСОстаток, 0)) = 0) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ1.СчетФактура КАК СчетФактура, | ВТ1.СчетФактураДата КАК СчетФактураДата, | ВТ1.МоментОпределенияНалоговойБазыНДС, | ВТ1.ВидЦенности, | ВТ1.СтавкаНДС, | ВТ1.СуммаНДС КАК СуммаНДС, | ВЫБОР | КОГДА ХозрасчетныйОбороты.СуммаОборот > 0 | ТОГДА ВТ1.СуммаБезНДС - ХозрасчетныйОбороты.СуммаОборот | ИНАЧЕ ВТ1.СуммаБезНДС | КОНЕЦ КАК СуммаБезНДС, | ВТ1.Покупатель, | ВТ1.СуммаСНДС КАК СуммаСНДС, | ВТ1.ДоговорКонтрагента |ИЗ | ВТ1 КАК ВТ1, | РегистрБухгалтерии.Хозрасчетный.Обороты(, &КонецПериодаГраница, Регистратор, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСРазнымиДебиторамиИКредиторами)), , , , ) КАК ХозрасчетныйОбороты | |УПОРЯДОЧИТЬ ПО | СчетФактураДата, | СчетФактура |ИТОГИ | СУММА(СуммаНДС), | СУММА(СуммаБезНДС), | СУММА(СуммаСНДС) |ПО | СчетФактура"; Памяти у меня очень много - 16 Гб. Процесс доедает свои 1,8 положенные Гб и выкидывает что ему не хватает памяти. Как мне оптимизировать запрос чтобы хватало ? |
|||
1
Buster007
05.08.11
✎
17:07
|
|ВЫБРАТЬ
| ВТ1.СчетФактура КАК СчетФактура, | ВТ1.СчетФактураДата КАК СчетФактураДата, | ВТ1.МоментОпределенияНалоговойБазыНДС, | ВТ1.ВидЦенности, | ВТ1.СтавкаНДС, | ВТ1.СуммаНДС КАК СуммаНДС, | ВЫБОР | КОГДА ХозрасчетныйОбороты.СуммаОборот > 0 | ТОГДА ВТ1.СуммаБезНДС - ХозрасчетныйОбороты.СуммаОборот | ИНАЧЕ ВТ1.СуммаБезНДС | КОНЕЦ КАК СуммаБезНДС, | ВТ1.Покупатель, | ВТ1.СуммаСНДС КАК СуммаСНДС, | ВТ1.ДоговорКонтрагента |ИЗ | ВТ1 КАК ВТ1, | РегистрБухгалтерии.Хозрасчетный.Обороты(, &КонецПериодаГраница, Регистратор, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСРазнымиДебиторамиИКредиторами)), , , , ) КАК ХозрасчетныйОбороты | |УПОРЯДОЧИТЬ ПО | СчетФактураДата, | СчетФактура это что-то непонятное... |
|||
2
Fragster
гуру
05.08.11
✎
17:08
|
поставь условие соединения нормальное
|
|||
3
golden-pack
05.08.11
✎
17:09
|
Так ВЫборка = Запрос.ВЫполнить().Выбрать();
ИЛИ ХХХ = ЗАпрос.выполнить(); ВЫборка = ХХХ.ВЫбрать(); ???? |
|||
4
Господин ПЖ
05.08.11
✎
17:09
|
сделать так чтобы он выполнялся на сервере
|
|||
5
Pro-tone
05.08.11
✎
17:09
|
сорри часть кода при копировании пропала, вот
ВЫБРАТЬ НДСРеализация0Остатки.Организация, НДСРеализация0Остатки.СчетФактура КАК СчетФактура, ЕСТЬNULL(НДСРеализация0Остатки.СчетФактура.Дата, &КонецПериода) КАК СчетФактураДата, ВЫБОР КОГДА ЕСТЬNULL(НДСРеализация0Остатки.СчетФактура.Дата, &КонецПериода) >= &Начало2006Года ТОГДА &МоментОпределения_ПоОтгрузке ИНАЧЕ ЕСТЬNULL(УчетнаяПолитикаОрганизаций.МоментОпределенияНалоговойБазыНДС, &МоментОпределения_ПоОтгрузке) КОНЕЦ КАК МоментОпределенияНалоговойБазыНДС, НДСРеализация0Остатки.ВидЦенности, НДСРеализация0Остатки.СтавкаНДС, ЕСТЬNULL(НДСРеализация0Остатки.СуммаБезНДСОстаток, 0) КАК СуммаБезНДС, ЕСТЬNULL(НДСРеализация0Остатки.НДСОстаток, 0) КАК СуммаНДС, ЕСТЬNULL(НДСРеализация0Остатки.СуммаБезНДСОстаток, 0) + ЕСТЬNULL(НДСРеализация0Остатки.НДСОстаток, 0) КАК СуммаСНДС, НДСРеализация0Остатки.Состояние, НДСНачисленныйОстатки.Покупатель, НДСНачисленныйОстатки.СуммаБезНДСОстаток + НДСНачисленныйОстатки.НДСОстаток КАК СуммаСНДС_НачисленоВсего, ВЫБОР КОГДА НДСНачисленныйОстатки.СуммаБезНДСОстаток + НДСНачисленныйОстатки.НДСОстаток < НДСРеализация0Остатки.СуммаБезНДСОстаток + НДСРеализация0Остатки.НДСОстаток И (НЕ НДСРеализация0Остатки.СуммаБезНДСОстаток + НДСРеализация0Остатки.НДСОстаток < 0) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ТребуетсяКорректировка, ВЫБОР КОГДА НДСНачисленныйОстатки.ВидЦенности = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.НалоговыйАгентКомитент) ТОГДА НДСНачисленныйОстатки.ДоговорКонтрагента ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ КАК ДоговорКонтрагента ПОМЕСТИТЬ ВТ1 ИЗ РегистрНакопления.НДСРеализация0.Остатки( &КонецПериодаГраница, Организация = &Организация И Состояние В (&ОтрабатываемыеСостояния)) КАК НДСРеализация0Остатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчетнаяПолитикаОрганизаций КАК УчетнаяПолитикаОрганизаций ПО (УчетнаяПолитикаОрганизаций.Организация = НДСРеализация0Остатки.Организация) И (УчетнаяПолитикаОрганизаций.Период В (ВЫБРАТЬ МАКСИМУМ(УчетнаяПолитикаОрганизаций.Период) КАК Период ИЗ РегистрСведений.УчетнаяПолитикаОрганизаций КАК УчетнаяПолитикаОрганизаций ГДЕ ЕСТЬNULL(НДСРеализация0Остатки.СчетФактура.Дата, &КонецПериода) >= УчетнаяПолитикаОрганизаций.Период И УчетнаяПолитикаОрганизаций.Организация = НДСРеализация0Остатки.Организация)) ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.НДСНачисленный.Остатки(&КонецПериодаГраница, Организация = &Организация) КАК НДСНачисленныйОстатки ПО НДСРеализация0Остатки.СчетФактура = НДСНачисленныйОстатки.СчетФактура И НДСРеализация0Остатки.ВидЦенности = НДСНачисленныйОстатки.ВидЦенности И НДСРеализация0Остатки.СтавкаНДС = НДСНачисленныйОстатки.СтавкаНДС ГДЕ (НДСРеализация0Остатки.СуммаБезНДСОстаток > 0 ИЛИ НДСРеализация0Остатки.НДСОстаток > 0) И НДСРеализация0Остатки.СчетФактура.Дата >= &НачалоПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ1.Организация, ВТ1.СчетФактура КАК СчетФактура, ВТ1.СчетФактураДата КАК СчетФактураДата, ВТ1.МоментОпределенияНалоговойБазыНДС, ВТ1.ВидЦенности, ВТ1.СтавкаНДС, ВТ1.СуммаНДС КАК СуммаНДС, ВТ1.СуммаСНДС КАК СуммаСНДС, ВТ1.Состояние, ВТ1.Покупатель, ВТ1.СуммаСНДС_НачисленоВсего, ВТ1.ТребуетсяКорректировка, ВТ1.ДоговорКонтрагента, ВЫБОР КОГДА ХозрасчетныйОбороты.СуммаОборот > 0 ТОГДА ВТ1.СуммаБезНДС - ХозрасчетныйОбороты.СуммаОборот ИНАЧЕ ВТ1.СуммаБезНДС КОНЕЦ КАК СуммаБезНДС ИЗ ВТ1 КАК ВТ1 ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(, , Регистратор, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСРазнымиДебиторамиИКредиторами)), , , , ) КАК ХозрасчетныйОбороты ПО ВТ1.СчетФактура = ХозрасчетныйОбороты.Регистратор СГРУППИРОВАТЬ ПО ВТ1.Организация, ВТ1.СчетФактура, ВТ1.СчетФактураДата, ВТ1.МоментОпределенияНалоговойБазыНДС, ВТ1.ВидЦенности, ВТ1.СтавкаНДС, ВТ1.СуммаНДС, ВТ1.СуммаСНДС, ВТ1.Состояние, ВТ1.Покупатель, ВТ1.СуммаСНДС_НачисленоВсего, ВТ1.ТребуетсяКорректировка, ВТ1.ДоговорКонтрагента, ВЫБОР КОГДА ХозрасчетныйОбороты.СуммаОборот > 0 ТОГДА ВТ1.СуммаБезНДС - ХозрасчетныйОбороты.СуммаОборот ИНАЧЕ ВТ1.СуммаБезНДС КОНЕЦ УПОРЯДОЧИТЬ ПО СчетФактураДата, СчетФактура ИТОГИ СУММА(СуммаНДС), СУММА(СуммаСНДС), СУММА(СуммаБезНДС) ПО СчетФактура |
|||
6
Fragster
гуру
05.08.11
✎
17:10
|
(4) -> (2). не поможет, если много данных
|
|||
7
rs_trade
05.08.11
✎
17:11
|
(0) в консоли выполняешь запрос?
|
|||
8
Pro-tone
05.08.11
✎
17:11
|
(4) у нас 8.1, файловая
|
|||
9
Pro-tone
05.08.11
✎
17:11
|
(0) в консоли пробовал только по реализации0, по аналогии с ней сделал (5)
|
|||
10
Pro-tone
05.08.11
✎
17:16
|
я добавлю, строк запрос без ВТ1 дает 1530
|
|||
11
Pro-tone
05.08.11
✎
17:24
|
Мой косяк, реально не поставил соединение в (0) ! Сейчас проверил, по реализации0 в запросе есть соединение, а Функция ЗаполнитьНДСНачисленныйПоДаннымРегистраНДСНачисленный
там нет соединения ! (1) (2) спасибо что увидели ! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |