|   |   | 
| 
 | Оптимизация запроса | ☑ | ||
|---|---|---|---|---|
| 0
    
        seraf 29.11.12✎ 16:15 | 
        Привет, как правильно во временную таблицу выбрать только субконто одного типа? Там и так по условию только один возможный. Думаю в этом причина сообщения "Недостаточно памяти" при соединении временной таблицы с другими регистрами
  ВЫБРАТЬ ХозрасчетныйОстаткиИОбороты.Субконто1 ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт, ХозрасчетныйОстаткиИОбороты.СуммаНУКонечныйОстатокДт, ПОМЕСТИТЬ ВремТаб ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты КАК ХозрасчетныйОстаткиИОбороты | |||
| 1
    
        Нуф-Нуф 29.11.12✎ 16:15 | 
        покажи весь запрос     | |||
| 2
    
        Нуф-Нуф 29.11.12✎ 16:15 | 
        поржем     | |||
| 3
    
        DrShad 29.11.12✎ 16:16 | 
        (2) +1     | |||
| 4
    
        Maxus43 29.11.12✎ 16:18 | 
        РегистрБухгалтерии.Хозрасчетный.Обороты(, , , , &ВидСубконто, , , )     | |||
| 5
    
        Лефмихалыч 29.11.12✎ 16:24 | 
        +(4) даже если один вид, то так
  ОстаткиИОбороты(, , , , , ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура), ) | |||
| 6
    
        seraf 29.11.12✎ 16:24 | 
        (4) пасиб
  (2) это пройдет | |||
| 7
    
        seraf 29.11.12✎ 16:24 | 
        (5) ага спасибо     | |||
| 8
    
        Maxus43 29.11.12✎ 16:26 | 
        (6) тока как это спасёт от ошибки я хз, запрос действительно адский наверно     | |||
| 9
    
        seraf 29.11.12✎ 16:30 | 
        (8) ну щас проверю, ничего адского просто рег бух и пяток рс
  думаю что из-за обилия типов субконто1 вылетает | |||
| 10
    
        Maxus43 29.11.12✎ 16:31 | 
        (9) Юзай ВЫРАЗИТЬ, ибо (4)(5) не спасёт от "обилия типов", благо тип один     | |||
| 11
    
        seraf 29.11.12✎ 16:31 | 
        у меня с 3 гигами оперативы и 16 подкачки по крайней мере 1,7 отъедает и падает     | |||
| 12
    
        seraf 29.11.12✎ 16:31 | 
        (10) а, попробую     | |||
| 13
    
        Maxus43 29.11.12✎ 16:32 | 
        (12) 90% что Выразить будет достаточно. хотя не видя весь запрос - трудно судить     | |||
| 14
    
        seraf 29.11.12✎ 16:34 | 
        а так для справки, хоть и кривой запрос, 1с-ка только оперативу использует, размер подкачки не влияет?
  (13) пока не добавил пару соединений еще работал кое-как) | |||
| 15
    
        seraf 29.11.12✎ 16:45 | 
        хм, ну запрос конечно с Выразить должен был стать легче, но слетает всё равно
  ладно буду копать, может причина техническая | |||
| 16
    
        Buster007 29.11.12✎ 16:48 | 
        копай-копай ) может и до соединений докопаешь )
  а ваще 1ске пофиг сколько у тебя оперативки) | |||
| 17
    
        sapphire 29.11.12✎ 16:49 | 
        (13) Ну-ну. CAST будет применен ко всем записям... т.е. будет seek по таблице     | |||
| 18
    
        sapphire 29.11.12✎ 16:51 | 
        (0) Для полей составного типа используется 
  конструкция ССЫЛКА {Имя таблицы ссылочного типа}. Например, для поля с именем Субконто1 и номенклатуры выгляделобы так ГДЕ Субконто1 ССЫЛКА Справочник.Номенклатура | |||
| 19
    
        Maxus43 29.11.12✎ 17:02 | 
        (17) давно ли? вчера смотрел я на запросы с ССЫЛКА - скуль делает куеву тучу CASTов в WHERE     | |||
| 20
    
        Maxus43 29.11.12✎ 17:02 | 
        Запрос в студию полностью, иначе вобще ниочем всё     | |||
| 21
    
        Нуф-Нуф 29.11.12✎ 17:03 | 
        хоть поржем     | |||
| 22
    
        Maxus43 29.11.12✎ 17:07 | 
        (21) это пройдёт)     | |||
| 23
    
        seraf 29.11.12✎ 17:55 | 
        а как тут код в спойлер положить?     | |||
| 24
    
        seraf 29.11.12✎ 18:03 | 
        ладно так положу
  (2, 21) заодно порадую) ВЫБРАТЬ ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Справочник.ОсновныеСредства) КАК ОС, ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК Сумма1, ХозрасчетныйОстаткиИОбороты.СуммаНУКонечныйОстатокДт КАК Сумма2, Амортизация.СуммаКонечныйОстатокКт КАК Сумма3, Амортизация.СуммаНУКонечныйОстатокКт КАК Сумма4, Амортизация.СуммаОборотКт КАК Сумма7, Амортизация.СуммаНУОборотКт КАК Сумма6 ПОМЕСТИТЬ ОСТаб ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , , , Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновныеСредства)), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.ОсновныеСредства), ) КАК ХозрасчетныйОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , , , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИзносОсновныхСредств), , ) КАК Амортизация ПО ХозрасчетныйОстаткиИОбороты.Субконто1 = Амортизация.Субконто1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Справочник.НематериальныеАктивы) КАК НМА, ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК Сумма1, ХозрасчетныйОстаткиИОбороты.СуммаНУКонечныйОстатокДт КАК Сумма2, Амортизация.СуммаКонечныйОстатокКт КАК Сумма3, Амортизация.СуммаНУКонечныйОстатокКт КАК Сумма4, Амортизация.СуммаОборотКт КАК Сумма5, Амортизация.СуммаНУОборотКт КАК Сумма6 ПОМЕСТИТЬ НМАТаб ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , , , Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.НематериальныеАктивы)), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.НематериальныеАктивы), ) КАК ХозрасчетныйОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , , , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.НакопленнаяАмортизацияНематериальныхАктивов), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.НематериальныеАктивы), ) КАК Амортизация ПО ХозрасчетныйОстаткиИОбороты.Субконто1 = Амортизация.Субконто1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОСТаб.ОС.Код КАК Код, ОСТаб.ОС.Наименование КАК Наименование, ОСТаб.ОС КАК Актив ИЗ ОСТаб КАК ОСТаб ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыАмортизацииОСБухгалтерскийУчет.СрезПоследних КАК ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних ПО ОСТаб.ОС = ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство, РегистрСведений.ПараметрыАмортизацииОСНалоговыйУчет.СрезПоследних КАК ПараметрыАмортизацииОСНалоговыйУчетСрезПоследних ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ НМАТаб.НМА.Код, НМАТаб.НМА.Наименование, НМАТаб.НМА ИЗ НМАТаб КАК НМАТаб ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияНМАОрганизаций КАК СостоянияНМАОрганизаций ПО НМАТаб.НМА = СостоянияНМАОрганизаций.НематериальныйАктив ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПервоначальныеСведенияНМАБухгалтерскийУчет.СрезПоследних КАК ПервоначальныеСведенияНМАБухгалтерскийУчетСрезПоследних ПО НМАТаб.НМА = ПервоначальныеСведенияНМАБухгалтерскийУчетСрезПоследних.НематериальныйАктив, РегистрСведений.ПервоначальныеСведенияНМАНалоговыйУчет.СрезПоследних КАК ПервоначальныеСведенияНМАНалоговыйУчетСрезПоследних | |||
| 25
    
        seraf 29.11.12✎ 18:04 | 
        вот такое чудо вылетает     | |||
| 26
    
        hhhh 29.11.12✎ 18:06 | 
        (25) а чего периода нет в виртуальных таблицах? За все года что ли данные перебираешь?     | |||
| 27
    
        Fragster гуру 29.11.12✎ 18:09 | 
        кстати только у меня виртуальная таблица ДвиженияССубконто юзает некластерный индекс (без периода) внутрях?     | |||
| 28
    
        Fragster гуру 29.11.12✎ 18:10 | 
        8.2.16     | |||
| 29
    
        seraf 29.11.12✎ 18:11 | 
        (26) период в параметрах скд не явно указывается
  я беру остатки и обороты за год | |||
| 30
    
        seraf 29.11.12✎ 18:13 | 
        мне пока не очень понятно что в запросе убивает систему.. базу протестировал     | |||
| 31
    
        Fragster гуру 29.11.12✎ 18:15 | 
        Счет В ИЕРАРХИИ замени на получение всех счетов во временную таблицу, а ее заюзай параметром в виртуальной.
  проиндексируй ОСТаб.ОС и НМАТаб.НМА | |||
| 32
    
        Нуф-Нуф 29.11.12✎ 18:18 | 
        В иерархии, соединение с виртуальными таблицами.. ужаснах     | |||
| 33
    
        seraf 29.11.12✎ 18:20 | 
        сейчас попробую убрать в иерархии, не знал что это так страшно     | |||
| 34
    
        Нуф-Нуф 29.11.12✎ 18:23 | 
        Посмотришь во что твой запрос превращается на скуле - ваще спать не будешь     | |||
| 35
    
        seraf 29.11.12✎ 18:28 | 
        ну по соединениям почитал что-то.. выходит нужно вообще убрать соединения с виртуальными таблицами и всё во временные выносить, а уж потом соединяться?
  а чем в иерархии плохое условие не понял | |||
| 36
    
        seraf 29.11.12✎ 18:30 | 
        ну суть своих ошибок вроде уловил)     | |||
| 37
    
        seraf 29.11.12✎ 18:47 | 
        (31) а небольшой пример не подскажешь как временную таблицу использовать параметром виртуальной
  чет я завяз | |||
| 38
    
        Fragster гуру 29.11.12✎ 18:57 | 
        (37) (,,,,,,счет в (выбрать счета.Счет из счета),,,,,,,)     | |||
| 39
    
        Fragster гуру 29.11.12✎ 18:58 | 
        (34) посмотри в скуле (27). меня глючит, или в 8.1 было по другому (соединение по кластерному индексу)?     | |||
| 40
    
        seraf 29.11.12✎ 19:12 | 
        (38) в скд у меня такая конструкция не работает     | |||
| 41
    
        Fragster гуру 29.11.12✎ 20:18 | 
        (40) да, не повезло     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |