Имя: Пароль:
1C
1С v8
Помогите сделать запрос
0 101101
 
19.12.23
07:19
Необходимо выбрать всех поставщиков из поступлений товаров по номенклатуре из списка. Таким образом, чтобы каждая номенклатура была у каждого поставщика в любом из поступлений.
1 101101
 
19.12.23
07:21
Вот такой вариант сам написал, но он не правильный. Выводятся все поставщики, которые были когда либо по любой номенклатуре. А надо, чтобы для всех были.

    ТабНом=этотобъект.Номенклатура.ВыгрузитьКолонку("Номенклатура");
    ЗапроСЗаказов=новый запрос;
    ЗапросЗаказов.Текст="ВЫБРАТЬ
                        |    ЗаказПоставщикуТовары.Ссылка.Контрагент
                        |ИЗ
                        |    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
                        |ГДЕ
                        |    ЗаказПоставщикуТовары.Номенклатура В(&Номенклатура)";  
    ЗапросЗаказов.УстановитьПараметр("Номенклатура", табном);
    ИтогЗаказов= ЗапросЗаказов.Выполнить().Выгрузить();
    ИтогЗаказов.Свернуть("Контрагент");
2 Admin_Net_1C
 
19.12.23
07:27
Полное соединение таблицы поставщиков и таблицы товаров
3 101101
 
19.12.23
07:28
(2)
Не могли бы это изобразить в виде кода, пока не очень понятно
4 Волшебник
 
19.12.23
07:47
добавьте в запрос ВЫБРАТЬ РАЗЛИЧНЫЕ, тогда не нужно будет  ИтогЗаказов.Свернуть
5 lopus
 
19.12.23
08:00
Наверное нужно соединение ТЧ Товары со списком, отбрасывать заказы, где есть null при соединение.
6 Лирик
 
19.12.23
08:02
Если я правильно понял, то что то вроде этого.

"ВЫБРАТЬ
|    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК КоличествоНоменклатуры
|ПОМЕСТИТЬ ВсяНоменклатура
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|    Номенклатура.Ссылка В(&МассивНоменклатуры)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ЗаказПоставщикуТовары.Ссылка.Контрагент,
|    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказПоставщикуТовары.Номенклатура) КАК КоличествоНоменклатуры
|ПОМЕСТИТЬ КонтрагентыСНоменклатурой
|ИЗ
|    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
|ГДЕ
|    ЗаказПоставщикуТовары.Номенклатура В(&МассивНоменклатуры)
|
|СГРУППИРОВАТЬ ПО
|    ЗаказПоставщикуТовары.Ссылка.Контрагент
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    КонтрагентыСНоменклатурой.Контрагент
|ИЗ
|    КонтрагентыСНоменклатурой КАК КонтрагентыСНоменклатурой
|        ПОЛНОЕ СОЕДИНЕНИЕ ВсяНоменклатура КАК ВсяНоменклатура
|        ПО (ИСТИНА)
|ГДЕ
|    ВсяНоменклатура.КоличествоНоменклатуры = КонтрагентыСНоменклатурой.КоличествоНоменклатуры"
7 Ногаминебить
 
19.12.23
09:05
В условии стоит, что в любом поступлении от этого поставщика должна быть вся указанная номенклатура. Так что наверное берем вообще все, но потом группируем определяя минимальное количество совпавшей и уже вот это потом соединяем.
8 mikecool
 
19.12.23
09:13
(1) ". Выводятся все поставщики, которые были когда либо по любой номенклатуре. " вы врете, у вас есть условие на вхождение в список номенклатуры
AdBlock убивает бесплатный контент. 1Сергей