Имя: Пароль:
1C
1С v8
Отбросить документы в которых заполнен дополнительный реквизит.
0 kobzon
 
04.03.19
14:51
Всем привет!
Никак не соображу как сделать.
В Документе Реализация создал доп. реквизит - Оплачена. Реквизит как дополнительное значение с о списком Да.
Заполнил несколько документов. Хочу получить оставшиеся.
Так находятся все.

ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка КАК Ссылка,
    РеализацияТоваровУслуг.ДополнительныеРеквизиты.(
        Значение КАК Значение
    ) КАК ДополнительныеРеквизиты
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг



А как мне найти, те в которых доп. реквизит не заполнен?
1 FIXXXL
 
04.03.19
14:54
(0) выбирай из ТЧ, проверяй
2 sqr4
 
04.03.19
15:00
(1) не взлетит, там где нет, его вообще не будет помоему
3 sqr4
 
04.03.19
15:00
Сначала список доков, потом тч, соединяешь и вуаля
4 kobzon
 
04.03.19
15:10
(2) Да в том то и дело, что либо выбирает то что заполнено, либо пустой результат по запросу.
(3) Сначала, в смысле сделать вложенным запросом?
5 FIXXXL
 
04.03.19
15:10
(3) проще тогда ВТ из заполненных и запрос с условием НЕ Ссылка В (ВЫБРАТЬ Ссылка ИЗ ВТ)
6 sqr4
 
04.03.19
15:11
(5) мне кажется мой способ быстрее)
7 kobzon
 
04.03.19
15:12
(5) Вот у меня были такие мысли с В (ВЫБРАТЬ Ссылка ИЗ ВТ). Не знал куда НЕ приписать)
8 Shaggy
 
04.03.19
17:53
Настоятельно рекомендую пользоваться конструктором запросов. Использовать две таблицу, таблицу документа и таблицу табличной части. связать их по "Ссылке". Я сомневаясь, что Вам удалось определить реквизиту документа тип значения "СписокЗначений", поэтому отбор необходимо сделать на <> НЕОПРЕДЕЛЕНО
9 kobzon
 
05.03.19
08:18
(8) Сделал как в (5)  - работает.
Связывание таблиц что то не получается. Записей 0 в итоге

ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка КАК Ссылка
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.ДополнительныеРеквизиты КАК РеализацияТоваровУслугДополнительныеРеквизиты
        ПО (РеализацияТоваровУслугДополнительныеРеквизиты.Ссылка = РеализацияТоваровУслуг.Ссылка)
ГДЕ РеализацияТоваровУслуг.ДополнительныеРеквизиты.Значение = Неопределено

СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслуг.Ссылка
10 catena
 
05.03.19
08:23
(9)Видимо там не Неопределено, а NULL
11 kobzon
 
05.03.19
08:28
(10) ГДЕ РеализацияТоваровУслуг.ДополнительныеРеквизиты.Значение = NULL

Так написать, тоже результатов 0
12 catena
 
05.03.19
08:52
(11)Потому что ничто не может равняться NULL. NULL вне системы. Даже NULL не может быть равен NULL, каждый NULL индивидуален.

А по факту нужно использовать ЕСТЬ NULL.
13 sqr4
 
05.03.19
09:32
ГДЕ РеализацияТоваровУслуг.ДополнительныеРеквизиты.Значение = NULL
это жестко)
14 Shaggy
 
05.03.19
09:43
(9) Вы не верно выбрали реквизит в отборе "ГДЕ". Необходимо смотреть в таблицу табличной части документа, Вы же проверяете реквизит самого документа.
15 Бертыш
 
05.03.19
09:50
(13) Обычно же пишешь что нибудь типа ГДЕ ЕСТЬNULL(РеализацияТоваровУслуг.ДополнительныеРеквизиты.Значение,"Фигня какая-то получается")="Фигня какая-то получается"
16 catena
 
05.03.19
10:05
(15)А чем не угодило краткое "ГДЕ Значение есть NULL"?
17 kobzon
 
05.03.19
10:06
(15) Операция не разрешена в предложении "ГДЕ"
ГДЕ <<?>>ЕСТЬNULL(РеализацияТоваровУслуг.ДополнительныеРеквизиты.Значение,0)
18 catena
 
05.03.19
10:12
(17)Правильно, потому что выражение в ГДЕ должно быть булевым. Приравняйте чему-нибудь, чтоле.
19 sqr4
 
05.03.19
10:13
ГДЕ РеализацияТоваровУслуг.ДополнительныеРеквизиты.Значение есть NULL
20 kobzon
 
05.03.19
10:18
(19) Не пашет

ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка КАК Ссылка
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.ДополнительныеРеквизиты КАК РеализацияТоваровУслугДополнительныеРеквизиты
        ПО (РеализацияТоваровУслугДополнительныеРеквизиты.Ссылка = РеализацияТоваровУслуг.Ссылка)
        ГДЕ РеализацияТоваровУслуг.ДополнительныеРеквизиты.Значение есть NULL
СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслуг.Ссылка
21 sqr4
 
05.03.19
10:22
(20) я только сейчас посмотрел на правую часть этого бреда... РеализацияТоваровУслуг.ДополнительныеРеквизиты.Значение это вообще что?!
РеализацияТоваровУслугДополнительныеРеквизиты.Значение есть Null пробуй так
И срочно учить запросы, прям срочно.
22 kobzon
 
05.03.19
10:27
(21) Да, теперь всё работает)
Спасибо!
Запросы учу. Я в 1с 8, можно сказать третий месяц только))

Всем спасибо!!!
23 Сияющий в темноте
 
05.03.19
10:54
ребята,а где проверка на наш допреквизит?
создайте другой допреквизит,запустите запрос и осознайте печаль.

в соединении вставить реализациятоваровуслугдопреквизиты.свойство=&нашдопреквизит
24 sqr4
 
05.03.19
10:57
(23) +
25 catena
 
05.03.19
11:06
(23)Мы нужное поле в запросе почти сутки искали. Давайте вот без этого вот.
26 sqr4
 
05.03.19
11:12
(25) нет, уж делать так на совесть. Давайте продолжим
27 kobzon
 
05.03.19
11:51
Да, да в первоначальном варианте запроса была проверка)
И  РеализацияТоваровУслугДополнительныеРеквизиты.Свойство = &Свойтсво
28 sqr4
 
05.03.19
11:58
(27) не взлетит
29 kobzon
 
05.03.19
12:02
(28) А как надо тогда?
30 sqr4
 
05.03.19
12:05
(29) по другому) Сначала отобрать только нужные свойства а затем соединять
или же в условие связи прописать, твое условие из где, но это мне кажется плохой вариант
31 Сияющий в темноте
 
05.03.19
12:06
(27)строка должна быть в условии соединения таблиц.
32 Вася Теркин
 
05.03.19
12:39
(9) Тогда уж

ГДЕ ISNULL(РеализацияТоваровУслуг.ДополнительныеРеквизиты.Значение,Неопределено) = Неопределено
33 sqr4
 
05.03.19
12:41
(32) не взлетит)
34 kobzon
 
05.03.19
16:09
Да, как то сложновато всё получается.
Плюс у меня должно выбираться незаполненное значение и заполненное значением "Частично". И это всё нужно засунуть в СКД.
В консоли запросов понятно присвоил параметру &значен тип дополнительное значение, и значение "Частично", а в СКД такого не вижу.

ГДЕ
    (РеализацияТоваровУслугДополнительныеРеквизиты.Значение ЕСТЬ NULL
            ИЛИ РеализацияТоваровУслугДополнительныеРеквизиты.Значение = &Значен)
35 kobzon
 
08.03.19
20:06
Столкнулся с еще одной непонятной для меня проблемой. Дописал запрос, засунул его в СКД, настроил параметры, выбрал поля детальных записей. Ссылка на документ, контрагента... В режиме предприятия выводится только ссылка на документ, контрагент никак не выводится.
Нагуглил на статью в ИСе, что нужно в константах установить галку опции Использовать партнеров и контрагентов. Поставил - контрагенты стали отображаться. Но мне для работы не нужны партнеры, а с этой галкой все немного поменялось.
Никто не знает другие способы решения?
36 Мимохожий Однако
 
09.03.19
08:11
Добавь в запросе вывод поля Контрагент
37 kobzon
 
09.03.19
14:01
(36) В запросе есть это поле. Не выводится не так, не через Ссылка.Контрагент. А когда константу выставляешь в Истина, тогда и то и другое выводится.
38 Мимохожий Однако
 
09.03.19
14:16
(37) Запрос-то покажи. Запрос проверял в консоли. Это поле заполнено при выводе?
39 Мимохожий Однако
 
09.03.19
14:16
Запрос проверял в консоли?
40 kobzon
 
09.03.19
14:24
(38) В консоли все работает

ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка КАК Ссылка,
    РеализацияТоваровУслуг.Дата КАК Дата,
    РеализацияТоваровУслуг.Номер КАК Номер,
    РеализацияТоваровУслуг.Контрагент КАК Контрагент,
    РеализацияТоваровУслуг.ДополнительныеРеквизиты.(
        Значение КАК Значение
    ) КАК ДополнительныеРеквизиты
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.ДополнительныеРеквизиты КАК РеализацияТоваровУслугДополнительныеРеквизиты
        ПО (РеализацияТоваровУслугДополнительныеРеквизиты.Ссылка = РеализацияТоваровУслуг.Ссылка)
ГДЕ
    (РеализацияТоваровУслугДополнительныеРеквизиты.Значение ЕСТЬ NULL
ИЛИ РеализацияТоваровУслугДополнительныеРеквизиты.Значение.Наименование = &Значен)
    И РеализацияТоваровУслуг.Дата >= &НачальнаяДата
    И РеализацияТоваровУслуг.Дата <= &КонечнаяДата
    И РеализацияТоваровУслуг.ПометкаУдаления = ЛОЖЬ
    И РеализацияТоваровУслуг.Проведен = ИСТИНА
41 Мимохожий Однако
 
09.03.19
14:41
РеализацияТоваровУслуг.ДополнительныеРеквизиты.(
        Значение КАК Значение
    ) КАК ДополнительныеРеквизиты
Вот это зачем?
42 Мимохожий Однако
 
09.03.19
14:42
И РеализацияТоваровУслуг.ПометкаУдаления = ЛОЖЬ
лишнее. Документ, не может быть помеченным на удаление и проведенным одновременно
43 ДенисЧ
 
09.03.19
14:42
(42) ну как сказать... Движения он иметь может ))
44 Мимохожий Однако
 
09.03.19
14:43
(43) Можно пример?
45 ДенисЧ
 
09.03.19
14:46
(44) Создай набор записей регистра, подчини его документу, запиши движения....
46 RomanYS
 
09.03.19
14:46
(44) лучше так не делать :)

Док.Записать(РежимЗаписиДокумента.Проведение);

//когда-то потом
Док.ОбменДанными.Загрузка = Истина;
Док.ПометкаУдаления = Истина;
Док.Записать();
47 RomanYS
 
09.03.19
14:49
(43) но (42) это не отменяет
48 kobzon
 
09.03.19
14:50
(41) Ну это было для наглядности. Что действительно выводится то что мне надо.
49 catena
 
11.03.19
05:08
(46)После этого он не будет Проведен=Истина.
50 JeHer
 
11.03.19
06:53
51 catena
 
11.03.19
07:03
(50)Разговор был о том, что одновременная проверка "проведен=истина и пометкаудаления=ложь" не имеют смысла. Нет у ТС в запросе обращения к движениям.
52 TormozIT
 
гуру
11.03.19
08:23
Если у документа заполнены характеристики, то в качестве позновательного приема можно в любой консоли компоновки добавить отбор "Ссылка.[ИмяДопРеквизита] не заполнено" и посмотреть результирующий запрос.
Он будет выглядеть примерно так

ВЫБРАТЬ
    Т.Ссылка КАК Ссылка
ИЗ
    Справочник._ДемоНоменклатура КАК Т
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник._ДемоНоменклатура.ДополнительныеРеквизиты КАК _ДемоНоменклатураДополнительныеРеквизиты
        ПО (_ДемоНоменклатураДополнительныеРеквизиты.Ссылка = Т.Ссылка
                И _ДемоНоменклатураДополнительныеРеквизиты.Свойство = &П)
ГДЕ
    _ДемоНоменклатураДополнительныеРеквизиты.Значение = &П2
53 TormozIT
 
гуру
11.03.19
08:24
(52) Упс. Это для "Равно". Вот для "Не заполнено"

ВЫБРАТЬ
    Т.Ссылка КАК Ссылка,
    _ДемоНоменклатураДополнительныеРеквизиты.Значение КАК Значение1
ИЗ
    Справочник._ДемоНоменклатура КАК Т
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник._ДемоНоменклатура.ДополнительныеРеквизиты КАК _ДемоНоменклатураДополнительныеРеквизиты
        ПО (_ДемоНоменклатураДополнительныеРеквизиты.Ссылка = Т.Ссылка
                И _ДемоНоменклатураДополнительныеРеквизиты.Свойство = &П)
ГДЕ
    (_ДемоНоменклатураДополнительныеРеквизиты.Значение В (НЕОПРЕДЕЛЕНО, &П2, &П3, "", ДАТАВРЕМЯ(1, 1, 1), 0, &П4, &П5)
            ИЛИ _ДемоНоменклатураДополнительныеРеквизиты.Значение ЕСТЬ NULL)
54 kobzon
 
11.03.19
12:57
Уже попробовал левым соединением присоединить справочник контрагенты, со связью по ссылке. И всё равно контрагент в отчете не выводится.
55 sqr4
 
11.03.19
14:18
(54) может там партнер?
56 kobzon
 
11.03.19
16:12
(55) В консоли выводит всё. И Контрагент и Ссылка.Контрагент. и Контрагент.Партнер. И Партнер.
На каком уровне СКД блочит непонятно.
57 catena
 
12.03.19
05:06
(56)Может уже стоит посмотреть результирующий запрос СКДы?
58 TormozIT
 
гуру
12.03.19
09:35
(56) Ну так разберись сам через отладку компоновки https://www.youtube.com/watch?v=qVGXWU8w1W0&;
59 TormozIT
 
гуру
12.03.19
09:49
(59) Точнее если чисто компоновку изучать в консоли, то лучше юзать такой прием сразу https://www.youtube.com/watch?v=0LKGaFo9tXw
Программист всегда исправляет последнюю ошибку.