v7: 1с++ запрос. Как получить Родителя номенклатуры в регистре? #496267


#0 by Absurdus
Такой вот запрос. Спр.Номенклатура двухуровневый. У групп номенклатуры есть свои реквизиты. Например Менеджер. Как в данном запросе сделать выборку по конкретному менеджеру?
#1 by Fragster
LEFT JOIN со справочником номенклатуры
#2 by ДенисЧ
сджойнся со справочником и бери оттуда PArentID
#3 by el-gamberro
Левое соединение со справочником номеклатура.
#4 by Fragster
по ид родителя
#5 by Ёпрст
inner join  к справочнику номенклатуры с условием на менеджера + присоединение по PARENTID
#6 by Fragster
#7 by Absurdus
У меня с синтаксисом туго :) Дополните запрос как надо, если не трудно
#8 by el-gamberro
Если туго, готовь вазелин.
#9 by Fragster
блин, и как народ 1сит без знания скуля?
#10 by Absurdus
Так и 1сим, скуль тока щас начали изучать
#11 by Ёпрст
inner join $Справочник.Номенклатура Спр on Спр.id = Рег.Номенклатура inner join $Справочник.Номенклатура Род on Род.id = Спр.parentid and $Род.Менеджер = :ВыбМенеджер
#12 by OnCheck
а скуля для дбф и не надо!
#13 by Absurdus
КО на страже?
#14 by Злобный Йожег
Ты удивишься, но для 1С достаточно знания SELECT :) на крайняк, еще UPDATE. И всё...
#15 by Absurdus
SELECT    Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],    Рег.МОЛ as МОЛ,    Рег.Фирма as Фирма,      Рег.СтатусПартии as СтатусПартии,    Рег.Партия as Партия,    Рег.ДатаПартии as ДатаПартии,    Рег.ЦенаПрод as ЦенаПрод,      Рег.КоличествоНачальныйОстаток as КоличествоНачОст,    Рег.КоличествоПриход as КоличествоПриход,    Рег.КоличествоРасход as КоличествоРасход,    Рег.КоличествоКонечныйОстаток as КоличествоКонОст   FROM    $РегистрОстаткиОбороты.ПартииНаличие(:НачДата,:КонДата~,,,,                      (inner join $Справочник.Номенклатура as Спр on Спр.id = Рег.Номенклатура                       inner join $Справочник.Номенклатура as Род on Род.id = Спр.parentid and Запрос не выполнился!
#16 by el-gamberro
Ппц... не там джойнишь.
#17 by Absurdus
а хде? Where      (inner join $Справочник.Номенклатура as Спр on Спр.id = Рег.Номенклатура                      inner join $Справочник.Номенклатура as Род on Род.id = Спр.parentid and
#18 by Absurdus
FROM $РегистрОстаткиОбороты.ПартииНаличие(:НачДата,:КонДата~,,,, WHERE inner join $Справочник.Номенклатура as Спр on Спр.id = Рег.Номенклатура and inner join $Справочник.Номенклатура as Род on Род.id = Спр.parentid and $Род.Менеджер = :ВыбМенеджер Так?
#19 by Ёпрст
нет
#20 by Absurdus
лаконично
#21 by ДенисЧ
FROM $РегистрОстаткиОбороты.ПартииНаличие(:НачДата,:КонДата~,,,, ,(Количество,СуммаУпр,СуммаРуб,СуммаБезНДС)) as Рег inner join $Справочник.Номенклатура as Спр on Спр.id = Рег.Номенклатура and inner join $Справочник.Номенклатура as Род on Род.id = Спр.parentid WHERE $Род.Менеджер = :ВыбМенеджер Кде-то в таком вот аксепте...
#22 by Ёпрст
ну условие можно и в место присоедиенния воткнуть
#23 by Absurdus
Сработало! |GROUP BY Рег.Номенклатура"; Опять запрос поломался... В чем щас косяк??
#24 by ДенисЧ
а что ты этим хотел добиться? У тебя результат уже и так свёрнут...
#25 by Absurdus
НИфига он не свернут в том то и дело
#26 by ДенисЧ
Всё свернуто...
#27 by Absurdus
Номенклатура повторяется, остатки разные
#28 by SnarkHunter
Судя по количеству твоих веток по запросам - этого мало...
#29 by Это_mike
а напуркуа его выдергивать развернутым, а потом сворачивать? "тайное знание"? или "секретное колдунство"?
#30 by Absurdus
Ну пля, ну как свернуть в самом начале?
#31 by Это_mike
#32 by Это_mike
в списке измерений указывать только те измерения, в разрезе которых надо получить результат....
#33 by Absurdus
SELECT    Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],    Рег.МОЛ as МОЛ,    Рег.Фирма as Фирма,      Рег.СтатусПартии as СтатусПартии,    Рег.Партия as Партия,    Рег.ДатаПартии as ДатаПартии,    Рег.ЦенаПрод as ЦенаПрод,      Рег.КоличествоНачальныйОстаток as КоличествоНачОст,    Рег.КоличествоПриход as КоличествоПриход,    Рег.КоличествоРасход as КоличествоРасход,    Рег.КоличествоКонечныйОстаток as КоличествоКонОст   FROM     $РегистрОстаткиОбороты.ПартииНаличие(:НачДата,:КонДата~,Неделя,,,       inner join $Справочник.Номенклатура as Спр on Спр.id = Рег.Номенклатура       inner join $Справочник.Номенклатура as Род on Род.id = Спр.parentid WHERE        ($Род.Менеджер = :ВыбМенеджер) Убрал лишние измерения, запрос не выполнился!
#34 by Fragster
я таки предлагаю автору самы-самые основы SQL выучить, а потом представить, что же возвратит какая из таблиц и какие поля там будут
#35 by ДенисЧ
Тебе осталась одна забава, пальцы в ^W^W найти сильного яду и обмазать им стену...
#36 by Absurdus
Вот я и учусь сижу :)
#37 by Fragster
тогда читай до просветления
#38 by Cthulhu
Ёпрст, вылезь в мой топик в "прямых запросах" на 1с++-форуме, а?.. меня уже конкретно глючит, полез пытаться укрупнять запросы и в джойнах запутался. ЗЫ: и может подскажет кто - 1склайт не сравнивает текстовые строки?.. отбор по коду справочника пытаюсь впихнуть между 03:400:00-0 т 03:999:99-9 - выдает только 03:400:<*> зарраза.
#39 by el-gamberro
(37,35) Какие все добрые, человек только постигает, а вы на него накинулись.
#40 by Ёпрст
эээ.. а в какой ветке там? .. да я и не спец в прямых запросах, так.. основы только знаю.
#41 by Absurdus
SELECT    Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],      Рег.КоличествоНачальныйОстаток as КоличествоНачОст,    Рег.КоличествоПриход as КоличествоПриход,    Рег.КоличествоРасход as КоличествоРасход,    Рег.КоличествоКонечныйОстаток as КоличествоКонОст   FROM     $РегистрОстаткиОбороты.ПартииНаличие(:НачДата,:КонДата~,Неделя,,,       inner join $Справочник.Номенклатура as Спр on Спр.id = Рег.Номенклатура       inner join $Справочник.Номенклатура as Род on Род.id = Спр.parentid WHERE        $Род.Менеджер = :ВыбМенеджер Запрос не выполнился! Уж сократил всё, что можно. Всё равно не пашет
#42 by ДенисЧ
Мы должны угадать сообщение об ошибке? И каков будет приз?
#43 by Absurdus
Были бы описания ошибок, я бы тут вопросы тоже не задавал.
#44 by ДенисЧ
ODBCRecordSet :: ПолучитьОписаниеОшибки / GetLastError Описание: позволяет получить описание последней ошибки в виде строки. Это мне одному снится?
#45 by Cthulhu
Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],    Рег.КоличествоНачальныйОстаток as КоличествоНачОст,  Рег.КоличествоПриход as КоличествоПриход,  Рег.КоличествоРасход as КоличествоРасход,  Рег.КоличествоКонечныйОстаток as КоличествоКонОст FROM $РегистрОстаткиОбороты.ПартииНаличие(:НачДата,:КонДата~,Неделя,,,,(Номенклатура),(Количество) as Рег  inner join $Справочник.Номенклатура as Род on Род.id = Спр.parentid WHERE    $Род.Менеджер = :ВыбМенеджер (нафига джойнить номенклатор - ты и так из запроса элементы справочника получаешь в "Номенклатура" и никаких отборов по параметрам элементов не строишь и никакие реквизиты не получаешь)
#46 by Absurdus
А как тогда добавить условие по реквизиту группы номенклатуры? Ага, спс. Косяк нашел.
#47 by Это_mike
$Род.Менеджер = :ВыбМенеджер
#48 by Ёпрст
:)) ты не доганяешь, там всё правильно у автора.. там условие на реквизит группы справочника.. вот и 2 джоина - первый для получения элемента, второй для получения группы + фильтр... А автор поди в ВыбМенеджер хню устанавливает, или..это вообще периодический реквизит еще..
#49 by Absurdus
Не, тупо скобку забыл. Пока всё пашет. Но это еще не всё. Завтра продолжим, гы-гы Кстати, обещанное просветление частично таки наступило
#50 by Ёпрст
оно наступит, когда запрос без ВТ напишешь сам хоть раз..
#51 by ДенисЧ
Ну ты, того... Про яд всё равно не забывай...
#52 by Это_mike
FROM $РегистрОстаткиОбороты.ПартииНаличие(:НачДата,:КонДата~,Неделя,,inner join $Справочник.Номенклатура as Спр on Спр.id = Номенклатура      inner join $Справочник.Номенклатура as Род on Род.id = Спр.parentid ,$Род.Менеджер = :ВыбМенеджер,(Номенклатура),(Количество) as Рег
#53 by Ёпрст
будет ли это быстрее ?, вот в чем вопрос.. :)
#54 by Cthulhu
: по первому проходу в ДБФ (ч/з 1склайт) чота все медленнее получается прямыми запросами, кстати. так и должно быть?..
#55 by Это_mike
Должно. в принципе, проверил пару раз (только на более простом отборе) - но тут кэширование влияет. Разница небольшая есть.
#56 by Ёпрст
где то были замеры.. как делать условие, снаружи или унутри.. вроде особой разницы не было.. не помню ужо.. Да и ладно..
#57 by Fragster
на самом дее если менеджер на выходе не нужен - то в условие виртуальной таблицы можно запихать нОМЕНКЛАТУРА in (select Спр.id from $Справочник.Номенклатура as Спр on Спр.id = Номенклатура     inner join (Спр.id from $Справочник.Номенклатура where Спр.Менеджер = :ВыбМенеджер) as Род on Род.id = Спр.parentid) ну, или около того
#58 by Fragster
нОМЕНКЛАТУРА in (select Спр.id from $Справочник.Номенклатура as Спр where  Спр.parentid in (Спр.id from $Справочник.Номенклатура where Спр.Менеджер = :ВыбМенеджер))
#59 by Fragster
ну там еще в паре мест ошибки
#60 by Это_mike
ну да. "или около того" :-)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С