Имя: Пароль:
1C
 
Динамический список, вывод справочника с подчиненным
0 Drock
 
31.10.09
00:59
На примере Номенклатура-Характеристики

Имеем ДС с произвольным запросом

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

Основная таблица Справочник.Номенклатура
Динамическое считывание - истина.

Таблица на форме вывод иерархический.

Однако характеристики не выводит :(

В консоли запрос выполняется нормально и выводит номенклатуру с характеристиками.
1 BabySG
 
31.10.09
01:33
Это ппц...
ХарактеристикиНоменклатуры.Владелец.Ссылка

И, кстати, в это случае нет смысла в динамическом считывании.
2 BabySG
 
31.10.09
10:02
Не, наврал - динамический будет работать...
3 Drock
 
31.10.09
17:35
подправил запрос толку нет :(
ВЫБРАТЬ
   СправочникНоменклатура.Код КАК Код,
   СправочникНоменклатура.Артикул КАК Артикул,
   СправочникНоменклатура.Ссылка КАК Ссылка,
   СправочникНоменклатура.Родитель КАК Родитель,
   СправочникНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
   ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
   Справочник.Номенклатура КАК СправочникНоменклатура
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК
ХарактеристикиНоменклатуры
       ПО СправочникНоменклатура.Ссылка =
ХарактеристикиНоменклатуры.Владелец
4 BabySG
 
01.11.09
01:05
Только завтра смогу на 8.2 смоделировать - сейчас под рукой нет.
У меня похожее все выводит без проблем
5 Drock
 
01.11.09
10:01
(4) за ранее спасибо, на самом деле запрос сложнее но это то, во что я уперся
6 BabySG
 
01.11.09
17:40
Отключи основную таблицу и все будет работать
7 Drock
 
01.11.09
21:00
а как быть с иерархией справочника

вот в чем беда
8 Drock
 
01.11.09
21:01
т..е мне нужна иерархия
9 Drock
 
01.11.09
21:01
и характеристики
10 BabySG
 
01.11.09
22:27
Такое можно добиться только при использовании только основной таблицы и отбора по владельцу.
Других способов пока не нашел.
11 Drock
 
02.11.09
20:27
а можно поподробнее
вот смотри я пытаюсь реализовать подбор товаров, с учетом характеристик на те товары у которых они есть и без у которых нет, при этом идут левые соединения к ценам остаткам и тп, в итоге пока не взлетает

запрос такой

ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ВложенныйЗапрос.Код,
   ВложенныйЗапрос.Ссылка,
   ВложенныйЗапрос.Артикул,
   ВложенныйЗапрос.Характеристика,
   Цены.Цена,
   Остатки.КоличествоОстаток КАК Остаток,
   Заказы.КоличествоОстаток КАК Резервы,
   Транзиты.КоличествоОстаток КАК Транзиты
ИЗ
   (ВЫБРАТЬ
       СправочникНоменклатура.Код КАК Код,
       СправочникНоменклатура.Артикул КАК Артикул,
       СправочникНоменклатура.Ссылка КАК Ссылка,
       СправочникНоменклатура.Родитель КАК Родитель,
       СправочникНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
       ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
   ИЗ
       Справочник.Номенклатура КАК СправочникНоменклатура
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
           ПО СправочникНоменклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец) КАК ВложенныйЗапрос
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК Цены
       ПО ВложенныйЗапрос.Ссылка = Цены.Номенклатура
           И ВложенныйЗапрос.Характеристика = Цены.Характеристика
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки(, ЗаказКлиента.Склад В (&Склад)) КАК Заказы
       ПО ВложенныйЗапрос.Ссылка = Заказы.Номенклатура
           И ВложенныйЗапрос.Характеристика = Заказы.Характеристика
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(, ЗаказПоставщику.Склад В (&Склад)) КАК Транзиты
       ПО ВложенныйЗапрос.Ссылка = Транзиты.Номенклатура
           И ВложенныйЗапрос.Характеристика = Транзиты.Характеристика
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад В (&Склад)) КАК Остатки
       ПО ВложенныйЗапрос.Ссылка = Остатки.Номенклатура
           И ВложенныйЗапрос.Характеристика = Остатки.Характеристика
12 BabySG
 
02.11.09
20:47
Ну так забей на основную таблицу :)
Похожее я обошел через событие выбора в табличном поле - только обрати внимание, что попадает в ВыбранноеЗначение :)
Тут идеология вообще в корне поменялась по сравнению с 8.1
13 TitanLuchs
 
02.11.09
20:48
(0) У тебя на форме есть элемент, у которого указан путь к данным поля "Характеристика" динамического списка?
14 Drock
 
02.11.09
20:50
у меня вроде как свободный запрос
15 Drock
 
02.11.09
20:52
(14) произвольный ) с терминологией пока путаюсь
16 Drock
 
02.11.09
20:52
на форме у меня таблица путь к данным Дс колонки расставлены
17 TitanLuchs
 
02.11.09
20:55
(15) Это понятно. Хоть и произвольный, но у него есть поля, которые можно указать в качестве источника данных. У тебя таких полей будет 8:

Код,
Ссылка,
Артикул,
Характеристика,
Цена,
Остаток,
Резервы,
Транзиты

Посмотри в конструкторе формы в правом верхнем углу, найди свой динамический список, там они все есть. Вот проверь, в левом верхнем, там где элементы формы, указан путь к полю динамического списка "Характеристика" у одноименного элемента формы?
18 TitanLuchs
 
02.11.09
20:57
(0) Сама колонка на форме отображается, но она пустая, так?
19 BabySG
 
02.11.09
21:00
(17) Оно указано, но не колонка будет пустая - а список в целом.
20 BabySG
 
02.11.09
21:11
Кстати, понятно, почему оно работать не будет, когда указана основная таблица.
В этом случае запись должна быть уникальна по ссылке из основной таблице, а когда на одну ссылку есть несколько записей - получаем бред.
21 Drock
 
02.11.09
21:59
(17)
ДС.Харкатеристика
22 Drock
 
02.11.09
22:00
(18) да, но когда выбираешь тип цены то заполняет, но не на все товары
24 Drock
 
02.11.09
22:04
Товары    ДинамическийСписок    ДинамическийСписок
Группировка        ПоляГруппировкиКомпоновкиДанных
ДинамическоеСчитываниеДанных    Ложь    Булево
ОсновнаяТаблица    ""    Строка
Отбор        ОтборКомпоновкиДанных
Параметры    ВидЦены, Склад    ЗначенияПараметровДанныхКомпоновкиДанных
Порядок    Характеристика(убыв.)    ПорядокКомпоновкиДанных
ПроизвольныйЗапрос    Истина    Булево
ТекстЗапроса    ""    Строка
УсловноеОформление        УсловноеОформлениеКомпоновкиДанных
25 Drock
 
02.11.09
22:05
(23) явно промахнулся
26 BabySG
 
02.11.09
22:05
(24) У тебя отключена осн. таблица - поэтому все и работает :)

Посмотри, что будет, если ее включить:
http://pic.ipicture.ru/uploads/091102/1498/c4RFGlR8zH.png
http://pic.ipicture.ru/uploads/091102/1498/tcwUn2y5iU.png
27 Drock
 
02.11.09
22:09
а не дает :( я ж вложенным запросом выгребаю)
28 Drock
 
02.11.09
22:18
В идеале получить дерево

группа |
      |_товар |
              |_характеристика1
              |
              |_характеристика2


              .
              |_характеристикаN
29 Drock
 
02.11.09
22:20
удобство набивки заказов по 300-400 строк очевидно ), не везде существуют b2b и нормальный обмен и иногда люди пытаются дать свой физический адрес вместо элеткронного
30 Drock
 
02.11.09
22:44
видимо придется искать обходной путь построения
32 BabySG
 
03.11.09
00:00
(28) Такая задача решается :)
33 Drock
 
03.11.09
07:13
Это хорошо, надо теперь понять как )
34 Mitriy
 
03.11.09
08:31
вообще-то трудно найти оптимальные способы, пока динамические списки глючны изначально... ждем десятку...
35 NULLL
 
03.11.09
09:55
(33) В книге разработка сложных отчетов, описывается как выводить данные в виде иерархии, не через итоги.
36 Drock
 
03.11.09
10:17
(35) спасибо погляжу
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший