Имя: Пароль:
1C
 
Помогите с запросом
0 НеПапоКарло
 
03.09.19
08:46
Доброго времени суток!

У номенклатуры может быть несколько штрихкодов для базовой единицы измерения.
Для вывода счета на оплату с штрихкодами номенклатуры необходимо выбирать только один штрихкод.
Для этого был использован вспомогательный ниже запрос. Но он выдает весь набор штрихкодов.
В чём ошибка?

ВЫБРАТЬ
    Штрихкоды.Штрихкод КАК Штрихкод,
    Штрихкоды.Владелец КАК Владелец
ПОМЕСТИТЬ ШтрихКодыЗаказа
ИЗ
    РегистрСведений.Штрихкоды КАК Штрихкоды
ГДЕ
    Штрихкоды.ЕдиницаИзмерения.ЕдиницаПоКлассификатору = Штрихкоды.Владелец.БазоваяЕдиницаИзмерения
    И Штрихкоды.Владелец В
            (ВЫБРАТЬ
                ЗаказПокупателя.Номенклатура КАК Номенклатура
            ИЗ
                Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателя
            ГДЕ
                ЗаказПокупателя.Ссылка = &ТекущийДокумент)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Штрихкоды.Штрихкод КАК ШтрихКод,
    Штрихкоды.Владелец КАК Владелец
ИЗ
    ШтрихКодыЗаказа КАК Штрихкоды
ГДЕ
    Штрихкоды.Штрихкод В
            (ВЫБРАТЬ ПЕРВЫЕ 1
                Штрихкоды.Штрихкод КАК Штрихкод
            ИЗ
                ШтрихКодыЗаказа
            ГДЕ
                ШтрихКодыЗаказа.Владелец = Штрихкоды.Владелец)
1 catena
 
03.09.19
08:53
Потому что каждый штрихкод из таблицы содержится в таблице. Внезапно.
2 Масянька
 
03.09.19
08:53
(0)
    СтруктураШтрихкода = Неопределено;
    Если Упаковка = Неопределено Тогда
        Упаковка = Справочники.УпаковкиНоменклатуры.ПустаяСсылка();
    КонецЕсли;
    
    Если Характеристика = Неопределено Тогда
        Характеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
    КонецЕсли;
        
    Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1
    |    Штрихкоды.ТипШтрихкода,
    |    Штрихкоды.Штрихкод
    |ИЗ
    |    РегистрСведений.Штрихкоды КАК Штрихкоды
    |ГДЕ
    |    Штрихкоды.Владелец = &Владелец
    |    И Штрихкоды.Упаковка = &Упаковка
    |    И Штрихкоды.Характеристика = &Характеристика");

    Запрос.УстановитьПараметр("Владелец", Владелец);
    Запрос.УстановитьПараметр("Упаковка", Упаковка);
    Запрос.УстановитьПараметр("Характеристика", Характеристика);
    
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    Если Выборка.Следующий() Тогда
        СтруктураШтрихкода = ОбщегоНазначенияРТ.СоздатьСтруктуруПоСтрокеВыборки(РезультатЗапроса, Выборка);
    КонецЕсли;    
    
    Возврат СтруктураШтрихкода;

КонецФункции
3 Flover
 
03.09.19
09:02
(0) Вот пример как можно, сгруппируй поле штрихкод.

"ВЫБРАТЬ
|    ЗаказКлиентаТовары.Номенклатура,
|    ВложенныйЗапрос.Штрихкод,
|    ЗаказКлиентаТовары.Количество,
|    ЗаказКлиентаТовары.Сумма
|ИЗ
|    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
|        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|            МАКСИМУМ(ШтрихкодыНоменклатуры.Штрихкод) КАК Штрихкод,
|            ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура
|        ИЗ
|            РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|        
|        СГРУППИРОВАТЬ ПО
|            ШтрихкодыНоменклатуры.Номенклатура) КАК ВложенныйЗапрос
|        ПО ЗаказКлиентаТовары.Номенклатура = ВложенныйЗапрос.Номенклатура
|ГДЕ
|    ЗаказКлиентаТовары.Ссылка = &Ссылка"
4 НеПапоКарло
 
03.09.19
09:29
Спасибо!
5 rogachev
 
03.09.19
09:34
(3) +
6 yavasya
 
03.09.19
09:38
(0) задача бред и запрос плохой
7 yavasya
 
03.09.19
09:38
(4) остановитесь)))