Получение Всех товаров в состав которых вхдят выбранные материалы
Коллеги, добрый день!
Подскажите пожалуйста, чет не могу сообразить (возможно завтра придет озарение конечно, надо переспать с этим))).
Задачка такая, в БП 3 нужно создать отчет на СКД, суть которого вывести все готовые изделия в которые входит список материалов, которые я указываю в параметрах отчета.
Запрос написал просто:
Но результат не идет, т.к. есть условие, что если мы к примеру указали материалы [мат1 и мат2], то выводим только те изделия, в которые входят ОБА материала, т.е. если в Изделие1 входит Мат1, а в Изделие2 входит мат2, а в Изделие3 входит мат1, мат2 и мат3 к примеру,
Если мы установили в Параметры: [мат1, мат2], то в результате нужно вывести только Изделие3 в таблицу и его составляющие.
Подозреваю что нужно с разностью таблиц работать, но чет пока не соображу как оптимально сделать запрос.
Или возможно результат придется собирать программно, чего не хотелось бы конечно.
При текущем запросе, выводятся все Изделия (Изделие1, Изделие2, Изделие3) т.к. где-то есть мат1, где-то мат2, а где-то и то и другое.
Подсобите пожалуйста, люди добрые))
Завтра утром, если никто не ответит, обязательно напишу свое решение.
Спасибо!
Подскажите пожалуйста, чет не могу сообразить (возможно завтра придет озарение конечно, надо переспать с этим))).
Задачка такая, в БП 3 нужно создать отчет на СКД, суть которого вывести все готовые изделия в которые входит список материалов, которые я указываю в параметрах отчета.
Запрос написал просто:
ВЫБРАТЬ
СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК Изделие,
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Материал,
СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК Количество
ИЗ
Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
ГДЕ
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура В(&СписокСсылокМатериалов)
СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК Изделие,
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Материал,
СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК Количество
ИЗ
Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
ГДЕ
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура В(&СписокСсылокМатериалов)
Но результат не идет, т.к. есть условие, что если мы к примеру указали материалы [мат1 и мат2], то выводим только те изделия, в которые входят ОБА материала, т.е. если в Изделие1 входит Мат1, а в Изделие2 входит мат2, а в Изделие3 входит мат1, мат2 и мат3 к примеру,
Если мы установили в Параметры: [мат1, мат2], то в результате нужно вывести только Изделие3 в таблицу и его составляющие.
Подозреваю что нужно с разностью таблиц работать, но чет пока не соображу как оптимально сделать запрос.
Или возможно результат придется собирать программно, чего не хотелось бы конечно.
При текущем запросе, выводятся все Изделия (Изделие1, Изделие2, Изделие3) т.к. где-то есть мат1, где-то мат2, а где-то и то и другое.
Подсобите пожалуйста, люди добрые))
Завтра утром, если никто не ответит, обязательно напишу свое решение.
Спасибо!
Прикрепленные файлы:

Найденные решения
В итоге вот так получилось и работает без вложенных запросов, только с временными таблицами, для большей читаемости:
Всех благодарю за обсуждения, С Новым Годом и Рождеством! :)
ВЫБРАТЬ
СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК ГотовоеИзделие,
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Материал,
СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК КоличествоШтукМатериалов
ПОМЕСТИТЬ ВТ_Спецификации
ИЗ
Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
ГДЕ
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура В(&СписокСсылокМатериалов)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Спецификации.ГотовоеИзделие КАК ГотовоеИзделие
ПОМЕСТИТЬ ВТ_Изделия
ИЗ
ВТ_Спецификации КАК ВТ_Спецификации
СГРУППИРОВАТЬ ПО
ВТ_Спецификации.ГотовоеИзделие
ИМЕЮЩИЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Спецификации.Материал) >= &КоличествоВыбранныхМатериалов
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Изделия.ГотовоеИзделие КАК ГотовоеИзделие,
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Материал,
СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК КоличествоШтукМатериалов
ИЗ
ВТ_Изделия КАК ВТ_Изделия
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
ПО ВТ_Изделия.ГотовоеИзделие = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка
ПоказатьВсех благодарю за обсуждения, С Новым Годом и Рождеством! :)
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Будет что-то вроде:
ВЫБРАТЬ
Ссылка КАК Изделие
ПОМЕСТИТЬ ВТИзделия
ИЗ
Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие
ГДЕ
Номенклатура В(&СписокСсылокМатериалов)
СГРУППИРОВАТЬ ПО
Ссылка
ИМЕЮЩИЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ НомерСтроки) >= 2
;
Выбрать
Т1.Изделие,
Т2.Номенклатура,
Т2.Количество
ИЗ
ВТИзделия КАК Т1
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК Т2
ПО Т1.Изделие = Т2.Ссылка
Показать
(2) Спасибо! Но это не рабочее решение к сожалению, результат абсолютно такой-же получился, что и в моем случае, т.е. попадает лишнее изделие)
А если задуматься, что мы тут вообще делаем (1. Выбираем все изделия у которых в составе >= 2 я так понимаю ) иначе за что еще по логике отвечает эта конструкция
А если материалов в составе 5 и мы их укажем в параметрах?)
Не совсем понимаю логику решения
А если задуматься, что мы тут вообще делаем (1. Выбираем все изделия у которых в составе >= 2 я так понимаю ) иначе за что еще по логике отвечает эта конструкция
ИМЕЮЩИЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ НомерСтроки) >= 2
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ НомерСтроки) >= 2
А если материалов в составе 5 и мы их укажем в параметрах?)
Не совсем понимаю логику решения
Прикрепленные файлы:

В итоге вот так получилось и работает без вложенных запросов, только с временными таблицами, для большей читаемости:
Всех благодарю за обсуждения, С Новым Годом и Рождеством! :)
ВЫБРАТЬ
СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК ГотовоеИзделие,
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Материал,
СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК КоличествоШтукМатериалов
ПОМЕСТИТЬ ВТ_Спецификации
ИЗ
Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
ГДЕ
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура В(&СписокСсылокМатериалов)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Спецификации.ГотовоеИзделие КАК ГотовоеИзделие
ПОМЕСТИТЬ ВТ_Изделия
ИЗ
ВТ_Спецификации КАК ВТ_Спецификации
СГРУППИРОВАТЬ ПО
ВТ_Спецификации.ГотовоеИзделие
ИМЕЮЩИЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Спецификации.Материал) >= &КоличествоВыбранныхМатериалов
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Изделия.ГотовоеИзделие КАК ГотовоеИзделие,
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Материал,
СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК КоличествоШтукМатериалов
ИЗ
ВТ_Изделия КАК ВТ_Изделия
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
ПО ВТ_Изделия.ГотовоеИзделие = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка
ПоказатьВсех благодарю за обсуждения, С Новым Годом и Рождеством! :)
ВЫБРАТЬ
СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК Изделие,
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Материал,
СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК Количество
ИЗ
Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие1
ПО (СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка = СпецификацииНоменклатурыИсходныеКомплектующие1.Ссылка)
ГДЕ
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура В(&СписокСсылокМатериалов)
И СпецификацииНоменклатурыИсходныеКомплектующие1.Номенклатура В(&СписокСсылокМатериалов)
И СпецификацииНоменклатурыИсходныеКомплектующие.НомерСтроки <> СпецификацииНоменклатурыИсходныеКомплектующие1.НомерСтроки
Показать
(14) Харош конечно, жму твою мужественную руку, все в одном запросе без временных таблиц, возможно этот вариант даже быстрее будет отрабатывать 100500 тысячах строк
Но привязываться к НомеруСтроки по мне так это так себе история. В реальных задачах особенно, когда в одном изделии один порядок материалов, в другом другой, и 150% что в какой-то момент столкнешся с такой историей и придется все переделывать.
Чисто мое субъективное мнение бро.
Если есть мысли на этот счет, можем обсудить без проблем
Но привязываться к НомеруСтроки по мне так это так себе история. В реальных задачах особенно, когда в одном изделии один порядок материалов, в другом другой, и 150% что в какой-то момент столкнешся с такой историей и придется все переделывать.
Чисто мое субъективное мнение бро.
Если есть мысли на этот счет, можем обсудить без проблем
(16)
ВЫБРАТЬ
СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК Изделие,
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Материал,
СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК Количество
ИЗ
Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
ГДЕ
СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка В
(ВЫБРАТЬ
Исходные.Ссылка КАК Ссылка
ИЗ
Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК Исходные
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Количество
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка В (&СписокСсылокМатериалов)) КАК Материалы
ПО
ИСТИНА
СГРУППИРОВАТЬ ПО
Исходные.Ссылка,
Материалы.Количество
ИМЕЮЩИЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Исходные.Номенклатура) >= Материалы.Количество)
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот