Имя: Пароль:
1C
1С v8
Необходимо упростить запрос
0 mashams
 
15.02.17
10:07
Есть запрос:
ВЫБРАТЬ
    ХозрасчетныйОстатки.Субконто2 КАК Субконто2,
    ХозрасчетныйОстатки.Субконто3,
    ХозрасчетныйОбороты.КорСубконто1 КАК КорСубконто1,
    ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток,
    ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт,
    ХозрасчетныйОбороты2.СуммаОборотКт КАК СуммаОборотКт1,
    ХозрасчетныйОбороты.СуммаОборотКт / ХозрасчетныйОбороты2.СуммаОборотКт КАК Кт,
    ХозрасчетныйОбороты.СуммаОборотКт / ХозрасчетныйОбороты2.СуммаОборотКт * ХозрасчетныйОстатки.СуммаОстаток КАК Распр
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(
            &КонецПериода,
            Счет = &Счет1007,
            ,
            Организация = &Организация
                И Субконто1 = &Контрагент) КАК ХозрасчетныйОстатки,
    РегистрБухгалтерии.Хозрасчетный.Обороты(
            &НачалоПериода,
            &КонецПериода,
            ,
            Счет = &Счет1007,
            ,
            Организация = &Организация
                И Субконто1 = &Контрагент
                И (КорСубконто1 = &ОБъектСтроительства1
                    ИЛИ КорСубконто1 = &ОбъектСтроительства2
                    ИЛИ КорСубконто1 = &ОбъектСтроительства3),
            КорСчет = &Счет1001,
            ) КАК ХозрасчетныйОбороты,
    РегистрБухгалтерии.Хозрасчетный.Обороты(
            &НачалоПериода,
            &КонецПериода,
            ,
            Счет = &Счет1007,
            ,
            Организация = &Организация
                И Субконто1 = &Контрагент
                И (КорСубконто1 = &ОБъектСтроительства1
                    ИЛИ КорСубконто1 = &ОбъектСтроительства2
                    ИЛИ КорСубконто1 = &ОбъектСтроительства3),
            КорСчет = &Счет1001,
            ) КАК ХозрасчетныйОбороты2

УПОРЯДОЧИТЬ ПО
    ХозрасчетныйОстатки.Субконто2.Наименование,
    КорСубконто1
ИТОГИ
    СУММА(СуммаОстаток),
    СУММА(СуммаОборотКт),
    СУММА(СуммаОборотКт1),
    СУММА(Кт),
    СУММА(Распр)
ПО
    Субконто2

Можно ли чем-то заменить кусок кода:
РегистрБухгалтерии.Хозрасчетный.Обороты(
            &НачалоПериода,
            &КонецПериода,
            ,
            Счет = &Счет1007,
            ,
            Организация = &Организация
                И Субконто1 = &Контрагент
                И (КорСубконто1 = &ОБъектСтроительства1
                    ИЛИ КорСубконто1 = &ОбъектСтроительства2
                    ИЛИ КорСубконто1 = &ОбъектСтроительства3),
            КорСчет = &Счет1001,
            ) КАК ХозрасчетныйОбороты2
чтобы не обращаться 2 раза к одной таблице?
1 Dmitrii
 
гуру
15.02.17
10:15
(0) Во-первых, зачем вы обращаетесь дважды к одной таблице? Смысла я не понял вообще.
Во-вторых, где соединения таблиц...
2 KishMish
 
15.02.17
10:24
(0) можно выбрать во временную таблицу
3 mistеr
 
15.02.17
10:34
(0) Запрос откуда взял? Сложно поверить, что такая чушь сидит в какой-то работоспособной конфе...
4 Dmitrii
 
гуру
15.02.17
10:38
(2) Что выбрать то?
В (0) какой-то феерический бред с декартовым произведением.
5 DrZombi
 
гуру
15.02.17
10:47
(0) >>. чтобы не обращаться 2 раза к одной таблице?

А вам чем мешает?
Упростить для вас, я так понимаю, что бы ваш мозг смог осилить написанное?

Что бы вы сказали, если бы узнали, что нормальные запросы куда сложнее...

Составные типы — бесплатный сыр мышеловки производительности
http://catalog.mista.ru/public/184361/
6 DrZombi
 
гуру
15.02.17
10:48
+ (0) Вы уверены, что получите нужный результат?
Вы остатки связали с оборотами и при этом 3 раза :)
7 Dmitrii
 
гуру
15.02.17
10:58
(6) Нету там никаких связей. Не утруждал себя автор такими глупостями, как условия связи.
8 mashams
 
15.02.17
11:03
Запрос вообще создавала не я. Он был создан для обработки, которая пропорционально распределяет сумму из одной таблицы по другой. Как мне сказали, при работе этой обработки никаких ошибок не возникало. Но меня попросили изменить запрос, т.к. создатель запроса тоже считает, что запрос неправильный.
9 DrZombi
 
гуру
15.02.17
11:24
(8) Фото, где ваше фото. Оно творить чудеса на мисте :)

Вы не пробовали автору отдать на исправление его ошибок?

Вам придется отделать Остаток и Оборот и самое главное, если вы новенькая, то заставить заказчика объяснить надобность сего запроса. :)

И сделать так, как хочет заказчик. А то в итоге вдруг всех устраивает громадные цифры из воздуха, а вы всем кайф сломаете. И виноваты останетесь :)
10 DrZombi
 
гуру
15.02.17
11:24
(9) отделать  -> отделить
11 DrShad
 
15.02.17
11:28
(8) ну так пусть создатель запроса его и упростит
12 Dmitrii
 
гуру
15.02.17
12:25
(8) Вы хоть сами понимаете, что этот запрос - бред?
У Вас есть понимание того, что должен выдавать результат этого запроса?
Вы понимаете, что это запрос выдает сейчас?

Я так подозреваю, что ни на один из этих вопросов Вы не можете ответить утвердительно.
13 mashams
 
15.02.17
13:11
Задача запроса следующая: есть остатки Материалов по определенной аналитике. Их суммы нужно распределить пропорционально суммам оборотов конкретных ОбъектовСтроительства.
14 mkalimulin
 
15.02.17
13:15
(13) Такого рода задачи решаются не запросом, а связкой запрос + обработка.
15 h-sp
 
15.02.17
13:23
(12) ну может быть, распределение, каждый остаток соединяется с каждым оборотом. Декартово произведение
16 mashams
 
15.02.17
14:03
(14) Этот запрос потом добавляется в обработку