Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Подсчитать количество строк

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

Как подсчитать количество товаров во вложенной табличной части ПоступлениеТоваров.Товары?
   Малыш Джон
 
1 - 27.01.21 - 15:48
(0) обращаться в запросе не к таблице документа, а к табличной части напрямую
   gilders89
 
2 - 27.01.21 - 15:54
Я новичок, можно подробнее
   Ёпрст
 
3 - 27.01.21 - 16:01
(2)
ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Ссылка КАК ССылка,
    КОЛИЧЕСТВО(ПоступлениеТоваровУслугТовары.Ссылка) КАК Количество
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Дата >= &Дата

СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслугТовары.Ссылка

   Ёпрст
 
4 - 27.01.21 - 16:02
ну и условия свои еще воткни:

ГДЕ
   ПоступлениеТоваровУслугТовары.Ссылка.Дата Между &НачДата И &КонДат
   И ПоступлениеТоваров.Проведен
   И ПоступлениеТоваров.Контрагент <> &Контрагент

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.