Имя: Пароль:
1C
1С v8
Подсчитать количество строк
0 gilders89
 
27.01.21
15:41
Запрос = Новый Запрос(
    "ВЫБРАТЬ
        |    ПоступлениеТоваров.Ссылка,
        |    ПоступлениеТоваров.Дата,
        |    ПоступлениеТоваров.Номер,
        |    ПоступлениеТоваров.ВалютаДокумента,
        |    ПоступлениеТоваров.ВидОперации,
        |    ПоступлениеТоваров.ДатаВходящегоДокумента,
        |    ПоступлениеТоваров.НомерВходящегоДокумента,
        |    ПоступлениеТоваров.Контрагент КАК Контрагент,
        |    ПоступлениеТоваров.СуммаДокумента,    
        |    ПоступлениеТоваров.Склад,
        |    ПоступлениеТоваров.Организация,
        |    ПоступлениеТоваров.Товары.(
        |        Ссылка,
        |        НомерСтроки,
        |        Номенклатура,
        |        ДополнительнаяЕдиницаИзмерения,
        |        КоличествоВДополнительныхЕИ,
        |        Коэффициент,
        |        Количество,
        |        ЕдиницаИзмерения,
        |        ЦенаИзготовителя,
        |        Надбавка,
        |        Цена,
        |        Сумма,
        |        СтавкаНДС,
        |        СуммаНДС,
        |        СтавкаНП,
        |        СуммаНП,
        |        Всего,
        |        НомерГТД,
        |        СтранаПроисхождения,
        |        СчетУчетаБУ,
        |        СчетУчетаНДС,
        |        СтавкаНДСРасчетная,
        |        СтранаВвоза,
        |        ДокументПартии,
        |        ЗаказПоставщику,
        |        ВидТары,
        |        КоличествоМест,
        |        КоличествоВМесте,
        |        ТорговаяНадбавка,
        |        ЦенаОтпускная,
        |        СтавкаНДСОтпускная,
        |        ВидЦены,
        |        СчетУчетаТорговойСкидки,
        |        СуммаПоЦенеИзготовителя,
        |        Сертификат,
        |        УГГР,
        |        СопроводительныеДокументы,
        |        КлючСтроки,
        |        КлючСтрокиДоп,
        |        ХарактеристикаНоменклатуры,
        |        ИнвентарныйНомер,
        |        ЗаказНаПроизводство,
        |        ЦенаРуб,
        |        СуммаРуб,
        |        СуммаНДСРуб,
        |        КоличествоВДопЕИПоступления,
        |        Длина,
        |        Ширина,
        |        ПартияУТ,
        |        ВесБрутто,
        |        Склад
        |    )
        |    ИЗ
        |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваров
        |    ГДЕ
        |    ПоступлениеТоваров.Дата >= &НачДата
        |    И ПоступлениеТоваров.Дата <= &КонДат
        |    И ПоступлениеТоваров.ПометкаУдаления <> ИСТИНА
        |    И ПоступлениеТоваров.Проведен = ИСТИНА
        |    И ПоступлениеТоваров.Контрагент <> &Контрагент"
        );

Как подсчитать количество товаров во вложенной табличной части ПоступлениеТоваров.Товары?
1 Малыш Джон
 
27.01.21
15:48
(0) обращаться в запросе не к таблице документа, а к табличной части напрямую
2 gilders89
 
27.01.21
15:54
Я новичок, можно подробнее
3 Ёпрст
 
гуру
27.01.21
16:01
(2)

ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Ссылка КАК ССылка,
    КОЛИЧЕСТВО(ПоступлениеТоваровУслугТовары.Ссылка) КАК Количество
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Дата >= &Дата

СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслугТовары.Ссылка
4 Ёпрст
 
гуру
27.01.21
16:02
ну и условия свои еще воткни:


ГДЕ
   ПоступлениеТоваровУслугТовары.Ссылка.Дата Между &НачДата И &КонДат
   И ПоступлениеТоваров.Проведен
   И ПоступлениеТоваров.Контрагент <> &Контрагент
5 azernot
 
27.01.21
16:03
(0) Количество строк в табличной части? Количество разных товарных позиций? Или суммарное количество штук?
6 Ёпрст
 
гуру
27.01.21
16:03
*
И ПоступлениеТоваров.ССылка.Проведен
   И ПоступлениеТоваров.ССылк.Контрагент <> &Контрагент
7 gilders89
 
27.01.21
16:32
Мне нужно проверить есть ли записи в табличной части Товары, или нет
8 gilders89
 
27.01.21
16:34
и если нет то пропускать документ
9 DJ Anthon
 
27.01.21
16:34
если их нет, то документ и не попадет в запрос
10 gilders89
 
27.01.21
16:39
если проведен как услуга
11 fisher
 
27.01.21
16:41
(8)
А не проще ли уже в пост-обработке пропускать сроки с пустыми вложенными таблицами? Для чего вообще этот запрос?
Но если очень хочется, то можно как-то так:

ГДЕ
   1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ТоварыТЧ ГДЕ ТоварыТЧ.Ссылка = ПоступлениеТоваров.Ссылка)
12 fisher
 
27.01.21
16:45
(2) Совет новичку - не используй в запросах вложенные таблицы. Это рудиментарный прием. Нужен он только если реально хочешь получить на выходе вложенные таблицы результата. Это очень редко нужно. А больше от них никакого толку и нет.
13 gilders89
 
27.01.21
17:04
Нужно переварить все, для моего уровня сложно. Если не использовать вложенные таблицы Товары, Услуги и другие. Как потом вывести все товары или услуги из документа?
14 gilders89
 
27.01.21
17:12
Можете помочь разобрать
ГДЕ
   1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ТоварыТЧ ГДЕ ТоварыТЧ.Ссылка = ПоступлениеТоваров.Ссылка)
15 gilders89
 
27.01.21
17:20
Точнее мне не понятно, вот эта часть
1 В (
и вот эта
ПЕРВЫЕ 1 1
16 fisher
 
27.01.21
17:21
(13) Основа языка запросов 1С базируется на операциях над плоскими множествами (таблицами). Их соединением и объединением. Результатом также является плоская таблица. Иерархия в результат добавляется конструкцией ИТОГИ. Если выводить в отчет, то для этого обычно используется СКД, где это фактически параметризировано (разработчик или даже пользователь может задать иерархию группировок параметрически).
(14) Ты проверь сначала, работает условие или нет. Я на 100% не уверен. Добавь это условие по И в конец к своим условиям. А объяснить это совсем новичку в запросах будет непросто. Лучше сначала найди учебный курс по запросам какой-нить. Но в двух словах логика такая. Это коррелирующий подзапрос в условии. У него в ГДЕ есть связка с полем внешней таблицы (шапок). То есть как бы по каждой строке шапки находятся все строки табличной части этого документа и по каждой строке табличной части документа возвращается единичка. Но из них в результат берется только одна. То есть, если у документа будет хоть одна строка табличной части, то подзапрос вернет единичку. Поэтому условие в целом фильтрует только те строки шапок, где есть строки табличной части.
17 fisher
 
27.01.21
17:26
Но этот прием удобен, только если сами данные табличной части тебе не нужны. В противном случае поступать нужно не так, а делать обычное соединение таблицы шапок документа с таблицей табличной части документа. В результате будет плоская таблица с комбинациями строк табличной части и данных шапки. А дальше уже - от задачи.