Имя: Пароль:
1C
1С v8
СКД связь наборов данных - можно ли сделать изящнее?
0 lexushka
 
11.05.17
15:08
Добрый день

Имеем
Несколько наборов данных

НаборДанных1
   Номенклатура, Характеристика  <- Получено из спаровчников с левым соединением

НаборДанных2 (ПродажиОборот)
   Номенклатура, Характеристика, Количество

НаборДанных3 (ТоварыНаСкладеОстатки)…

не суть

Если связывать наборы данных на вкладке связи наборов данных как

НаборДанных1 НаборДанных2  Номенклатура Номенклатура
НаборДанных1 НаборДанных2  Характеристика Характеристика

все перлестно работает пока у номенклатуры есть "Ведется учет по характеристикам"

Если такого свойства у номенклатуры нет то в отчет она не попадает

Есесно если сделать связь просто
НаборДанных1 НаборДанных2  Номенклатура Номенклатура

то она попадает, но тогда получается черти-что для номенклатуры с хар-ками :)

Потоптался, потоптался в итоге забабахал прое ПолеСвязи как

ВЫРАЗИТЬ(ИсточникДанных.Номенклатура.НаименованиеПолное КАК СТРОКА(250))) + ", " + (ВЫРАЗИТЬ(ИсточникДанных.ХарактеристикаНоменклатуры.Наименование КАК СТРОКА(250))

и теперь мои связи на вкладке Связи наборовДанных выглядят как
НаборДанных1 НаборДанных2  ПолеСвязи ПолеСвязи

Вроде все заработало как я хотел
Но есть чувство что я сделал "грязный" трюк из-за того что ен сообразил как воспользоваться вверенном мне мощным инструментом

Не поможете

Спасибо

ЗЫ:

в обычном запросе я бы на вкладке связи сделал бы типа

Выбор когда Номенклатура.ВедетсяУчетПоХарактеристикам Тогда НаборДанных1.Характеристика = НаборДанных2.Характеристика Иначе Истина Конец
1 Fragster
 
гуру
11.05.17
15:13
ну там еще есть какая-то колонка "условие связи", которой я никогда не пользовался
2 Вафель
 
11.05.17
15:15
выбирай всегда пустую характеристику если не ведется во всех наборах и будет счастье
3 lexushka
 
11.05.17
15:19
(2) и то верно :)
4 rasta
 
11.05.17
15:43
в наборе 1 если не ведется то будет в результате null, а во втором наборе пустая ссылка, надо привести к единому типу, т.е. в 1 наборе где не может быть характеристик поставь Значение(Справочники.Хар....ПустаяСсылка())
5 rasta
 
11.05.17
15:47
ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
6 lexushka
 
11.05.17
16:45
(4) те в Наборе1 при левом соединении сделать типа

isnull(ХарактеристикиНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))?
7 Windyhead
 
11.05.17
16:56
(6) Пустую ссылку лучше формировать при формировании набора данных, а не в условии соединения.
И не забудь достать линейку из тумбочки и 3 раза ударить себя по пальцам за англ. написание.
8 echo77
 
11.05.17
18:01
(2) +1
9 rasta
 
12.05.17
08:41
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры,
    Номенклатура.ВестиУчетПоХарактеристикам
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    НЕ Номенклатура.ВестиУчетПоХарактеристикам

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

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