Имя: Пароль:
1C
 
Остатки по составному полю
0 Stim
 
15.09.15
16:32
Есть РН Запасы. В нем есть измерение Заказ, с составным типом данных - заказПокупателя или ЗаказПоставщику

Мне нужно получить остатки по номенклатуре, когда поле Заказ не заполнено - Заказ в ЗапасыОстаток может быть заполнено NULL или пустойСсылкой на документ.

Причем -запрос типовой, надо в него вклиниться с минимальными изменениями.

а условие там такое:

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыПереданные.Остатки(
                        &МоментКонтроля,
                        (Организация, Номенклатура, Характеристика, Партия, Контрагент, Договор, Заказ, ТипПриемаПередачи) В
                            (ВЫБРАТЬ
                                ДвиженияЗапасыПереданныеИзменение.Организация КАК Организация,
                                ДвиженияЗапасыПереданныеИзменение.Номенклатура КАК Номенклатура,
                                ДвиженияЗапасыПереданныеИзменение.Характеристика КАК Характеристика,
                                ДвиженияЗапасыПереданныеИзменение.Партия КАК Партия,
                                ДвиженияЗапасыПереданныеИзменение.Контрагент КАК Контрагент,
                                ДвиженияЗапасыПереданныеИзменение.Договор КАК Договор,"
        //здесь должен быть либо ДвиженияЗапасыПереданныеИзменение.Заказ  либо NULL/Документ.ЗаказПоставщику.ПустаяСсылка
                +?(ДокументСсылкаОтчетПереработчика.СписыватьБезЗаказа," значение(Документ.ЗаказПоставщику.ПустаяСсылка) ИЛИ NULL","ДвиженияЗапасыПереданныеИзменение.Заказ ")+" КАК Заказ,
                                ДвиженияЗапасыПереданныеИзменение.ТипПриемаПередачи КАК ТипПриемаПередачи


как в условии задать, что мне нужны остатки где заказ = NULL или пустая ссылка на документ ?
1 Апош
 
15.09.15
16:33
неопределено же
2 bootini
 
15.09.15
16:49
ДвиженияЗапасыПереданныеИзменение.Заказ = Значение(Документ.ЗаказПоставщику.ПустаяСсылка) ИЛИ ДвиженияЗапасыПереданныеИзменение.Заказ ЕСТЬ NULL
3 Stim
 
15.09.15
16:50
(2) так нельзя.
4 Апош
 
15.09.15
16:51
(3) аллах запрещает?
5 Ненавижу 1С
 
гуру
15.09.15
16:52
ДвиженияЗапасыПереданныеИзменение.Заказ.Ссылка ЕСТЬ NULL
6 Stim
 
15.09.15
16:55
(4) нет
(5) НЕТ!
7 Stim
 
15.09.15
16:57
Вот вам простой пример-запрос:


ВЫБРАТЬ
    "Орг" КАК Организация,
    1 КАК заказ
ПОМЕСТИТЬ вр
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    "Орг",
    0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    вр.Организация,
    вр.заказ
ИЗ
    вр КАК вр
ГДЕ
    (вр.Организация, вр.заказ) В (ВЫБРАТЬ "Орг",0)


Исправьте этот запрос так, чтобы условие
(вр.Организация, вр.заказ) В
осталось, но выбирались все записи, в том числе и с 1
8 bootini
 
15.09.15
16:57
(0)(2) Должно быть в условии после слова "ГДЕ", а не в полях
9 Апош
 
15.09.15
16:59
(7) что ты там употребляешь?
10 Stim
 
15.09.15
16:59
(8) это было бы слишком просто.
Нужно в полях.
потому и спрашиваю.
11 aleks_default
 
15.09.15
17:00
ДвиженияЗапасыПереданныеИзменение.Заказ в (Значение(Документ.ЗаказПоставщику.ПустаяСсылка),Значение(Документ.ЗаказПокупателя.ПустаяСсылка),Неопределено)
12 bootini
 
15.09.15
17:03
(7) )

ВЫБРАТЬ
    "Орг" КАК Организация,
    1 КАК заказ
ПОМЕСТИТЬ вр
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    "Орг",
    0
;
////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    вр.Организация,
    вр.заказ
ИЗ
    вр КАК вр
ГДЕ
    (вр.Организация, вр.заказ) В (ВЫБРАТЬ Организация, заказ)
13 bootini
 
15.09.15
17:09
(7) Еще :)

ВЫБРАТЬ
    "Орг" КАК Организация,
    1 КАК заказ
ПОМЕСТИТЬ вр

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Орг",
    0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    вр.Организация,
    вр.заказ
ИЗ
    вр КАК вр
ГДЕ
    (вр.Организация, вр.заказ) В
            (ВЫБРАТЬ
                вр.Организация,
                ВЫБОР
                    КОГДА вр.заказ = 1
                        ТОГДА 1
                    ИНАЧЕ 0
                КОНЕЦ
            ИЗ
                вр)
14 Ненавижу 1С
 
гуру
15.09.15
17:15
(6) чей то ты орешь?
15 Stim
 
15.09.15
17:15
все не то
16 Ненавижу 1С
 
гуру
15.09.15
17:21
(15) да нормально объясни что не так
17 ВРедная
 
15.09.15
17:23
(0) Сделай все поля через "В", а заказ через "ГДЕ".
Так как ты хочешь не будет работать.
18 RomanYS
 
15.09.15
17:23
(11) +1,
но скорее всего достаточно неопределено
19 Stim
 
15.09.15
17:23
(16) ну как еще.

есть сука здоровый запрос, который надо подправить так, чтобы работало условие
й,ц,у В (Выбрать 10, 20, 1 или 0)
20 Stim
 
15.09.15
17:25
(18) неопределено - оно сработает для остатков с NULL и с пустой ссылкой на документ?
21 aleks_default
 
15.09.15
17:26
млять, NULL - это отсутсвие поля, запомните раз и навсегда
22 aleks_default
 
15.09.15
17:26
в прясом запросе к таблице NULL быть НЕ МОЖЕТ!
23 Stim
 
15.09.15
17:26
(21) отсутствие значения поля
24 Stim
 
15.09.15
17:27
(22) к таблице остатков - вполне
25 igork1966
 
15.09.15
17:30
(21) Ты не совсем прав. У составных незаполненных полей может быть NULL.
(Я тоже удивился когда увидел в результате запроса)
26 Stim
 
15.09.15
17:34
прокатит так, интересно:

РегистрНакопления.ЗапасыПереданные.Остатки(
                        &МоментКонтроля,
                        (Организация, Номенклатура,ЕстьNULL(Заказ,Значение(Документ.ЗаказПоставщику.ПустаяСсылка)) В
(Выбрать Вр.Организация,
Вр.номенклатура,
Значение(Документ.ЗаказПоставщику.ПустаяСсылка))

вроде должен отобрать с остатки с пустой ссылкой на док и с NULL
27 bootini
 
15.09.15
17:47
(26) И со всеми не ПустымиСсылками
28 bootini
 
15.09.15
17:51
(26) А так?

ВЫБОР КОГДА НЕ Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка) ТОГДА
ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
ИНАЧЕ
Заказ
КОНЕЦ
29 ВРедная
 
15.09.15
17:53
(26) нет не должен. У меня ощущение, что ты не понимаешь, как работает "В".

Дальше wall of text. Извините.

В "В" не может быть или. "В" означает,
"возьми, пожалуйста, только те записи из большой таблицы сверху, у которых поля Х1, Х2, Х3 содержатся вот в этой моей таблице:"

а дальше идет таблица, с которой нужно сравнить. В этой таблице конкретные значения, типа:

"орг 1", "номенклатура 1", "Заказ покупателя 12"
"орг 1", "номенклатура 1", "Заказ поставщику 10"

и при отборе из большой таблицы нельзя сказать "вот это поле сравнивай на "=", а вот это на "в списке". Там просто проверяется равенство.

Так что приведи остатки в своем регистре к "неопределено" и все будет хорошо.
30 RomanYS
 
15.09.15
17:59
(26) не может там быть NULL,
правильные варианты в (11)