Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 16:25

Запрос к справочнику Иерархия

Автор fsa, 13 апр 2016, 09:36

0 Пользователей и 1 гость просматривают эту тему.

fsa

Доброго времени.
Есть вот такой запрос:

Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЛОЖЬ КАК Флажок,
    | Спецификации.Ссылка КАК Спецификация
    |ИЗ
    | Справочник.СпецификацииНоменклатуры КАК Спецификации
    |
    |УПОРЯДОЧИТЬ ПО
    | Спецификация ИЕРАРХИЯ";

Запрос выводит дерево Папки с элементами справочника, все Ок. Теперь пользователи хотят что бы из выборки были исключены Спецификации, в табличной части которых (ВходящиеКомплектующие) есть Есть заранее выбранный ими материал. Кручу верчу запрос, никак, что то я запутался... 

vitasw


fsa

Цитата: vitasw от 13 апр 2016, 09:37
Секция "Где" в запросе.
Не все так просто.....


Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЛОЖЬ КАК Флажок,
    | Спецификации.Ссылка КАК Спецификация
    |ИЗ
    | Справочник.СпецификацииНоменклатуры КАК Спецификации
//|ГДЕ
//| Спецификации.ИсходныеКомплектующие.Номенклатура <> &Номенклатура
    |
    |УПОРЯДОЧИТЬ ПО
    | Спецификация ИЕРАРХИЯ";

//Запрос.УстановитьПараметр("Номенклатура", ЭтаФорма.ВладелецФормы.Номенклатура);

Так не работает...
Добавлено: 13 апр 2016, 10:17


Цитата: vitasw от 13 апр 2016, 09:37
Секция "Где" в запросе.
Самое интересное если неравенство поменять на =
   Спецификации.ИсходныеКомплектующие.Номенклатура = &Номенклатура
Тогда он выбирает только те элементы которые где есть выбранная номенклатура, но тогда не выводит Группы. Нет иерархии!

vitasw

Цитата: fsa от 13 апр 2016, 10:03Не все так просто.....

:D никто и не говорил, что будет просто.

апрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Ссылка КАК Ссылка
|ИЗ
| (ВЫБРАТЬ
| СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК Ссылка,
| СУММА(ЕСТЬNULL(ВЫБОР
| КОГДА СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура В (&СписокНоменклатуры)
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ, 0)) КАК ПризнакВхождения
| ИЗ
| Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
|
| СГРУППИРОВАТЬ ПО
| СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка) КАК ВложенныйЗапрос
|ГДЕ
| ВложенныйЗапрос.ПризнакВхождения = 0
|ИТОГИ ПО
| Ссылка ИЕРАРХИЯ";

Запрос.УстановитьПараметр("СписокНоменклатуры", СписокНоменклатуры);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаСсылка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаСсылка.Следующий() Цикл
// Вставить обработку выборки ВыборкаСсылка
КонецЦикла;

fsa

Цитата: vitasw от 13 апр 2016, 11:58
Цитата: fsa от 13 апр 2016, 10:03Не все так просто.....

:D никто и не говорил, что будет просто.



Пока ВыборкаСсылка.Следующий() Цикл
// Вставить обработку выборки ВыборкаСсылка
КонецЦикла;

А почему не Выгрузить()?

vitasw

Цитата: fsa от 13 апр 2016, 12:19А почему не Выгрузить()?
А я откуда знаю где вы результат запроса будете использовать. Основной акцент на запросе. Что дальше делать - вам решать.

fsa

Цитата: vitasw от 13 апр 2016, 12:30
Цитата: fsa от 13 апр 2016, 12:19А почему не Выгрузить()?
А я откуда знаю где вы результат запроса будете использовать. Основной акцент на запросе. Что дальше делать - вам решать.

В Дерево...

vitasw

Цитата: fsa от 13 апр 2016, 12:34В Дерево...

Вы спрашиваете разрешения? - разрешаю, выгружайте.

fsa

Цитата: vitasw от 13 апр 2016, 12:37
Цитата: fsa от 13 апр 2016, 12:34В Дерево...

Вы спрашиваете разрешения? - разрешаю, выгружайте.
Уже, еще раз спасибо... кстати можно было без вложенного... обойтись, но все равно очень красиво.
Последний вопрос. В справочнике могут быть Спецификации для которых таб часть Входящие пустая. Запрос в таком виде не цепляет такие спецификации вообще. Такие элементы по идее то же попадают под условие
КОГДА СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура В (&СписокНоменклатуры) ТОГДА 0

vitasw

Цитата: fsa от 13 апр 2016, 12:52Такие элементы по идее то же попадают под условие

нет. нужно левое соединение с основной таблицей справочника.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск