Имя: Пароль:
1C
1С v8
Выборка документов. Недостаточно памяти
,
0 ИУБиПовиц
 
16.08.12
13:03
Здравствуйт. Имеется дописанная БП 2.0.33.7 на базе платформы 8.2.15.301. Имеется документ график. В нем поля контрагент, договор и тч в которой дата платежа и сальдо. по каждому договору может быть несколько графиков, последний -актуальный. Мне нужно выяснить на сколько изменились обязательства клиентов в суммарном выражении. Документов не так много, но вылетает ошибка недостаточно памяти на периоде в год.
Вот сам запрос:
ВЫБРАТЬ
   Изм_ГрафикЗаймаСведенияОЗайме.Ссылка КАК Ссылка,
   Изм_ГрафикЗаймаСведенияОЗайме.ДатаПлатежа,
   Изм_ГрафикЗаймаСведенияОЗайме.Сальдо
ПОМЕСТИТЬ графики
ИЗ
   (ВЫБРАТЬ
       Изм_ГрафикЗаймаСведенияОЗайме.Ссылка КАК Ссылка,
       МАКСИМУМ(Изм_ГрафикЗаймаСведенияОЗайме.ДатаПлатежа) КАК ДатаПлатежа
   ИЗ
       Документ.Изм_ГрафикЗайма.СведенияОЗайме КАК Изм_ГрафикЗаймаСведенияОЗайме
   ГДЕ
       Изм_ГрафикЗаймаСведенияОЗайме.Ссылка.Проведен = ИСТИНА
       И Изм_ГрафикЗаймаСведенияОЗайме.ДатаПлатежа <= &ПериодПо
   
   СГРУППИРОВАТЬ ПО
       Изм_ГрафикЗаймаСведенияОЗайме.Ссылка) КАК Максимумдата
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.Изм_ГрафикЗайма.СведенияОЗайме КАК Изм_ГрафикЗаймаСведенияОЗайме
       ПО Максимумдата.ДатаПлатежа = Изм_ГрафикЗаймаСведенияОЗайме.ДатаПлатежа
ГДЕ
   Изм_ГрафикЗаймаСведенияОЗайме.Ссылка.Проведен = ИСТИНА
   И Изм_ГрафикЗаймаСведенияОЗайме.ДатаПлатежа <= &ПериодПо
   
СГРУППИРОВАТЬ ПО
   Изм_ГрафикЗаймаСведенияОЗайме.Ссылка,
   Изм_ГрафикЗаймаСведенияОЗайме.ДатаПлатежа,
   Изм_ГрафикЗаймаСведенияОЗайме.Сальдо
;

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

СГРУППИРОВАТЬ ПО
   Изм_ГрафикЗайма.ДоговорКонтрагента,
   Изм_ГрафикЗайма.Организация,
   Изм_ГрафикЗайма.Контрагент,
   Изм_ГрафикЗайма.ПервДог,
   Изм_ГрафикЗайма.ПервичноеРаспределение,
   ЕСТЬNULL(графики.Сальдо, 0),
   Изм_ГрафикЗайма.ДоговорКонтрагента
;

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

СГРУППИРОВАТЬ ПО
   Изм_ГрафикЗайма.ДоговорКонтрагента,
   Изм_ГрафикЗайма.Ссылка,
   Изм_ГрафикЗайма.Организация,
   Изм_ГрафикЗайма.Контрагент,
   Изм_ГрафикЗайма.ПервДог,
   Изм_ГрафикЗайма.ПервичноеРаспределение,
   ЕСТЬNULL(графики.Сальдо, 0)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПервыйГрафик.ДоговорКонтрагента,
   ПервыйГрафик.Организация,
   ПервыйГрафик.Контрагент,
   ПервыйГрафик.ПервДог,
   ПервыйГрафик.ПервичноеРаспределение,
   последнийГрафик.Ссылка КАК ПоследнийДок,
   ПервыйГрафик.Ссылка КАК ПервыйДок,
   -(ПервыйГрафик.СуммаПервая - последнийГрафик.Суммаотсрочки) КАК Сумма
ИЗ
   графики КАК графики,
   ПервыйГрафик КАК ПервыйГрафик
       ПОЛНОЕ СОЕДИНЕНИЕ последнийГрафик КАК последнийГрафик
       ПО ПервыйГрафик.ДоговорКонтрагента = последнийГрафик.ДоговорКонтрагента
1 ИУБиПовиц
 
16.08.12
13:09
подозреваю, что дело в полном соединении первого и последнего графика
2 ИУБиПовиц
 
16.08.12
13:13
А все, разобрался.
3 lex-kex
 
16.08.12
13:14
Сам спросил, сам ответил и сам разобрался )
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн