Запрос выбора документов, в табличной части которого одна строка

1. avaskvas 05.12.17 14:53 Сейчас в теме
Коллеги, прошу вашей помощи! Закончилось годовое внедрение 1С. Опыт программирование есть, но не в 1С.
Поставлена задача: сформировать отчет, в котором будет видна зависимость как из одной номенклатуры получается другая. Решил действовать так: выбрать все документы отчета производства за смену, где заполнена вкладка "продукция" и вкладка "Материалы" имеет одну строку (одну характеристику - это нужно чтобы отсечь смешивание, если несколько характеристик в материалах). Но проблема в том, что просто выбрать документы по материалам с одной строкой не получается. Один раз получилось, но когда пытался добавить продукцию - все сломалось.
Вот пример запроса, где просто выбираю документы по материалам:
ВЫБРАТЬ
	ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
	ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
	ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки КАК НомерСтроки
ИЗ
	Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
{ГДЕ
	(КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) = 1) КАК КОличествоСтрок}


Прошу направить в нужном направлении!
По теме из базы знаний
Найденные решения
8. dandykry 10 05.12.17 16:06 Сейчас в теме
ВЫБРАТЬ
    ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
    ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
    КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) КАК НомерСтроки
ИЗ
    Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
        ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСмену.Ссылка

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

ИМЕЮЩИЕ  КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) = 1
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Alexey_ 26 05.12.17 15:07 Сейчас в теме
(1) так вот же готовый текст запроса, что еще надо?
3. avaskvas 05.12.17 15:10 Сейчас в теме
(2) Таки не работает! Так как в отчет попадают документы, где вкладка "Материалы" имеет больше оной строки! Вот мозга за мозгу и заходит, вроде это просто ведь, а не пашет! И кучу интернета перепахал уже и как только не попробовал!
Прикрепленные файлы:
4. mickey.1cx 400 05.12.17 15:23 Сейчас в теме
(3) уберите фигурные скобки { } в условии
7. avaskvas 05.12.17 15:50 Сейчас в теме
(4) Скобки убрал - не помогло.
А вот сделал такой запрос:
ВЫБРАТЬ
	ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
	ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
	КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) КАК НомерСтроки
ИЗ
	Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
		ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСмену.Ссылка

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

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

Вроде как заработало. По крайней мере не нашел документов с несколькими строками материалов. Правда, когда начинаю выводить продукцию, то фигня получается!
6. Alexey_ 26 05.12.17 15:34 Сейчас в теме
(3)для чего тут фигурные скобки?
5. EVKash 14 05.12.17 15:31 Сейчас в теме
(1) можно вложенным запросом типа такого
ВЫБРАТЬ
	ВложенныйЗапрос.Ссылка
ИЗ
	(ВЫБРАТЬ 
			РеализацияТоваровУслугТовары.Ссылка,
			КОЛИЧЕСТВО(РеализацияТоваровУслугТовары.НомерСтроки) КАК КоличествоСтрок
		ИЗ
			Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
		СГРУППИРОВАТЬ ПО
			РеализацияТоваровУслугТовары.Ссылка) КАК ВложенныйЗапрос
ГДЕ
	ВложенныйЗапрос.КоличествоСтрок = 1
Показать
8. dandykry 10 05.12.17 16:06 Сейчас в теме
ВЫБРАТЬ
    ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
    ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
    КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) КАК НомерСтроки
ИЗ
    Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
        ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСмену.Ссылка

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

ИМЕЮЩИЕ  КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) = 1
Показать
9. avaskvas 05.12.17 16:13 Сейчас в теме
(8) Да именно так уже и сделал. В общем у меня получилось так:
ВЫБРАТЬ
	ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
	ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) КАК НомерСтроки,
	ОтчетПроизводстваЗаСменуПродукция.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатурыПродукции
ИЗ
	Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
		ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСмену.Ссылка
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция
		ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСменуПродукция.Ссылка

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

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

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

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

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

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


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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот