Имя: Пароль:
1C
1С v8
Как в запросе убрать исключения
0 DmitryPavlik
 
20.06.12
16:28
Добрый!
УПП
Есть запрос
ВЫБРАТЬ
   ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
   СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток) КАК СуммаНачальныйОстаток,
   СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК СуммаПриход,
   //СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК СуммаРасход,
   СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток) КАК СуммаКонечныйОстаток,
   СУММА(ВЫБОР
           КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
                   ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
               ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
           ИНАЧЕ 0
       КОНЕЦ) КАК СуммаРеализация,
   СУММА(ВЫБОР
           КОГДА НЕ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
                   И НЕ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
               ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
           ИНАЧЕ 0
       КОНЕЦ) КАК СуммаПрочиеВыбытия
       //,ХозрасчетныйОстаткиИОбороты.Регистратор
ИЗ
   РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
           &НачПериода,
           &КонПериода,
           Авто,
           ,
           Счет В (&Счета),
           ,
           Организация = &Организация
               И Субконто1 = &Субконто1) КАК ХозрасчетныйОстаткиИОбороты

СГРУППИРОВАТЬ ПО
   ХозрасчетныйОстаткиИОбороты.Субконто1
   //,ХозрасчетныйОстаткиИОбороты.Регистратор

Если убрать строки с "Выбор когда", то всё правильно считает, но если их использовать, то складываются все строки, получается не правильный результат.

Как можно избавиться от этого?
1 PR
 
20.06.12
16:32
Да
2 Ненавижу 1С
 
гуру
20.06.12
16:33
неправильный результат в каких полях? остатков?
3 andrewks
 
20.06.12
16:33
(1) отвечать "Да" на вопрос "Как" - это моветон :)
4 Ненавижу 1С
 
гуру
20.06.12
16:33
(1) как можно на вопрос "как?" ответить "да"?
))) да
5 Ненавижу 1С
 
гуру
20.06.12
16:34
(0) сделать через "объединить все"
6 andrewks
 
20.06.12
16:34
"Если убрать строки с "Выбор когда", то всё правильно считает"  т.е. вопроса нет? или что?
7 PR
 
20.06.12
16:39
(6) Если у человека каша в голове, то лучше всего с ним согласиться :))
8 DmitryPavlik
 
20.06.12
16:40
Пока что (5) решение предлагает самое адекватное! :)

(6) Дело в том, что добавлении поля с "выбор когда регистратор ссылка ...", строки, например, с начальным остатком, начинают складываться и после группировки сумма будет ого-го.
9 PR
 
20.06.12
16:46
(8) Дело в том, что считать остатки с исключением некоторых регистраторов — это вообще черт-те знает что.
10 DmitryPavlik
 
20.06.12
16:47
(9) так ни один регистратор не исключен: в одну колонку попадают данные по двум регистраторам, а в другую - по всем остальным.
11 DmitryPavlik
 
20.06.12
16:51
всё окей

ВЫБРАТЬ
   ТаблицаОстатков.Номенклатура,
   СУММА(ТаблицаОстатков.СуммаНачальныйОстаток) КАК СуммаНачальныйОстаток,
   СУММА(ТаблицаОстатков.СуммаПриход) КАК СуммаПриход,
   СУММА(ТаблицаОстатков.СуммаКонечныйОстаток) КАК СуммаКонечныйОстаток,
   СУММА(ТаблицаОстатков.СуммаРеализации) КАК СуммаРеализации,
   СУММА(ТаблицаОстатков.СуммаПрочиеВыбытия) КАК СуммаПрочиеВыбытия
ИЗ
   (ВЫБРАТЬ
       ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
       СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток) КАК СуммаНачальныйОстаток,
       СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК СуммаПриход,
       СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток) КАК СуммаКонечныйОстаток,
       0 КАК СуммаРеализации,
       0 КАК СуммаПрочиеВыбытия
   ИЗ
       РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
               &НачПериода,
               &КонПериода,
               Авто,
               ,
               Счет В (&Счета),
               ,
               Организация = &Организация
                   И Субконто1 = &Субконто1) КАК ХозрасчетныйОстаткиИОбороты
   
   СГРУППИРОВАТЬ ПО
       ХозрасчетныйОстаткиИОбороты.Субконто1
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ХозрасчетныйОстаткиИОбороты.Субконто1,
       0,
       0,
       0,
       СУММА(ВЫБОР
               КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
                       ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
                   ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
               ИНАЧЕ 0
           КОНЕЦ),
       СУММА(ВЫБОР
               КОГДА НЕ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
                       И НЕ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
                   ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
               ИНАЧЕ 0
           КОНЕЦ)
   ИЗ
       РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
               &НачПериода,
               &КонПериода,
               Регистратор,
               ,
               Счет В (&Счета),
               ,
               Организация = &Организация
                   И Субконто1 = &Субконто1) КАК ХозрасчетныйОстаткиИОбороты
   
   СГРУППИРОВАТЬ ПО
       ХозрасчетныйОстаткиИОбороты.Субконто1) КАК ТаблицаОстатков

СГРУППИРОВАТЬ ПО
   ТаблицаОстатков.Номенклатура


(5) шарит
12 PR
 
20.06.12
16:51
(10) Ну да, ты же не в одном, а в двух местах исключил регистраторы.
Тогда да, все хуже в два раза :))
13 Ненавижу 1С
 
гуру
20.06.12
16:52
(9) дело в том, что 1с криво начинает транслировать расчет остатков
но вообще неудивительно, задача нетривиальная
14 Ненавижу 1С
 
гуру
20.06.12
16:53
(12) он не исключал их из выборки, просто применил оператор, причем в другом поле
15 DmitryPavlik
 
20.06.12
16:54
(13) это ошибка, особенность работы или всё правильно?)))
16 PR
 
20.06.12
17:05
(14) То есть просто принудительно сделал выборку до регистратора, да.
17 PR
 
20.06.12
17:06
(15) Второе и третье.
18 Ненавижу 1С
 
гуру
20.06.12
17:12
(15) скорее второе
голый SQL без оконных функций такое не умеет, там сложная интерпретация
19 DmitryPavlik
 
20.06.12
17:14
(18) на скл виртуальных таблиц-то нет, конечно, поэтому группировками только
20 Ненавижу 1С
 
гуру
20.06.12
17:18
(19) виртуальные таблицы это макросы, которые движок разворачивает