Запрос выбора документов, в табличной части которого одна строка
Коллеги, прошу вашей помощи! Закончилось годовое внедрение 1С. Опыт программирование есть, но не в 1С.
Поставлена задача: сформировать отчет, в котором будет видна зависимость как из одной номенклатуры получается другая. Решил действовать так: выбрать все документы отчета производства за смену, где заполнена вкладка "продукция" и вкладка "Материалы" имеет одну строку (одну характеристику - это нужно чтобы отсечь смешивание, если несколько характеристик в материалах). Но проблема в том, что просто выбрать документы по материалам с одной строкой не получается. Один раз получилось, но когда пытался добавить продукцию - все сломалось.
Вот пример запроса, где просто выбираю документы по материалам:
Прошу направить в нужном направлении!
Поставлена задача: сформировать отчет, в котором будет видна зависимость как из одной номенклатуры получается другая. Решил действовать так: выбрать все документы отчета производства за смену, где заполнена вкладка "продукция" и вкладка "Материалы" имеет одну строку (одну характеристику - это нужно чтобы отсечь смешивание, если несколько характеристик в материалах). Но проблема в том, что просто выбрать документы по материалам с одной строкой не получается. Один раз получилось, но когда пытался добавить продукцию - все сломалось.
Вот пример запроса, где просто выбираю документы по материалам:
ВЫБРАТЬ
ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки КАК НомерСтроки
ИЗ
Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
{ГДЕ
(КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) = 1) КАК КОличествоСтрок}
Прошу направить в нужном направлении!
По теме из базы знаний
- Полезные сведения о языке запросов 1С 8.2
- Разукрупнение (разделение, дробление) и частичная ликвидация основных средств
- Как автоматически заполнить обработкой табличную часть документа "Ввод начальных остатков" (Тип операции = "Расчеты с партнерами"). 1С: ERP
- Загрузка чеков ФНС в документы 1С:БП, 1С:УНФ, 1С:ERP, 1С:КА и 1С:УТ
- Infostart Toolkit – инструмент, в котором сделано то, что давно просят от 1С
Найденные решения
ВЫБРАТЬ
ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) КАК НомерСтроки
ИЗ
Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСмену.Ссылка
СГРУППИРОВАТЬ ПО
ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры
ИМЕЮЩИЕ КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) = 1
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) Скобки убрал - не помогло.
А вот сделал такой запрос:
Вроде как заработало. По крайней мере не нашел документов с несколькими строками материалов. Правда, когда начинаю выводить продукцию, то фигня получается!
А вот сделал такой запрос:
ВЫБРАТЬ
ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) КАК НомерСтроки
ИЗ
Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСмену.Ссылка
СГРУППИРОВАТЬ ПО
ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры
ИМЕЮЩИЕ
КОЛИЧЕСТВО(ОтчетПроизводстваЗаСмену.Материалы.НомерСтроки) = 1
ПоказатьВроде как заработало. По крайней мере не нашел документов с несколькими строками материалов. Правда, когда начинаю выводить продукцию, то фигня получается!
(1) можно вложенным запросом типа такого
ВЫБРАТЬ
ВложенныйЗапрос.Ссылка
ИЗ
(ВЫБРАТЬ
РеализацияТоваровУслугТовары.Ссылка,
КОЛИЧЕСТВО(РеализацияТоваровУслугТовары.НомерСтроки) КАК КоличествоСтрок
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
СГРУППИРОВАТЬ ПО
РеализацияТоваровУслугТовары.Ссылка) КАК ВложенныйЗапрос
ГДЕ
ВложенныйЗапрос.КоличествоСтрок = 1
ПоказатьВЫБРАТЬ
ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) КАК НомерСтроки
ИЗ
Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСмену.Ссылка
СГРУППИРОВАТЬ ПО
ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры
ИМЕЮЩИЕ КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) = 1
Показать
(8) Да именно так уже и сделал. В общем у меня получилось так:
Это с выводом характеристики продукции. Сейчас сюда прикручу период и вывод объема и вуаля! ВСЕМ большое спасибо, пока больше вопросов не имею!
ВЫБРАТЬ
ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.НомерСтроки) КАК НомерСтроки,
ОтчетПроизводстваЗаСменуПродукция.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатурыПродукции
ИЗ
Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСмену.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция
ПО ОтчетПроизводстваЗаСменуМатериалы.Ссылка = ОтчетПроизводстваЗаСменуПродукция.Ссылка
СГРУППИРОВАТЬ ПО
ОтчетПроизводстваЗаСменуМатериалы.Ссылка,
ОтчетПроизводстваЗаСменуМатериалы.ХарактеристикаНоменклатуры,
ОтчетПроизводстваЗаСменуПродукция.ХарактеристикаНоменклатуры
ИМЕЮЩИЕ
КОЛИЧЕСТВО(ОтчетПроизводстваЗаСмену.Материалы.НомерСтроки) = 1
УПОРЯДОЧИТЬ ПО
ХарактеристикаНоменклатуры,
ХарактеристикаНоменклатурыПродукции
ПоказатьЭто с выводом характеристики продукции. Сейчас сюда прикручу период и вывод объема и вуаля! ВСЕМ большое спасибо, пока больше вопросов не имею!
Нельзя использовать агрегатные функции в ограничениях "ГДЕ".
Необходимо воспользоваться "ИМЕЮЩИЕ".
Также зря выбирается НомерСтроки, по условию задачи он всегда будет =1.
Также нет группировок. Неясно, по каким условиям считать количество. Т.е. количество будет считаться по всей совокупности документов. И сработает, если документ у вас всего один в информационной базе.
Вам не удасться получить ХарактеристикаНоменклатуры и отобрать документы с одной строкой за один простой запрос.
Если укажете групппировку по ХарактеристикаНоменклатуры, то условие ИМЕЮЩИЕ всегда будет возвращать истину. При любом количестве строк в табличной части.
Придется воспользоваться пакетом или подзапросом.
В первом запросе отбираете документы с одной строкой в табличной части.
Во втором выбираете ХарактеристикаНоменклатуры.
Думаю, Вам подойдет такой вариант:
Необходимо воспользоваться "ИМЕЮЩИЕ".
Также зря выбирается НомерСтроки, по условию задачи он всегда будет =1.
Также нет группировок. Неясно, по каким условиям считать количество. Т.е. количество будет считаться по всей совокупности документов. И сработает, если документ у вас всего один в информационной базе.
Вам не удасться получить ХарактеристикаНоменклатуры и отобрать документы с одной строкой за один простой запрос.
Если укажете групппировку по ХарактеристикаНоменклатуры, то условие ИМЕЮЩИЕ всегда будет возвращать истину. При любом количестве строк в табличной части.
Придется воспользоваться пакетом или подзапросом.
В первом запросе отбираете документы с одной строкой в табличной части.
Во втором выбираете ХарактеристикаНоменклатуры.
Думаю, Вам подойдет такой вариант:
ВЫБРАТЬ
ОтчетПроизводстваЗаСменуМатериалы.Ссылка
ПОМЕСТИТЬ ВТ_СписокДокументовСоднойСтрокой
ИЗ
Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
СГРУППИРОВАТЬ ПО
ОтчетПроизводстваЗаСменуМатериалы.Ссылка
ИМЕЮЩИЕ
КОЛИЧЕСТВО(ОтчетПроизводстваЗаСменуМатериалы.Ссылка) = 1
;
ВЫБРАТЬ ВТ_СписокДокументовСоднойСтрокой.Ссылка,
Док_ДляХарактеристики.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
ИЗ ВТ_СписокДокументовСоднойСтрокой КАК ВТ_СписокДокументовСоднойСтрокой
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Материалы КАК Док_ДляХарактеристики
ПО ВТ_СписокДокументовСоднойСтрокой.Ссылка = Док_ДляХарактеристики.Ссылка
Показать
а как выбрать табличную часть не с одной строкой (количество=1), а выбрать всего одну строку из табличной части, где любое число строк. Все предлагают использовать (ВЫБРАТЬ ПЕРВЫЕ 1), но тогда в результате выдается всего одна строка. А у меня 5 документов, 5 табличных частей соответственно и в результате должно быть 5 строк. А ВЫБРАТЬ ПЕРВЫЕ возвращает 1 строку.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот