Имя: Пароль:
1C
1С v8
Запрос
0 polkin
 
17.03.12
13:46
чувствую задницей, что не прав, но вот где - не пойму.
не могу свести в одну таблицу Номенклатуру, Номенклатуру с Характеристикой, и остатки.......

   "ВЫБРАТЬ
   |    0 КАК Продать,
   |    0 КАК Цена,
   |    ВложенныйЗапрос.Номенклатура КАК Номенклатура,
   |    ВложенныйЗапрос.Описание,
   |    ВложенныйЗапрос.ФайлКартинки,
   |    ВложенныйЗапрос.Характеристика КАК Характеристика,
   |    ВложенныйЗапрос.Заказано,
   |    ВложенныйЗапрос.Количество,
   |    ВложенныйЗапрос.ЕдиницаИзмерения,
   |    ВложенныйЗапрос.СтавкаНДС
   |ИЗ
   |    (ВЫБРАТЬ
   |        ВложенныйЗапрос.Номенклатура КАК Номенклатура,
   |        ВложенныйЗапрос.Описание КАК Описание,
   |        ВложенныйЗапрос.ФайлКартинки КАК ФайлКартинки,
   |        ВЫБОР
   |            КОГДА ЗаказыПокупателейОстатки.КоличествоОстаток > 0
   |                ТОГДА ЗапасыНаСкладахОстатки.КоличествоОстаток - ЗаказыПокупателейОстатки.КоличествоОстаток
   |            ИНАЧЕ ЗапасыНаСкладахОстатки.КоличествоОстаток
   |        КОНЕЦ КАК Количество,
   |        ВложенныйЗапрос.Характеристика КАК Характеристика,
   |        ЗаказыПоставщикамОстатки.КоличествоОстаток КАК Заказано,
   |        ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
   |        ВложенныйЗапрос.СтавкаНДС КАК СтавкаНДС
   |    ИЗ
   |        (ВЫБРАТЬ
   |            ВложенныйЗапрос.Номенклатура КАК Номенклатура,
   |            ВложенныйЗапрос.Описание КАК Описание,
   |            ВложенныйЗапрос.ФайлКартинки КАК ФайлКартинки,
   |            ХарактеристикиНоменклатуры.Ссылка КАК Характеристика,
   |            ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
   |            ВложенныйЗапрос.СтавкаНДС КАК СтавкаНДС
   |        ИЗ
   |            (ВЫБРАТЬ
   |                Номенклатура.Ссылка КАК Номенклатура,
   |                Номенклатура.НаименованиеПолное КАК Описание,
   |                Номенклатура.ФайлКартинки КАК ФайлКартинки,
   |                Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
   |                Номенклатура.СтавкаНДС КАК СтавкаНДС
   |            ИЗ
   |                Справочник.Номенклатура КАК Номенклатура
   |            ГДЕ
   |                Номенклатура.Родитель = &Родитель) КАК ВложенныйЗапрос
   |                ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
   |                ПО ВложенныйЗапрос.Номенклатура = ХарактеристикиНоменклатуры.Владелец) КАК ВложенныйЗапрос
   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыНаСкладах.Остатки КАК ЗапасыНаСкладахОстатки
   |            ПО ВложенныйЗапрос.Номенклатура = ЗапасыНаСкладахОстатки.Номенклатура
   |                И ВложенныйЗапрос.Характеристика = ЗапасыНаСкладахОстатки.Характеристика
   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки
   |            ПО ВложенныйЗапрос.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура
   |                И ВложенныйЗапрос.Характеристика = ЗаказыПоставщикамОстатки.Характеристика
   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
   |            ПО ВложенныйЗапрос.Номенклатура = ЗаказыПокупателейОстатки.Номенклатура
   |                И ВложенныйЗапрос.Характеристика = ЗаказыПокупателейОстатки.Характеристика
   |    
   |    ОБЪЕДИНИТЬ ВСЕ
   |    
   |    ВЫБРАТЬ
   |        ВложенныйЗапрос.Номенклатура,
   |        ВложенныйЗапрос.Описание,
   |        ВложенныйЗапрос.ФайлКартинки,
   |        ВложенныйЗапрос.Количество,
   |        NULL,
   |        ВложенныйЗапрос.Заказано,
   |        ВложенныйЗапрос.ЕдиницаИзмерения,
   |        NULL
   |    ИЗ
   |        (ВЫБРАТЬ
   |            ВложенныйЗапрос.Номенклатура КАК Номенклатура,
   |            ВложенныйЗапрос.Описание КАК Описание,
   |            ВложенныйЗапрос.ФайлКартинки КАК ФайлКартинки,
   |            ЗаказыПоставщикамОстатки.КоличествоОстаток КАК Заказано,
   |            ВЫБОР
   |                КОГДА ЗаказыПокупателейОстатки.КоличествоОстаток > 0
   |                    ТОГДА ЗапасыНаСкладахОстатки.КоличествоОстаток - ЗаказыПокупателейОстатки.КоличествоОстаток
   |                ИНАЧЕ ЗапасыНаСкладахОстатки.КоличествоОстаток
   |            КОНЕЦ КАК Количество,
   |            ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения
   |        ИЗ
   |            (ВЫБРАТЬ
   |                Номенклатура.Ссылка КАК Номенклатура,
   |                Номенклатура.НаименованиеПолное КАК Описание,
   |                Номенклатура.ФайлКартинки КАК ФайлКартинки,
   |                Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения
   |            ИЗ
   |                Справочник.Номенклатура КАК Номенклатура
   |            ГДЕ
   |                Номенклатура.Родитель = &Родитель) КАК ВложенныйЗапрос
   |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки
   |                ПО ВложенныйЗапрос.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура
   |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыНаСкладах.Остатки КАК ЗапасыНаСкладахОстатки
   |                ПО ВложенныйЗапрос.Номенклатура = ЗапасыНаСкладахОстатки.Номенклатура
   |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
   |                ПО ВложенныйЗапрос.Номенклатура = ЗаказыПокупателейОстатки.Номенклатура) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос
   |
   |УПОРЯДОЧИТЬ ПО
   |    Номенклатура,
   |    Характеристика
   |ИТОГИ ПО
   |    Номенклатура ТОЛЬКО ИЕРАРХИЯ
   |АВТОУПОРЯДОЧИВАНИЕ";
1 AlexNew
 
17.03.12
14:03
Запросы по ЗУПу изучал? Объединение, где характеристика не пустая и где пустая.
2 Нуф-Нуф
 
17.03.12
14:04
за вложенные запросы я бы руки отрубал
3 Нуф-Нуф
 
17.03.12
14:06
юзай временные запросы. и неипи честным людям мосх
4 AlexNew
 
17.03.12
14:08
(3) Зачем тут временные запросы?
5 Нуф-Нуф
 
17.03.12
14:18
(4) см (2)
6 МихаилМ
 
17.03.12
14:20
(0)

1) вынесите повторяющиеся соединения из обединения и группировок.

2)
что это
КАК ВложенныйЗапрос) КАК ВложенныйЗапрос

- читать противно.

3)

как допущено, что

ЗаказыПокупателейОстатки.КоличествоОстаток < 0
7 ptrtss
 
17.03.12
14:20
Лучше в таком духе




"ВЫБРАТЬ
|    Номенклатура.Ссылка КАК Номенклатура,
|    Номенклатура.НаименованиеПолное КАК Описание,
|    ""Номенклатура.ФайлКартинки"" КАК ФайлКартинки,
|    ЕСТЬNULL(ХарактеристикиНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК ХарактеристикаНоменклатуры,
|    ""Номенклатура.ЕдиницаИзмерения"" КАК ЕдиницаИзмерения,
|    Номенклатура.СтавкаНДС КАК СтавкаНДС
|ПОМЕСТИТЬ втНоменклатураИХарактеристики
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
|        ПО Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец
|ГДЕ
|    Номенклатура.Родитель = &Родитель
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ВложенныйЗапрос.Номенклатура КАК Номенклатура,
|    ВложенныйЗапрос.Описание КАК Описание,
|    ВложенныйЗапрос.ФайлКартинки КАК ФайлКартинки,
|    ВЫБОР
|        КОГДА ЗаказыПокупателейОстатки.КоличествоОстаток > 0
|            ТОГДА ТоварыНаСкладахОстатки.КоличествоОстаток - ЗаказыПокупателейОстатки.КоличествоОстаток
|        ИНАЧЕ ТоварыНаСкладахОстатки.КоличествоОстаток
|    КОНЕЦ КАК Количество,
|    ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
|    ЗаказыПоставщикамОстатки.КоличествоОстаток КАК Заказано,
|    ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
|    ВложенныйЗапрос.СтавкаНДС КАК СтавкаНДС
|ИЗ
|    втНоменклатураИХарактеристики КАК ВложенныйЗапрос
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
|                ,
|                (Номенклатура, ХарактеристикаНоменклатуры) В
|                    (ВЫБРАТЬ
|                        т.Номенклатура,
|                        т.ХарактеристикаНоменклатуры
|                    ИЗ
|                        втНоменклатураИХарактеристики КАК т)) КАК ТоварыНаСкладахОстатки
|        ПО ВложенныйЗапрос.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
|            И ВложенныйЗапрос.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(
|                ,
|                (Номенклатура, ХарактеристикаНоменклатуры) В
|                    (ВЫБРАТЬ
|                        т.Номенклатура,
|                        т.ХарактеристикаНоменклатуры
|                    ИЗ
|                        втНоменклатураИХарактеристики КАК т)) КАК ЗаказыПоставщикамОстатки
|        ПО ВложенныйЗапрос.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура
|            И ВложенныйЗапрос.ХарактеристикаНоменклатуры = ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки(
|                ,
|                (Номенклатура, ХарактеристикаНоменклатуры) В
|                    (ВЫБРАТЬ
|                        т.Номенклатура,
|                        т.ХарактеристикаНоменклатуры
|                    ИЗ
|                        втНоменклатураИХарактеристики КАК т)) КАК ЗаказыПокупателейОстатки
|        ПО ВложенныйЗапрос.Номенклатура = ЗаказыПокупателейОстатки.Номенклатура
|            И ВложенныйЗапрос.ХарактеристикаНоменклатуры = ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры
|
|УПОРЯДОЧИТЬ ПО
|    Номенклатура,
|    ХарактеристикаНоменклатуры
|ИТОГИ ПО
|    Номенклатура ТОЛЬКО ИЕРАРХИЯ
|АВТОУПОРЯДОЧИВАНИЕ";
8 AlexNew
 
17.03.12
14:20
(5) См. текст задачи.
9 Нуф-Нуф
 
17.03.12
14:24
(8) пофигу. нет такой задачи в которой временный запрос уступил вложенному
10 AlexNew
 
17.03.12
14:24
Ты хочешь выбрать всю номенклатуру невзирая на остатки? Но это не самое страшное.
11 AlexNew
 
17.03.12
14:25
(9) Нет тут вложенных запросов.
12 Нуф-Нуф
 
17.03.12
14:29
(11) в сабже нет вложенных запросов?
13 Нуф-Нуф
 
17.03.12
14:29
автор. озвучь задачу.
14 МихаилМ
 
17.03.12
14:43
(9)
ошибаетесь

планы запросов с ВТ имеют наименьший приоритет в кэше планов .

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

фактически происходит навязвание плана исполнения.
что и приводит к невозможности подстройки под текущюю нагрузку
и рассмотрению для полного переанализа.
15 AlexNew
 
17.03.12
14:56
Здесь нет ошибки? "сответственно для часто исползуемых запросов будет постояное престроение плана
и статистик. "
16 МихаилМ
 
17.03.12
14:58
(15)
нет. тк речь про конкретно запросы с ВТ.
17 AlexNew
 
17.03.12
15:10
(16) Мне кажется не будет? Могу быть не прав.
18 МихаилМ
 
17.03.12
15:20
(17)
лень сейчас проверять.
но  событие использование кэшированного плана
СКОРЕЕ ВСЕГО можно посмотреть в профайлере.

либо исполнить N раз  на ненагруженной системе   и посмотреть статистику
создания планов.

информация у меня старая из книги хэндерсона по скл 2000. читал на английском лет 6-7 назад.

может скл 2005 .. 2012
поумнел в использовании ВТ.
19 polkin
 
17.03.12
15:49
(13)
Вывести всю номенклатуру или номенклатуру + характеристики с остатками (даже если 0)
20 polkin
 
17.03.12
15:52
(7) не работает.....
21 Нуф-Нуф
 
17.03.12
15:54
я стал сторонником ВТ после того как на курсах у Гончарова он озвучил последнюю позицию разработчиков платформы, что ВТ оптимальнее вложенных. запрос на временных гораздо легче воспринимается для чтения и для отладки. тогда как вложенные прочитать и отладить почти не реально.
кроме того то как 1с вложенные запросы переложит на запрос к БД - это совсем не очевидно, и часто это приводит к неоптимальным запросам
22 polkin
 
17.03.12
15:59
(21) что выносить в ВТ?
23 Нуф-Нуф
 
17.03.12
16:04
(22) все что во вложенных
24 AlexNew
 
17.03.12
16:04
(13),(19) Тогда - да 3 ВТ.
25 AlexNew
 
17.03.12
16:06
Поторопился, Справочник номенклатура и 2 левых соединения.
26 Нуф-Нуф
 
17.03.12
16:14
всего одна ВТ

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВремТаблицаНоменклатуры.Номенклатура,
   ВремТаблицаНоменклатуры.ХарактеристикаНоменклатуры,
   ТоварыНаСкладахОстатки.КоличествоОстаток
ИЗ
   ВремТаблицаНоменклатуры КАК ВремТаблицаНоменклатуры
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
       ПО ВремТаблицаНоменклатуры.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
           И ВремТаблицаНоменклатуры.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
27 AlexNew
 
17.03.12
16:20
(26) Еще и все характеристики без остатков?
28 ptrtss
 
17.03.12
16:22
(20)
Еще бы оно работало

Просто вглядись, врубись и сделай в том же духе. Или тебе на блюдечке?
29 polkin
 
17.03.12
16:31
(28) конечно на блюдечке. Врубиться оч тяжело....
30 AlexNew
 
17.03.12
16:38
(29) Куда врубаться - выкинуть.
31 polkin
 
17.03.12
16:52
http://s61.radikal.ru/i174/1203/7b/f2f2531ee9de.jpg
загрузил чего нужно
моим кодом получаю такую табличку.
но
если номенклатура без характеристики - выводит 2 раза
если номенклатура с характеристикой - выводит общую и с характеристикой
просто номенклатуру (при наличии характеристики ASW-11D) выводить не нужно
32 polkin
 
17.03.12
16:57
http://s001.radikal.ru/i195/1203/a1/3953f133f0a2.jpg
это хочу получить
33 polkin
 
17.03.12
18:30
вымерли все что-ли?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.