Коллеги, прошу вашей помощи! Закончилось годовое внедрение 1С. Опыт программирование есть, но не в 1С.
Поставлена задача: сформировать отчет, в котором будет видна зависимость как из одной номенклатуры получается другая. Решил действовать так: выбрать все документы отчета производства за смену, где заполнена вкладка "продукция" и вкладка "Материалы" имеет одну строку (одну характеристику - это нужно чтобы отсечь смешивание, если несколько характеристик в материалах). Но проблема в том, что просто выбрать документы по материалам с одной строкой не получается. Один раз получилось, но когда пытался добавить продукцию - все сломалось.
Вот пример запроса, где просто выбираю документы по материалам:

```1c
    ВЫБРАТЬ
    ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
    ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
    ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки КАК НомерСтроки
    ИЗ
    Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
    {ГДЕ
    (КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) = 1) КАК КОличествоСтрок}
```

Прошу направить в нужном направлении!
---
```1c
    ВЫБРАТЬ
    ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
    ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
    КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) КАК НомерСтроки
    ИЗ
    Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
    ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСмену.Ссылка

    СГРУППИРОВАТЬ ПО
    ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
    ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры

    ИМЕЮЩИЕ КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) = 1
```
---
так вот же готовый текст запроса, что еще надо?
---
Таки не работает! Так как в отчет попадают документы, где вкладка "Материалы" имеет больше оной строки! Вот мозга за мозгу и заходит, вроде это просто ведь, а не пашет! И кучу интернета перепахал уже и как только не попробовал!
---
уберите фигурные скобки { } в условии
---
Скобки убрал - не помогло.
А вот сделал такой запрос:

```1c
    ВЫБРАТЬ
    ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
    ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
    КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) КАК НомерСтроки
    ИЗ
    Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
    ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСмену.Ссылка

    СГРУППИРОВАТЬ ПО
    ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
    ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры

    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(ОтчетПроизводстваЗаСмену.Материалы.НомерСтроки) = 1
```

Вроде как заработало. По крайней мере не нашел документов с несколькими строками материалов. Правда, когда начинаю выводить продукцию, то фигня получается!
---
для чего тут фигурные скобки?
---
можно вложенным запросом типа такого
```1c
    ВЫБРАТЬ
    ВложенныйЗапрос.Ссылка
    ИЗ
    (ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Ссылка,
    КОЛИЧЕСТВО(РеализацияТоваровУслугТовары.НомерСтроки) КАК КоличествоСтрок
    ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслугТовары.Ссылка) КАК ВложенныйЗапрос
    ГДЕ
    ВложенныйЗапрос.КоличествоСтрок = 1
```
---
```1c
    ВЫБРАТЬ
    ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
    ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
    КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) КАК НомерСтроки
    ИЗ
    Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
    ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСмену.Ссылка

    СГРУППИРОВАТЬ ПО
    ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
    ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры

    ИМЕЮЩИЕ КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) = 1
```
---
Да именно так уже и сделал. В общем у меня получилось так:

```1c
    ВЫБРАТЬ
    ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
    ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) КАК НомерСтроки,
    ОтчетПроизводстваЗаСменуПродукция.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатурыПродукции
    ИЗ
    Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
    ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСмену.Ссылка
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция
    ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСменуПродукция.Ссылка

    СГРУППИРОВАТЬ ПО
    ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
    ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
    ОтчетПроизводстваЗаСменуПродукция.ХарактеристикаНоменклатуры

    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(ОтчетПроизводстваЗаСмену.Материалы.НомерСтроки) = 1

    УПОРЯДОЧИТЬ ПО
    ХарактеристикаНоменклатуры,
    ХарактеристикаНоменклатурыПродукции
```

Это с выводом характеристики продукции. Сейчас сюда прикручу период и вывод объема и вуаля! ВСЕМ большое спасибо, пока больше вопросов не имею!
---
Нельзя использовать агрегатные функции в ограничениях "ГДЕ".
Необходимо воспользоваться "ИМЕЮЩИЕ".
Также зря выбирается НомерСтроки, по условию задачи он всегда будет =1.

Также нет группировок. Неясно, по каким условиям считать количество. Т.е. количество будет считаться по всей совокупности документов. И сработает, если документ у вас всего один в информационной базе.
Вам не удасться получить ХарактеристикаНоменклатуры и отобрать документы с одной строкой за один простой запрос.
Если укажете групппировку по ХарактеристикаНоменклатуры, то условие ИМЕЮЩИЕ всегда будет возвращать истину. При любом количестве строк в табличной части.
Придется воспользоваться пакетом или подзапросом.
В первом запросе отбираете документы с одной строкой в табличной части.
Во втором выбираете ХарактеристикаНоменклатуры.

Думаю, Вам подойдет такой вариант:

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

```1c
    ВЫБРАТЬ
    Ссылка
    ИЗ
    Документ.ОтчетПроизводстваЗаСмену.Материалы
    ГДЕ
    НомерСтроки > 0
```