Имя: Пароль:
1C
1С v8
v8: Хочу выбрать из ТЧ документа всю номенклатуру с видом "услуга"
0 oslokot
 
17.01.14
13:19
Хочу выбрать из ТЧ документа всю номенклатуру с видом "услуга"

ВЫБРАТЬ
    Товары.Номенклатура КАК Номенклатура,
    Товары.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры
ПОМЕСТИТЬ ВтТовары
ИЗ
    &Товары КАК Товары
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВтТовары.Номенклатура КАК Номенклатура,
    ВтТовары.ВидНоменклатуры КАК ВидНоменклатуры
ИЗ
    ВтТовары КАК ВтТовары
ГДЕ
    ВтТовары.ВидНоменклатуры = &ВидНоменклатурыУслуга


п.с.
Товары - это ТЧ документа.

Ругается: Поле не найдено "Товары.Номенклатура.ВидНоменклатуры"
Что делать?
38 Wobland
 
17.01.14
13:57
(37) справочник.вид из твоя ТЗ левое справочник
39 oslokot
 
17.01.14
13:58
(38) да ругается все равно: При выборе данных из объекта в запросе не могут присутствовать соединения и объединения
40 oslokot
 
17.01.14
13:58
ВЫБРАТЬ
    Товары.Номенклатура КАК Номенклатура,
    Товары.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    ВидыНоменклатуры.Ссылка
ПОМЕСТИТЬ ВтТовары
ИЗ
    &Товары КАК Товары
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
        ПО Товары.Номенклатура.ВидНоменклатуры = ВидыНоменклатуры.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВтТовары.Номенклатура КАК Номенклатура
ИЗ
    ВтТовары КАК ВтТовары
41 Wobland
 
17.01.14
13:59
(39) справочник.вид из ВТ_из_твоей_ТЗ левое справочник
42 olegves
 
17.01.14
13:59
(34) если УФ, то надо вызывать процедуру с &НаСервере, чтобы найти строки
43 Wobland
 
17.01.14
14:00
(40) откуда внезапно возник Справочник.ВидыНоменклатуры?
44 Wobland
 
17.01.14
14:00
(42) это хорошо или плохо?
45 olegves
 
17.01.14
14:01
(41) строки перебрать не быстрее будет?
46 oslokot
 
17.01.14
14:01
(44) ща, секунду. я чето настряпал не то...
47 Wobland
 
17.01.14
14:02
(45) да кришна его знает. у автора уже букет вариантов
48 olegves
 
17.01.14
14:02
(44) по другому в УФ не работает
49 Мимохожий Однако
 
17.01.14
14:04
Выбирай из ТЧ Услуги
50 hhhh
 
17.01.14
14:11
(45) нет не будет. Это запрос в цикле получится.
51 Жан Пердежон
 
17.01.14
14:12
(48) из первого запроса в (0) убераешься строку, на которую ругается
и во второй запрос добавляешь левое соединение (или через точку)
52 oslokot
 
17.01.14
14:21
(8) (51) тогда ругается на второй запрос ВтТовары.ВидНоменклатуры - не найдена
53 Wobland
 
17.01.14
14:25
напиши уже ПавильныйСправочник.ВидНоменклатуры
54 oslokot
 
17.01.14
14:51
(53) нифина не получается
ЛЕВОЕ соединение во втором запросе делать?
55 oslokot
 
17.01.14
15:04
(51)
Типа так?

ВЫБРАТЬ
    Товары.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВтТовары
ИЗ
    &Товары КАК Товары
;

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

Но естественно ругается что нет поля "тТовары.Номенклатура.ВидНоменклатуры"
56 catena
 
17.01.14
15:06
(55)Разберись уже, какой тип у тебя "Номенклатура" в ТЧ и что есть "ВидНоменклатуры" относительно справочника Номенклатура. Если в ТЧ справочник и видНоменклатуры - реквизит, никаких танцев с бубном не надо.
57 Aprobator
 
17.01.14
15:09
(0) Покажи как ты параметр Товары заполняешь и не имей людям мозг.
58 Aprobator
 
17.01.14
15:10
и что за документ такой, в котором товары и услуги в одной ТЧ лежат?
59 Kalambur
 
17.01.14
15:12
ВЫБРАТЬ
    Товары.Номенклатура КАК Номенклатура,
    ВидНоменклатуры.ТипНоменклатуры КАК УСЛУГАЙАТАКАЯ,
    ВидыНоменклатуры.Ссылка
ПОМЕСТИТЬ ВтТовары
ИЗ
    &Товары КАК Товары
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
        ПО Товары.Номенклатура.ВидНоменклатуры = ВидыНоменклатуры.Ссылка
ГДЕ
ВидНоменклатуры.ТипНоменклатуры = &ВЫБЕРИМЕНЯВПЕРЕЧИСЛЕНИЯХ

;
...
60 oslokot
 
17.01.14
15:12
(56) Да все уже описано выше. Это типовая КА, хотите - УПП

Номенклатура это Справочник.Номенклатура. Реквизит ТЧ документа
Номенклатура.ВидНоменклатуры - это ссылка на Справочник.ВидыНоменклатуры

Реквизита "ВидНоменклатуры" в ТЧ документа НЕТ

(57)
        Запрос.УстановитьПараметр("Товары", Товары.Выгрузить());
        Запрос.УстановитьПараметр("ВидНоменклатурыУслуга", Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Услуга",Истина));

(58)
Это мой самописный документ
61 catena
 
17.01.14
15:15
(60)Не верю, доказывай скринами. Потому что если бы все было так, Номенклатура.Видноменклатуры в запросе работало бы.
62 Aprobator
 
17.01.14
15:17
(60) значит Номенклатура либо составной тип и есть пустое значение, либо номенклатура так же смотрит на самописный справочник.
63 Aprobator
 
17.01.14
15:17
...Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Услуга",Истина)... - вообще песня.
64 Aprobator
 
17.01.14
15:18
Поскольку типа Услуга может быть у нескольких видов номенклатуры.
65 oslokot
 
17.01.14
15:20
(61) (62) так он и есть. Типовой справочник Номенклатура, ТЧ документа "Номенклатура" НЕ составной реквизит, НЕ пустой.
(63) знаю, гамнокод, ну хотите так сделаю
Запрос.УстановитьПараметр("ТипНоменклатурыУслуга", Перечисления.ТипыНоменклатуры.Услуга)
вопростов нет.
Просто не работает нихрена запрос в (0)
66 oslokot
 
17.01.14
15:22
(61)
Товары.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры в (0) выдает ошибку "Поле не найдено"
67 catena
 
17.01.14
15:24
(65)Либо конфигурацию скинь куда-нибудь, либо скрины показывай, где видно назначенные типы. Где-то ты врешь.
68 oslokot
 
17.01.14
15:28
(67) минуту, делаю скрины :)
69 sapphire
 
17.01.14
15:28
Идиотизм зашкаливал. Пятницо
70 Aprobator
 
17.01.14
15:31
(69) и не говори
71 sapphire
 
17.01.14
15:31
(55) У Вас не все в порядке с мозгами...

ВЫБРАТЬ
    Товары.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВтТовары
ИЗ
    &Товары КАК Товары
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВтТовары.Номенклатура КАК Номенклатура,
    ВидыНоменклатуры.Ссылка
ИЗ
    ВтТовары КАК ВтТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура СпрНоменклатура
ПО ВтТовары.Номенклатура = СпрНоменклатура.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
        ПО СпрНоменклатура.ВидНоменклатуры = ВидыНоменклатуры.Ссылка
72 oslokot
 
17.01.14
15:31
(69) я знал на что иду :)
73 oslokot
 
17.01.14
15:31
74 oslokot
 
17.01.14
15:32
(71) согласен :) ща попробую ваш запрос
75 Wobland
 
17.01.14
15:32
завязывайте уже. нельзя ж столько этим онанизмом заниматься. впрочем, меньше сотни постов не выйдет ;)
76 sapphire
 
17.01.14
15:33
(75) Таки пятница :)
77 salvator
 
17.01.14
15:34
(73) Значит нет такого поля в справочнике Номенклатура.
Конструктором пользуйся.
78 Wobland
 
17.01.14
15:35
oslokot, давай шайтан-вьюер, я тебе сделаю по-быстрому ;)
79 Aprobator
 
17.01.14
15:36
(77) кто ж его спер оттуда?
80 sapphire
 
17.01.14
15:37
А вообще сводится всё к одному запорсу, жаль что ТС настолько не догадлив :)

Хочу выбрать из ТЧ документа всю номенклатуру с видом "услуга"

ЭКВИВАЛЕНТНО:
ВЫБРАТЬ СпрНоменкалтура.* ИЗ Справочник.Номенклатура СпрНоменкалтура ГДЕ СпрНоменкалтура.Ссылка В (&Товары)
И  СпрНоменкалтура.ВидНоменклатуры=&Услуга
81 salvator
 
17.01.14
15:37
(79) Ну либо Номенклатура - не ссылка на справочник "номенклатура"
82 sapphire
 
17.01.14
15:38
(77) Еще один мега гуру...
Не надо выставлять своё невежество напоказ :)
83 sapphire
 
17.01.14
15:38
(81) Нормально там с типами всё
ПРОСТО НЕ НАДО МНОГОТОЧИЯМИ ПОЛЬЗОВАТСЯ
84 sapphire
 
17.01.14
15:39
(81) Если указать явно соединения с необходимыми таблицами, то все будет нормально.
85 oslokot
 
17.01.14
15:39
Ща, минутку, пытаюсь изобразить (71)
86 oslokot
 
17.01.14
15:43
Вот что в итоге. Заработало:

        Запрос = Новый Запрос;
        Запрос.Текст =
        
        "ВЫБРАТЬ
        |    Товары.Номенклатура КАК Номенклатура
        |ПОМЕСТИТЬ ВтТовары
        |ИЗ
        |    &Товары КАК Товары
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВтТовары.Номенклатура КАК Номенклатура,
        |    ВидыНоменклатуры.Ссылка
        |ИЗ
        |    ВтТовары КАК ВтТовары
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
        |        ПО ВтТовары.Номенклатура = СпрНоменклатура.Ссылка
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
        |        ПО (СпрНоменклатура.ВидНоменклатуры = ВидыНоменклатуры.Ссылка)
        |ГДЕ
        |    ВидыНоменклатуры.ТипНоменклатуры = &ТипНоменклатурыУслуга";
        
        Запрос.УстановитьПараметр("Товары", Товары.Выгрузить());
        Запрос.УстановитьПараметр("ТипНоменклатурыУслуга", Перечисления.ТипыНоменклатуры.Услуга);
87 Wobland
 
17.01.14
15:44
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура
убери

с тебя стишок или песенка ;)
88 sapphire
 
17.01.14
15:45
(86) Если на поля таблицы из ЛЕВОЕ СОЕДИНЕНИЕ накладывается условие в ГДЕ, то ЛЕВОЕ СОЕДИНЕНИЕ становится ВНУТРЕННИМ.
89 sapphire
 
17.01.14
15:45
(87) издеваешься? :)
90 sapphire
 
17.01.14
15:46
(86) Времянка-то зачем?
Разве ты потом используешь номер строки где-либо?
91 Wobland
 
17.01.14
15:46
коллеги, я сдуру ляпнул или там справочник номенклатуры не нужен?
92 catena
 
17.01.14
15:46
(83)Да ладно, (55) должно работать в указанных реалиях по-любому.
93 sapphire
 
17.01.14
15:46
(86) До тебя дошло ПОЧЕМУ заработало?
94 sapphire
 
17.01.14
15:47
(92) фиг вам. Не обязано. Я п клавиатурой по вывески йопнул бы за такой код....

SELECT * FROM *
95 sapphire
 
17.01.14
15:48
(91) Сдуру
96 oslokot
 
17.01.14
15:48
(90) я не понял, что за времянка?
(93) пока нет
97 Aprobator
 
17.01.14
15:48
(92) если только в ТЧ не затесалась пустая номенклатура. Что по видимому мы тут и наблюдаем. Проверки заполнения то, судя по скрину, у товарища нет.
98 Aprobator
 
17.01.14
15:49
кака раз связь со справочником номенклатуры эту пустую номенклатуру то и рубанула.
99 oslokot
 
17.01.14
15:49
(97) нету пустой номенклатуры, клянусь
100 sapphire
 
17.01.14
15:49
(97) А если в ТЧ поле Номенклатура - составного типа, чо тогда?
Как по Вашему платформа должна определить тип?!
101 Aprobator
 
17.01.14
15:51
(100) уже спрашивал - грит, что не составной.
102 Aprobator
 
17.01.14
15:51
+(101) на скриен в 73 можно посмотреть.
103 sapphire
 
17.01.14
15:51
(101) Без разницы.
104 sapphire
 
17.01.14
15:52
(102) Плевать, даже скрин не нужен
105 catena
 
17.01.14
15:52
(97)Да вы гоните, товарищи, если тип не составной, даже с пустой строкой работает без всяких(явных) соединений. Неоптимально, да, но работать-то будет.
106 sapphire
 
17.01.14
15:52
(105) Ну-ну. За неявные соединения увольнять надо.
107 oslokot
 
17.01.14
15:53
(105) да, но почему у меня не работает?
Скрин дал, В ТЧ Товары 2 записи. Пустых нет
108 catena
 
17.01.14
15:53
(106)Речь-то не о том. Ошибок давать не должно. А у него (55) вообще не выполнялось.
109 sapphire
 
17.01.14
15:54
(108) Да правильно оно ругнулось.
110 sapphire
 
17.01.14
15:54
(105) Да ну?
111 Wobland
 
17.01.14
15:55
(107) (108) кто убил группу Дятлова?
112 catena
 
17.01.14
15:55
113 catena
 
17.01.14
15:55
И строка пустая и соединений нет. Без ошибок все прекрасно
114 sapphire
 
17.01.14
15:57
(112) Как минимум, платформы - разные :)))
у тебя явно 8.1 - у него 8.2 :))))
115 Aprobator
 
17.01.14
15:58
(113) условие тока добавь еще, так для контрольки.
116 sapphire
 
17.01.14
15:58
(111) диверсанты... едем дальше
117 sapphire
 
17.01.14
15:59
(115) У неё древняя платформа.
118 oslokot
 
17.01.14
16:01
(117) а, то есть запрос в (0) по определению работать не может?
119 sapphire
 
17.01.14
16:02
(118) На платформах, кроме 8.1 - да.
120 catena
 
17.01.14
16:02
(117)Нет, ну до чего упертый-то,а

http://savepic.net/4341203.png
121 catena
 
17.01.14
16:03
8.2.18.61
122 catena
 
17.01.14
16:03
А запрос (0) не работает по-любому, я про (55) сейчас
123 catena
 
17.01.14
16:04
Всё, я домой, вернусь с пивом :)
124 sapphire
 
17.01.14
16:04
(120) А ты как думала :)
125 oslokot
 
17.01.14
16:06
(124) можно еще вопрос?
126 sapphire
 
17.01.14
16:07
(125) ?
127 Aprobator
 
17.01.14
16:08
по логике вещей тут и ТЧ выгружать то не надо, а только одну конкретную колонку.
128 oslokot
 
17.01.14
16:09
(126) получившийся запрос (86) оптимален? или там левое на внутреннее поменять надо?
129 sapphire
 
17.01.14
16:11
(128) левое на внутреннее поменять надо
130 sapphire
 
17.01.14
16:11
(127) Ну там временки ваще не нужны, ИМХО
131 oslokot
 
17.01.14
16:14
(129) Просто какойто громоздкий запрос получился
132 Aprobator
 
17.01.14
16:15
(130) если документ не записан, то куда без них?
133 sapphire
 
17.01.14
16:25
(132) Без разницы передавать надо не ТЗ а массив исходя из (0) запрос намного проще будет - одна строка
134 oslokot
 
17.01.14
16:27
(133) Вы мне скажите только, почему не находит поле "Товары.Номенклатура.ВидНоменклатуры" в (0)? Потому что платформа 8.2?
135 sapphire
 
17.01.14
16:48
(134) Потому что "Это неправильные пчелы, Пятачок" (с)
Даже особо вникать не хочу.
Если указывать явно соединения, то ошибок и глупостей намного меньше, да писанины больше, зато ясности КАК это работает заведомо больше.

Товары - времянка, а не физическая таблица справочника со всеми реквизитами.
136 oslokot
 
17.01.14
16:50
(135) Ну все равно спасибо! за учебу
137 hhhh
 
17.01.14
16:52
(99) вроде должна быть таб часть услуги, там услуги. В таб часть товары - там товары. Зачем вы в одну тч всё сгрузили?