Имя: Пароль:
1C
1С v8
Нужны советы по оптимизации запроса
0 Консультант Баранов
 
10.09.19
15:33
Есть запрос. Контроль списания МЗ по физ. таблицам бухгалтерии. Как можно ускорить?


ВЫБРАТЬ
    взДанныеВиртуальных.Счет КАК Счет
ПОМЕСТИТЬ втСпСчетов
ИЗ
    (ВЫБРАТЬ
        Хозрасчетный.Ссылка КАК Счет
    ИЗ
        ПланСчетов.Хозрасчетный КАК Хозрасчетный
    ГДЕ
        Хозрасчетный.ВидыСубконто.ВидСубконто = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
        И Хозрасчетный.ВидыСубконто.ВидСубконто = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады)) КАК взДанныеВиртуальных
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйСубконто.Период КАК Период,
    ХозрасчетныйСубконто.Регистратор КАК Регистратор,
    ХозрасчетныйСубконто.ВидДвижения КАК ВидДвижения,
    ХозрасчетныйСубконто.Вид КАК Вид,
    ХозрасчетныйСубконто.Значение КАК Значение,
    ХозрасчетныйСубконто.НомерСтроки КАК НомерСтроки
ПОМЕСТИТЬ втЗапСубконто
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто
ГДЕ
    (ХозрасчетныйСубконто.Регистратор, ХозрасчетныйСубконто.НомерСтроки) В
            (ВЫБРАТЬ
                втЗапСчетов.Регистратор КАК Регистратор,
                втЗапСчетов.НомерСтроки КАК НомерСтроки
            ИЗ
                втЗапСчетов КАК втЗапСчетов)
    И ХозрасчетныйСубконто.Вид В (ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    взОборотыФизДт.Период КАК Период,
    взОборотыФизДт.Счет КАК Счет,
    втЗапСубконтоНом.Значение КАК Субконто1,
    втЗапСубконтоСклад.Значение КАК Субконто2,
    взОборотыФизДт.Количество КАК Количество,
    взОборотыФизДт.Сумма КАК Сумма,
    взОборотыФизДт.Регистратор КАК Регистратор,
    взОборотыФизДт.МоментВремени КАК МоментВремени
ПОМЕСТИТЬ втОбДт
ИЗ
    (ВЫБРАТЬ
        втДанныеХоз.СчетДт КАК Счет,
        втДанныеХоз.КоличествоДт КАК Количество,
        втДанныеХоз.Сумма КАК Сумма,
        втДанныеХоз.Регистратор КАК Регистратор,
        втДанныеХоз.НомерСтроки КАК НомерСтроки,
        втДанныеХоз.Период КАК Период,
        втДанныеХоз.МоментВремени КАК МоментВремени
    ИЗ
        втЗапСчетов КАК втДанныеХоз
    ГДЕ
        втДанныеХоз.СчетДт В
                (ВЫБРАТЬ
                    втСпСчетов.Счет КАК Счет
                ИЗ
                    втСпСчетов КАК втСпСчетов)) КАК взОборотыФизДт
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗапСубконто КАК втЗапСубконтоНом
        ПО взОборотыФизДт.Регистратор = втЗапСубконтоНом.Регистратор
            И взОборотыФизДт.НомерСтроки = втЗапСубконтоНом.НомерСтроки
            И (втЗапСубконтоНом.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура))
            И (втЗапСубконтоНом.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет))
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗапСубконто КАК втЗапСубконтоСклад
        ПО взОборотыФизДт.Регистратор = втЗапСубконтоСклад.Регистратор
            И взОборотыФизДт.НомерСтроки = втЗапСубконтоСклад.НомерСтроки
            И (втЗапСубконтоСклад.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады))
            И (втЗапСубконтоСклад.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    взОборотыФизКт.Период КАК Период,
    взОборотыФизКт.Счет КАК Счет,
    втЗапСубконтоНом.Значение КАК Субконто1,
    втЗапСубконтоСклад.Значение КАК Субконто2,
    взОборотыФизКт.Количество КАК Количество,
    взОборотыФизКт.Сумма КАК Сумма,
    взОборотыФизКт.Регистратор КАК Регистратор,
    взОборотыФизКт.МоментВремени КАК МоментВремени
ПОМЕСТИТЬ втОбКт
ИЗ
    (ВЫБРАТЬ
        втДанныеХоз.СчетКт КАК Счет,
        втДанныеХоз.КоличествоКт КАК Количество,
        втДанныеХоз.Сумма КАК Сумма,
        втДанныеХоз.Регистратор КАК Регистратор,
        втДанныеХоз.НомерСтроки КАК НомерСтроки,
        втДанныеХоз.Период КАК Период,
        втДанныеХоз.МоментВремени КАК МоментВремени
    ИЗ
        втЗапСчетов КАК втДанныеХоз
    ГДЕ
        втДанныеХоз.СчетКт В
                (ВЫБРАТЬ
                    втСпСчетов.Счет КАК Счет
                ИЗ
                    втСпСчетов КАК втСпСчетов)) КАК взОборотыФизКт
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗапСубконто КАК втЗапСубконтоНом
        ПО взОборотыФизКт.Регистратор = втЗапСубконтоНом.Регистратор
            И взОборотыФизКт.НомерСтроки = втЗапСубконтоНом.НомерСтроки
            И (втЗапСубконтоНом.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура))
            И (втЗапСубконтоНом.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит))
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗапСубконто КАК втЗапСубконтоСклад
        ПО взОборотыФизКт.Регистратор = втЗапСубконтоСклад.Регистратор
            И взОборотыФизКт.НомерСтроки = втЗапСубконтоСклад.НомерСтроки
            И (втЗапСубконтоСклад.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады))
            И (втЗапСубконтоСклад.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    взДанныеФизНачОстаток.Счет КАК Счет,
    взДанныеФизНачОстаток.Субконто1 КАК Субконто1,
    взДанныеФизНачОстаток.Субконто2 КАК Субконто2,
    взДанныеФизНачОстаток.Количество КАК Количество,
    взДанныеФизНачОстаток.Сумма КАК Сумма
ПОМЕСТИТЬ втОстНаНачПериода
ИЗ
    (ВЫБРАТЬ
        взФизХоз.Счет КАК Счет,
        взФизХоз.Субконто1 КАК Субконто1,
        взФизХоз.Субконто2 КАК Субконто2,
        СУММА(взФизХоз.КоличествоНач) КАК КоличествоНач,
        СУММА(взФизХоз.СуммаНач) КАК СуммаНач,
        СУММА(взФизХоз.Количество) КАК Количество,
        СУММА(взФизХоз.Сумма) КАК Сумма
    ИЗ
        (ВЫБРАТЬ
            втОбДт.Счет КАК Счет,
            втОбДт.Субконто1 КАК Субконто1,
            втОбДт.Субконто2 КАК Субконто2,
            втОбДт.Количество КАК КоличествоНач,
            втОбДт.Сумма КАК СуммаНач,
            втОбДт.Количество КАК Количество,
            втОбДт.Сумма КАК Сумма
        ИЗ
            втОбДт КАК втОбДт
        ГДЕ
            втОбДт.Период < &ПериодНачало
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            втОбКт.Счет,
            втОбКт.Субконто1,
            втОбКт.Субконто2,
            -втОбКт.Количество,
            -втОбКт.Сумма,
            -втОбКт.Количество,
            -втОбКт.Сумма
        ИЗ
            втОбКт КАК втОбКт
        ГДЕ
            втОбКт.Период < &ПериодНачало) КАК взФизХоз
    
    СГРУППИРОВАТЬ ПО
        взФизХоз.Счет,
        взФизХоз.Субконто1,
        взФизХоз.Субконто2) КАК взДанныеФизНачОстаток
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    взОборотыФиз.Счет КАК Счет,
    взОборотыФиз.Субконто1 КАК Субконто1,
    взОборотыФиз.Субконто2 КАК Субконто2,
    взОборотыФиз.Регистратор КАК Регистратор,
    взОборотыФиз.МоментВремени КАК МоментВремени,
    взОборотыФиз.Количество КАК Количество,
    взОборотыФиз.Сумма КАК Сумма
ПОМЕСТИТЬ втОбЗаПериод
ИЗ
    (ВЫБРАТЬ
        взФизХоз.Счет КАК Счет,
        взФизХоз.Субконто1 КАК Субконто1,
        взФизХоз.Субконто2 КАК Субконто2,
        СУММА(взФизХоз.КоличествоНач) КАК КоличествоНач,
        СУММА(взФизХоз.СуммаНач) КАК СуммаНач,
        взФизХоз.Регистратор КАК Регистратор,
        взФизХоз.МоментВремени КАК МоментВремени,
        СУММА(взФизХоз.Количество) КАК Количество,
        СУММА(взФизХоз.Сумма) КАК Сумма
    ИЗ
        (ВЫБРАТЬ
            втОбДт.Счет КАК Счет,
            втОбДт.Субконто1 КАК Субконто1,
            втОбДт.Субконто2 КАК Субконто2,
            втОбДт.Количество КАК КоличествоНач,
            втОбДт.Сумма КАК СуммаНач,
            втОбДт.Регистратор КАК Регистратор,
            втОбДт.МоментВремени КАК МоментВремени,
            втОбДт.Количество КАК Количество,
            втОбДт.Сумма КАК Сумма
        ИЗ
            втОбДт КАК втОбДт
        ГДЕ
            втОбДт.Период >= &ПериодНачало
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            втОбКт.Счет,
            втОбКт.Субконто1,
            втОбКт.Субконто2,
            -втОбКт.Количество,
            -втОбКт.Сумма,
            втОбКт.Регистратор,
            втОбКт.МоментВремени,
            -втОбКт.Количество,
            -втОбКт.Сумма
        ИЗ
            втОбКт КАК втОбКт
        ГДЕ
            втОбКт.Период >= &ПериодНачало) КАК взФизХоз
    
    СГРУППИРОВАТЬ ПО
        взФизХоз.Счет,
        взФизХоз.Субконто1,
        взФизХоз.Субконто2,
        взФизХоз.Регистратор,
        взФизХоз.МоментВремени) КАК взОборотыФиз
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    взОстакиПоДокументам.Счет КАК Счет,
    взОстакиПоДокументам.Субконто1 КАК Субконто1,
    взОстакиПоДокументам.Субконто2 КАК Субконто2,
    взОстакиПоДокументам.Регистратор КАК Регистратор,
    взОстакиПоДокументам.ОстатокКолвоНаДок КАК ОстатокКолвоНаДок,
    взОстакиПоДокументам.ОстатокСуммаНаДок КАК ОстатокСуммаНаДок
ПОМЕСТИТЬ втОстакиПоДокументам
ИЗ
    (ВЫБРАТЬ
        ВложенныйЗапрос.Счет КАК Счет,
        ВложенныйЗапрос.Субконто1 КАК Субконто1,
        ВложенныйЗапрос.Субконто2 КАК Субконто2,
        ВложенныйЗапрос.Регистратор КАК Регистратор,
        ВложенныйЗапрос.ОборотыКолвоНаДок + ЕСТЬNULL(втОстНаНачПериода.Количество, 0) КАК ОстатокКолвоНаДок,
        ВложенныйЗапрос.ОборотыСуммаНаДок + ЕСТЬNULL(втОстНаНачПериода.Сумма, 0) КАК ОстатокСуммаНаДок
    ИЗ
        (ВЫБРАТЬ
            втОбЗаПериод.Счет КАК Счет,
            втОбЗаПериод.Субконто1 КАК Субконто1,
            втОбЗаПериод.Субконто2 КАК Субконто2,
            СУММА(ЕСТЬNULL(втОбЗаПериод1.Количество, 0)) КАК ОборотыКолвоНаДок,
            СУММА(ЕСТЬNULL(втОбЗаПериод1.Сумма, 0)) КАК ОборотыСуммаНаДок,
            втОбЗаПериод.Регистратор КАК Регистратор
        ИЗ
            втОбЗаПериод КАК втОбЗаПериод
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ втОбЗаПериод КАК втОбЗаПериод1
                ПО втОбЗаПериод.Счет = втОбЗаПериод1.Счет
                    И втОбЗаПериод.Субконто1 = втОбЗаПериод1.Субконто1
                    И втОбЗаПериод.Субконто2 = втОбЗаПериод1.Субконто2
                    И втОбЗаПериод.МоментВремени > втОбЗаПериод1.МоментВремени
        
        СГРУППИРОВАТЬ ПО
            втОбЗаПериод.Счет,
            втОбЗаПериод.Субконто1,
            втОбЗаПериод.Субконто2,
            втОбЗаПериод.Регистратор) КАК ВложенныйЗапрос
            ЛЕВОЕ СОЕДИНЕНИЕ втОстНаНачПериода КАК втОстНаНачПериода
            ПО ВложенныйЗапрос.Счет = втОстНаНачПериода.Счет
                И ВложенныйЗапрос.Субконто1 = втОстНаНачПериода.Субконто1
                И ВложенныйЗапрос.Субконто2 = втОстНаНачПериода.Субконто2) КАК взОстакиПоДокументам
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВложенныйЗапрос.Счет КАК Счет,
    ВложенныйЗапрос.Субконто1 КАК Субконто1,
    ВложенныйЗапрос.Субконто2 КАК Субконто2,
    ВложенныйЗапрос.Регистратор КАК Регистратор,
    ВложенныйЗапрос.СуммаДокумента КАК СуммаДокумента,
    ВложенныйЗапрос.СуммаРассчитанная КАК СуммаРассчитанная,
    ВложенныйЗапрос.ОстатокКолвоНаДок КАК ОстатокКолвоНаДок,
    ВложенныйЗапрос.ОстатокСуммаНаДок КАК ОстатокСуммаНаДок,
    ВложенныйЗапрос.КоличествоДокумента КАК КоличествоДокумента
ИЗ
    (ВЫБРАТЬ
        взДвиженияКт.Счет КАК Счет,
        взДвиженияКт.Субконто1 КАК Субконто1,
        взДвиженияКт.Субконто2 КАК Субконто2,
        взДвиженияКт.Регистратор КАК Регистратор,
        ЕСТЬNULL(втОстакиПоДокументам.ОстатокКолвоНаДок, 0) КАК ОстатокКолвоНаДок,
        ЕСТЬNULL(втОстакиПоДокументам.ОстатокСуммаНаДок, 0) КАК ОстатокСуммаНаДок,
        взДвиженияКт.КоличествоДокумента КАК КоличествоДокумента,
        взДвиженияКт.СуммаДокумента КАК СуммаДокумента,
        ВЫРАЗИТЬ(ВЫБОР
                КОГДА ЕСТЬNULL(втОстакиПоДокументам.ОстатокКолвоНаДок, 0) <> 0
                    ТОГДА ЕСТЬNULL(втОстакиПоДокументам.ОстатокСуммаНаДок, 0) * взДвиженияКт.КоличествоДокумента / ЕСТЬNULL(втОстакиПоДокументам.ОстатокКолвоНаДок, 0)
                ИНАЧЕ 0
            КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаРассчитанная
    ИЗ
        (ВЫБРАТЬ
            втОбКт.Счет КАК Счет,
            втОбКт.Субконто1 КАК Субконто1,
            втОбКт.Субконто2 КАК Субконто2,
            СУММА(втОбКт.Количество) КАК КоличествоДокумента,
            СУММА(втОбКт.Сумма) КАК СуммаДокумента,
            втОбКт.Регистратор КАК Регистратор
        ИЗ
            втОбКт КАК втОбКт
        ГДЕ
            втОбКт.Период >= &ПериодНачало
        
        СГРУППИРОВАТЬ ПО
            втОбКт.Счет,
            втОбКт.Субконто1,
            втОбКт.Субконто2,
            втОбКт.Регистратор) КАК взДвиженияКт
            ЛЕВОЕ СОЕДИНЕНИЕ втОстакиПоДокументам КАК втОстакиПоДокументам
            ПО взДвиженияКт.Счет = втОстакиПоДокументам.Счет
                И взДвиженияКт.Субконто1 = втОстакиПоДокументам.Субконто1
                И взДвиженияКт.Субконто2 = втОстакиПоДокументам.Субконто2
                И взДвиженияКт.Регистратор = втОстакиПоДокументам.Регистратор) КАК ВложенныйЗапрос
ГДЕ
    ВЫБОР
            КОГДА ВложенныйЗапрос.СуммаДокумента - ВложенныйЗапрос.СуммаРассчитанная > 0.02
                ТОГДА ИСТИНА
            КОГДА ВложенныйЗапрос.СуммаДокумента - ВложенныйЗапрос.СуммаРассчитанная < -0.02
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ
1 tejije
 
10.09.19
15:37
(0) кто писал? какой у него стаж?  просто, для статистики своей.
2 Вафель
 
10.09.19
15:38
главный совет "попадайте в индекс"
3 Вафель
 
10.09.19
15:39
тут получается чувак решил вместо 1с свою виртальную таблицу по регистру бух делать
4 Консультант Баранов
 
10.09.19
15:40
(1) Я и писал.
5 tejije
 
10.09.19
15:41
(4) ставлю тебе 1!
6 tejije
 
10.09.19
15:42
(5) просто, без объяснения и разбора. Не нравится стиль запроса и все)
7 Консультант Баранов
 
10.09.19
15:42
(5) Можно изложить
1. Систему координат. 1 это наивыший бал?
2. Обосновать оценку.
8 piter3
 
10.09.19
15:42
Где режут глаза
9 sqr4
 
10.09.19
15:43
нашел связь по регистратору) Главное чтобы его ученики не увидели этот запрос.
10 Консультант Баранов
 
10.09.19
15:43
(8) Так таблицы же физические.
11 tejije
 
10.09.19
15:43
(7) естественно. выше уже некуда)
12 Консультант Баранов
 
10.09.19
15:44
(9) > нашел связь по регистратору

И что?
13 piter3
 
10.09.19
15:44
(10)Не соображу что-то,а зачем?
15 Консультант Баранов
 
10.09.19
15:44
(6) Покажи свои запросы дабы мы эстетическое удовольствие.
16 tejije
 
10.09.19
15:45
(14) тот момент, когда я с тобой согласен примерно на  190%
17 Консультант Баранов
 
10.09.19
15:46
(13) В базе регулярно проблемы с итоговыми таблицами.
18 Консультант Баранов
 
10.09.19
15:46
(14) > да сколько там типов в этом хреновом регистраторе, ты сероьезно чтоли, тебе блять и доказать чтоли еще надо, да иди ты нахуй.

Твое предложение?
19 piter3
 
10.09.19
15:47
(17) То есть не вариант сделать через них?Починить,дать в лоб ломальщику
20 Вафель
 
10.09.19
15:48
(17) то бишь ты не юзаешь итоговые таблицы и жалуешься на скорость?
21 piter3
 
10.09.19
15:48
(18) Выразить хотя бы.
22 piter3
 
10.09.19
15:48
Знаешь я наверное пас)
23 Консультант Баранов
 
10.09.19
15:48
(19) 1. Через них и так списание работает. Надо перепроверить.
2. Почему ломает - неизвестно.
24 Консультант Баранов
 
10.09.19
15:49
(20) > то бишь ты не юзаешь итоговые таблицы и жалуешься на скорость?

Не то чтобы жалуюсь. Но может можно оптимизировать. Попробую индексы проставить.
25 pasha_d
 
10.09.19
15:50
Особо не смотрел, но может стоит проиндексировать поля ВТ, по которым дальше идут соединения?
26 Вафель
 
10.09.19
15:51
(21) зачем выразить, если через точку ничего не получается?
27 Вафель
 
10.09.19
15:51
скуль или файловая версия?
28 Консультант Баранов
 
10.09.19
15:52
(27) постгрс
29 Tonik992
 
10.09.19
15:59
А что по плану, где просадка?
30 Вафель
 
10.09.19
16:02
вот это скорее всего тормозит
ВЫБРАТЬ
            втОбЗаПериод.Счет КАК Счет,
            втОбЗаПериод.Субконто1 КАК Субконто1,
            втОбЗаПериод.Субконто2 КАК Субконто2,
            СУММА(ЕСТЬNULL(втОбЗаПериод1.Количество, 0)) КАК ОборотыКолвоНаДок,
            СУММА(ЕСТЬNULL(втОбЗаПериод1.Сумма, 0)) КАК ОборотыСуммаНаДок,
            втОбЗаПериод.Регистратор КАК Регистратор
        ИЗ
            втОбЗаПериод КАК втОбЗаПериод
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ втОбЗаПериод КАК втОбЗаПериод1
                ПО втОбЗаПериод.Счет = втОбЗаПериод1.Счет
                    И втОбЗаПериод.Субконто1 = втОбЗаПериод1.Субконто1
                    И втОбЗаПериод.Субконто2 = втОбЗаПериод1.Субконто2
                    И втОбЗаПериод.МоментВремени > втОбЗаПериод1.МоментВремени
        
        СГРУППИРОВАТЬ ПО
            втОбЗаПериод.Счет,
            втОбЗаПериод.Субконто1,
            втОбЗаПериод.Субконто2,
            втОбЗаПериод.Регистратор
31 Консультант Баранов
 
10.09.19
16:08
(30) Это понятно. А как по другому остатки на каждый документ получить?
32 sqr4
 
10.09.19
16:10
33 тарам пам пам
 
10.09.19
16:13
(32) ты правда думаешь, что он осилит это при том, что он не смог просто использовать таблицу нач. остатков в своем запросе и считает остатки по физ таблице с начала времен?
34 sqr4
 
10.09.19
16:13
Как я понял, оптимизировать тут получится, только избавляясь от нарастающего итога
35 sqr4
 
10.09.19
16:13
(33) ему это и нужно, т.к итогам в его базе кранты, а исправлять он их не хочет
36 Консультант Баранов
 
10.09.19
16:22
(35) Не то чтобы кранты. Но бывают сбои.
37 sqr4
 
10.09.19
16:26
(36) а ну вот, либо со сбоями бороться. План действий у тебя есть. Либо переписывать как то с норм соединениями, либо отказываться от нарастающих итогов, либо находить и исправлять причины сбоев. Ведь в любом случае все остальное то работает не правильно! Хрен с ней, будет тут проверка, а еще в 100 местах тоже такую хрень будешь сувать? или это не твоя вотчина дальше?
38 Консультант Баранов
 
10.09.19
16:27
(32) Любопытно. Но в рамках "измерений"(счет, номенклатура, склад) за месяц, и даже за квартал 2000 записей и близко не будет.
39 Консультант Баранов
 
10.09.19
16:28
(37) Это скорее для спокойствия бухгалтеров.
40 sqr4
 
10.09.19
16:32
(38) т.е ты работаешь с первоначальным набором записей менее чем 2000 строк верно?
41 Консультант Баранов
 
10.09.19
16:36
(40)1. Там где идет расчет нарастающим итогом - да.
2. Там не одно сочетаний (счет, склад, номенклатура). Условно говоря
(10.8, Склад 1, Бетон) 234 записи
(10.8, Склад 2, Бетон) 222 записи
42 sqr4
 
10.09.19
16:41
(41) и о каком времени идет речь?
43 Rovan
 
гуру
10.09.19
16:41
(0) а сколько тысяч записей в регистре бухгалтерии ?
44 Консультант Баранов
 
10.09.19
16:48
(42) Сейчас индексы добавил и похоже результаты закешировались, сейчас за 3 месяца делается секунд 30.
45 sqr4
 
10.09.19
16:49
(44) а что будет через два года) Сказка
46 Консультант Баранов
 
10.09.19
16:50
(45) База с 11 года. Предполагается за последний месяц проверять, требуется пересчитать/перепровести или нет.
47 sqr4
 
10.09.19
16:56
Как по мне вот это
ЫБРАТЬ
    Хозрасчетный.СчетДт КАК СчетДт,
    Хозрасчетный.СчетКт КАК СчетКт,
    Хозрасчетный.Сумма КАК Сумма,
    Хозрасчетный.КоличествоДт КАК КоличествоДт,
    Хозрасчетный.КоличествоКт КАК КоличествоКт,
    Хозрасчетный.Регистратор КАК Регистратор,
    Хозрасчетный.НомерСтроки КАК НомерСтроки,
    Хозрасчетный.Период КАК Период,
    Хозрасчетный.МоментВремени КАК МоментВремени
ПОМЕСТИТЬ втЗапСчетов
ИЗ
    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
ГДЕ
    Хозрасчетный.Активность
    И Хозрасчетный.Период <= &ПериодКонец
    И (Хозрасчетный.СчетДт В
                (ВЫБРАТЬ
                    втСпСчетов.Счет КАК Счет
                ИЗ
                    втСпСчетов КАК втСпСчетов)
            ИЛИ Хозрасчетный.СчетКт В
                (ВЫБРАТЬ
                    втСпСчетов.Счет КАК Счет
                ИЗ
                    втСпСчетов КАК втСпСчетов))

Выбирает все записи из регистра до определенной даты, правда дальнейший путь этой таблички мне прослеживать лениво, поверю автору.
48 Консультант Баранов
 
10.09.19
17:31
(47) Только по определенным счетам.