Имя: Пароль:
1C
1С v8
Запрос. При выполнении выскакивает "Недостаточно памяти".
,
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) спасибо что увидели !
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший