Имя: Пароль:
1C
1С v8
В СКД значение Булево не выводится "Нет"
0 x-fa
 
05.10.21
14:01
В СКД значение Булево не выводится "Нет", NULL и неопределено не помогает

ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВТ_Договора
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВЫБОР
        КОГДА ДоговорыКонтрагентовДополнительныеРеквизиты.Значение ЕСТЬ NULL
            ТОГДА "Нет"
        ИНАЧЕ "Да"
    КОНЕЦ КАК Значение,
    ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВТ_Статусы
ИЗ
    Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
ГДЕ
    ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство = &Свойство
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Договора.Ссылка КАК Ссылка,
    ВТ_Статусы.Значение КАК Значение
ИЗ
    ВТ_Договора КАК ВТ_Договора
        ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Статусы КАК ВТ_Статусы
        ПО ВТ_Договора.Ссылка = ВТ_Статусы.Ссылка
1 gul_Sayan
 
05.10.21
14:03
(0) проверяй на пустую ссылку.
2 x-fa
 
05.10.21
14:16
(1)а как Булево проверить на пустую ссылку?
3 Kassern
 
05.10.21
14:22
(2) консоль запросов вам в помощь. Скорее всего у вас есть договора с пустой ТЧ доп реквизитов. Сформируйте попакетно данный запрос и посмотрите что во временных таблицах.
4 Kassern
 
05.10.21
14:24
(3) если ТЧ пустая у договора, то строчка с этим договором будет пустая. А далее вы таблицу договоров полным соединением цепляете с таблицей, где нет вообще этого договора (т.к. ТЧ пустая), поэтому у вас в значении пусто.
5 Eiffil123
 
05.10.21
14:25
(2) Как-то так. Если конечно тип доп.реквизита - значение доп.свойств.

ВЫБРАТЬ
    ВЫБОР
        КОГДА ДоговорыКонтрагентовДополнительныеРеквизиты.Значение ЕСТЬ NULL
            ТОГДА "Нет"
        КОГДА ДоговорыКонтрагентовДополнительныеРеквизиты.Значение = ЗНАЧЕНИЕ(Справочник.ЗначенияСвойствОбъектов.ПустаяСсылка)
            ТОГДА "Нет"
        ИНАЧЕ "Да"
    КОНЕЦ КАК Значение,
    ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВТ_Статусы
ИЗ
    Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
ГДЕ
    ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство = &Свойство
6 Eiffil123
 
05.10.21
14:26
(4) а, и это тоже. нужно левое соединение.
7 Kassern
 
05.10.21
14:27
(5) это не сканает, проблема в том, что если ТЧ пустая, то отбирая по Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты у вас будет пустая строчка по данному договору.
8 Kassern
 
05.10.21
14:28
(7) проще говоря, если отобрать по конкретному договору обе ВТ. То в первой таблице будет 1 строчка с договором, а во второй вообще пусто. А потом вы их 2 объединяете в 1 таблицу и удивляетесь, а почему статус не проставляется)
9 pechkin
 
05.10.21
14:32
проще формат поля
10 Eiffil123
 
05.10.21
14:37
Пора уже изобрести виртуальные таблицы у объектов для работы с допреквизитами и допсвойствами )
11 Kassern
 
05.10.21
14:38
проще было в одном пакете левым соединением привязать таблицу договоров с таблицей ТЧ доп реквизитов. В связи прописать нужное свойство для отбора ТЧ. А в ВЫБРАТЬ просто написать
Выбор когда ЕстьNull(ДоговорыКонтрагентовДополнительныеРеквизиты.Значение,Ложь)=Ложь тогда "Нет" Иначе "Да" Конец. Вот и все дела
12 Kassern
 
05.10.21
14:40
(11) тут главное именно во вкладке связи прописать отбор, чтобы только ТЧ отобралась, а не на вкладке отбора (тогда уже обрежутся все договора с пустой тч, либо если там нет нужного свойства).
13 x-fa
 
05.10.21
14:44
(12) не понятно, что имеете виду?
14 Kassern
 
05.10.21
14:45
(13) а что тут не понятного?)
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
        ПО (ДоговорыКонтрагентов.Ссылка = ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка)
            И (ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство = &НужноеСвойство)
15 Kassern
 
05.10.21
14:46
в таком виде у вас слева будут все договора, а справа лишь строки со свойством НужноеСвойство
16 Kassern
 
05.10.21
14:47
А если вы сделаете вот так:
ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка КАК Ссылка,
    ДоговорыКонтрагентовДополнительныеРеквизиты.Значение КАК Значение
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
        ПО ДоговорыКонтрагентов.Ссылка = ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка
ГДЕ
    ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство = &Свойство

То вы обрежете левую таблицу по отбору и у вас будут лишь строчки с данным свойством
17 Kassern
 
05.10.21
14:48
а все потому, что вначале отрабатывают связи, а только потом уже отбор по результату связи
18 x-fa
 
05.10.21
14:50
(16) (17) мне надо все договора, с условием да и нет статусов, не подходит такой вариант, все равно Нет нет
19 Kassern
 
05.10.21
14:51
(18) походу вы не поняли ничего, что я вам написал..Выше в (14) я вам рабочий пример написал как вам сделать.
20 Kassern
 
05.10.21
14:51
сравните портянку в (0) и попробуйте вот такой кусочек кода:
ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка КАК Договор,
    ВЫБОР
        КОГДА ЕСТЬNULL(ДоговорыКонтрагентовДополнительныеРеквизиты.Значение, ЛОЖЬ) = ЛОЖЬ
            ТОГДА "Нет"
        ИНАЧЕ "Да"
    КОНЕЦ КАК Статус
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
        ПО ДоговорыКонтрагентов.Ссылка = ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка
            И (ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство = &Свойство)
21 x-fa
 
05.10.21
15:03
(20) спасибо