Имя: Пароль:
1C
 
СКД
0 buumble
 
12.07.24
09:42
Помогите разобраться с условиями в СКД. Есть условие
ВЫБОР
    КОГДА &ТолькоНеЗакрытые
        ТОГДА ВЫБОР
                КОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО
                    ТОГДА NULL
                ИНАЧЕ ВЫБОР
                        КОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор ССЫЛКА Документ.ЗаказНаПроизводство
                            ТОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор В
                                    (ВЫБРАТЬ
                                        ОстаткиПоЗаказам.ЗаказНаПроизводство
                                    ИЗ
                                        ОстаткиПоЗаказам КАК ОстаткиПоЗаказам)
                        ИНАЧЕ ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор
                    КОНЕЦ
            КОНЕЦ
КОНЕЦ

Но в отчет все равно попадают заказы на производство которых нет на в регистре остатков по заказам на производство, консолью проверил, остатка нет почему не работает условие ?
1 Волшебник
 
12.07.24
09:44
Это не условие, а поле
2 buumble
 
12.07.24
09:47
(1) Условие на вкладке компоновка данных, или я что то не понял
3 buumble
 
12.07.24
09:47
Поле выглядит так
ВЫБОР
    КОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО
        ТОГДА NULL
    ИНАЧЕ ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор
КОНЕЦ
4 Волшебник
 
12.07.24
09:48
(2) Условие пишется в предложении ГДЕ
5 buumble
 
12.07.24
09:49
Ну вот часть запроса
ИЗ
    ОстатокПоЗаказу КАК ОстатокПоЗаказу
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыНаПроизводство.ОстаткиИОбороты(
                ,
                ,
                Авто,
                ,
                ЗаказНаПроизводство.Продукция.Заказ В
                    (ВЫБРАТЬ
                        ОстатокПоЗаказу.Ссылка
                    ИЗ
                        ОстатокПоЗаказу КАК ОстатокПоЗаказу)) КАК ЗаказыНаПроизводствоОстаткиИОбороты
        ПО ОстатокПоЗаказу.Ссылка = ЗаказыНаПроизводствоОстаткиИОбороты.ЗаказНаПроизводство.Продукция.Заказ
{ГДЕ
    (ВЫБОР
            КОГДА &ТолькоЗаказыНаПроизводство
                ТОГДА ВЫБОР
                        КОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО
                            ТОГДА NULL
                        ИНАЧЕ ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор ССЫЛКА Документ.ЗаказНаПроизводство
                    КОНЕЦ
            ИНАЧЕ ВЫБОР
                    КОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО
                        ТОГДА NULL
                    ИНАЧЕ ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор
                КОНЕЦ
        КОНЕЦ).*,
    (ВЫБОР
            КОГДА &ТолькоНеЗакрытые
                ТОГДА ВЫБОР
                        КОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО
                            ТОГДА NULL
                        ИНАЧЕ ВЫБОР
                                КОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор ССЫЛКА Документ.ЗаказНаПроизводство
                                    ТОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор В
                                            (ВЫБРАТЬ
                                                ОстаткиПоЗаказам.ЗаказНаПроизводство
                                            ИЗ
                                                ОстаткиПоЗаказам КАК ОстаткиПоЗаказам)
                                ИНАЧЕ ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор
                            КОНЕЦ
                    КОНЕЦ
        КОНЕЦ).*}
6 Волшебник
 
12.07.24
09:51
Условие ГДЕ в фигурных скобках не считается
7 buumble
 
12.07.24
09:52
(6) Оно отрабатывает когда параметр заполнен, &ТолькоЗаказыНаПроизводство  вот когда заполнен этот параметр отрабатывает
8 Волшебник
 
12.07.24
09:53
(7) Нет
9 buumble
 
12.07.24
09:54
В таком случае что происходит, когда заполнен этот параметр, и как мне отобрать только те заказы которые есть в регистре ?
10 Мультук
 
гуру
12.07.24
09:57
(5)

Никого не смущает, что у него в ГДЕ
ВЫБОР КОНЕЦ, который по сути должен вернуть Булево,
а не всякие NULL и регистратор ?
11 Волшебник
 
12.07.24
09:57
(9) Уберите фигурные скобки. Сделайте нормальное условие ГДЕ
12 buumble
 
12.07.24
09:58
(11) Тогда как отчет будет отрабатывать если параметр не заполнен ?
13 Волшебник
 
12.07.24
09:58
(12) Всё будет нормально
14 buumble
 
12.07.24
10:06
Вот параметр не заполнен вываливается в ошибку, Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(77, 8)}: Не задано значение параметра "ТолькоНезакрытые"
И <<?>>&ТолькоНезакрытые
15 Волшебник
 
12.07.24
10:07
(14) Смешно
16 buumble
 
12.07.24
10:09
(15) Спасибо, я старался
17 Ёпрст
 
гуру
12.07.24
10:12
вот это вот огонь:

     КОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор ССЫЛКА Документ.ЗаказНаПроизводство
                                    ТОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор В
                                            (ВЫБРАТЬ
                                                ОстаткиПоЗаказам.ЗаказНаПроизводство
                                            ИЗ
                                                ОстаткиПоЗаказам КАК ОстаткиПоЗаказам)
                                ИНАЧЕ ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор
18 Волшебник
 
12.07.24
10:12
(16) Теперь включите мозги и напишите нормальное условие. Если нужны параметры, то задайте их.
19 Волшебник
 
12.07.24
10:14
(17) Это генерация кода. Бессмысленная и беспощадная.
Нагромождение кусков кода, вкладывание их друг в друга.
20 Ёпрст
 
гуру
12.07.24
10:14
(0)
ну и в Где пихать null, ссылку на документ..оно точно так ннадо ?
21 buumble
 
12.07.24
10:16
(20) Выводились пустые строки регистратора, где то видел что их так отсеивают
22 buumble
 
12.07.24
10:18
(18) НУ вот смотри
ВЫБОР
    КОГДА ТИПЗНАЧЕНИЯ(ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор) = ТИП(Документ.ЗаказНапроизводство)
            И &ТолькоНезакрытые
        ТОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор В
                (ВЫБРАТЬ
                    ОстаткиПоЗаказам.ЗаказНаПроизводство
                ИЗ
                    ОстаткиПоЗаказам КАК ОстаткиПоЗаказам)
    ИНАЧЕ ИСТИНА
КОНЕЦ

Нормальное ведь условие? параметр нужен не всегда иногда пользователь просто может его не заполнить или отключить
23 Волшебник
 
12.07.24
10:19
(22) Это не условие, а поле
24 buumble
 
12.07.24
10:20
(23) ну нет же, на вкладке условие поставил условие в записимости от регистратора и параметра
25 Волшебник
 
12.07.24
10:20
Условие выглядит так:
ГДЕ поле = значение
26 buumble
 
12.07.24
10:20
ВЫБРАТЬ
    ВЫБОР
        КОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО
            ТОГДА NULL
        ИНАЧЕ ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор
    КОНЕЦ КАК Регистратор,
    ЗаказыНаПроизводствоОстаткиИОбороты.Номенклатура,
    ЗаказыНаПроизводствоОстаткиИОбороты.ХарактеристикаНоменклатуры,
    ЗаказыНаПроизводствоОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
    ЗаказыНаПроизводствоОстаткиИОбороты.КоличествоПриход,
    ЗаказыНаПроизводствоОстаткиИОбороты.КоличествоРасход,
    ОстатокПоЗаказу.Ссылка КАК ЗаказПокупателя,
    ЗаказыНаПроизводствоОстаткиИОбороты.ЗаказНаПроизводство.Комментарий КАК Комментарий,
    ОстатокПоЗаказу.Ссылка.Контрагент КАК Контрагент,
    ЗаказыНаПроизводствоОстаткиИОбороты.ПериодСекунда,
    ЗаказыНаПроизводствоОстаткиИОбороты.КоличествоНачальныйОстаток,
    ЗаказыНаПроизводствоОстаткиИОбороты.ЗаказНаПроизводство
ИЗ
    ОстатокПоЗаказу КАК ОстатокПоЗаказу
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыНаПроизводство.ОстаткиИОбороты(
                ,
                ,
                Авто,
                ,
                ЗаказНаПроизводство.Продукция.Заказ В
                    (ВЫБРАТЬ
                        ОстатокПоЗаказу.Ссылка
                    ИЗ
                        ОстатокПоЗаказу КАК ОстатокПоЗаказу)) КАК ЗаказыНаПроизводствоОстаткиИОбороты
        ПО ОстатокПоЗаказу.Ссылка = ЗаказыНаПроизводствоОстаткиИОбороты.ЗаказНаПроизводство.Продукция.Заказ
ГДЕ
    ВЫБОР
            КОГДА ТИПЗНАЧЕНИЯ(ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор) = ТИП(Документ.ЗаказНапроизводство)
                    И &ТолькоНезакрытые
                ТОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор В
                        (ВЫБРАТЬ
                            ОстаткиПоЗаказам.ЗаказНаПроизводство
                        ИЗ
                            ОстаткиПоЗаказам КАК ОстаткиПоЗаказам)
            ИНАЧЕ ИСТИНА
        КОНЕЦ
27 Волшебник
 
12.07.24
10:21
(26) Опять нет условия
28 buumble
 
12.07.24
10:23
(27) Не могу понять, вот же условие ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор В
                        (ВЫБРАТЬ
                            ОстаткиПоЗаказам.ЗаказНаПроизводство
                        ИЗ
                            ОстаткиПоЗаказам КАК ОстаткиПоЗаказам)
29 Ёпрст
 
гуру
12.07.24
10:24
(26) так сойдет, только case в select на неопределенно выкини. Он там не нужен.
30 Ёпрст
 
гуру
12.07.24
10:24
вот это выкини
ВЫБОР
        КОГДА ЗаказыНаПроизводствоОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО

оставь просто регистратор
31 buumble
 
12.07.24
10:25
(29) это хорошо, но как мне быть с незаполненым параметром ?
32 Волшебник
 
12.07.24
10:28
(31) заполнить, не?
33 buumble
 
12.07.24
10:28
Вот я смотрел уже много статей по этому поводу, все твердят одно, в фигурные скобки но так не отрабатывает
34 buumble
 
12.07.24
10:30
(32) Ты максимально прав, в идеальном мире с идеальными людьми все было бы проще. Если отчет падает в ошибку, это кто косячнул?
35 Волшебник
 
12.07.24
10:31
(34) ты
36 buumble
 
12.07.24
10:35
(35) вот поэтому хочу предостеречь от этого и пришел за советом )
37 Ёпрст
 
гуру
12.07.24
10:47
(31) условие с ИЛИ сделать
38 Волшебник
 
12.07.24
10:47
(36) Сделайте нормальное условие ГДЕ без фигурных скобок.
39 buumble
 
12.07.24
11:00
(38) Я сделал, что имеешь ввиду под нормальным ? Параметр не заполнен, как его обойти без фигурных скобок?
40 buumble
 
12.07.24
11:00
(37) Если ИЛИ Тогда с чем сравнивать ? Если параметр не заполнен ?
41 Волшебник
 
12.07.24
11:10
ГДЕ &НеНуженОтбор ИЛИ Заказ В (ВЫБРАТЬ Заказ ИЗ ОткрытыеЗаказы)
42 buumble
 
12.07.24
13:07
(41) Спасибо!