8.х СУММА(РеализацияТоваровУслуг.Товары.Количество)

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем bitum_k, 17 май 2017.

  1. TopicStarter Overlay
    bitum_k
    Offline

    bitum_k

    Регистрация:
    13 май 2017
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Всем доброго дня!

    Запросом выбираю Реализацию:

    Код:
    Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
         | РеализацияТоваровУслуг.Ссылка,
         | РеализацияТоваровУслуг.Дата,
         | РеализацияТоваровУслуг.Контрагент,
         | РеализацияТоваровУслуг.Склад,
         | РеализацияТоваровУслуг.СуммаДокумента,
         | РеализацияТоваровУслуг.Товары
         |ИЗ
         | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
         |ГДЕ
         | РеализацияТоваровУслуг.Проведен = ИСТИНА
         | И РеализацияТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
         |УПОРЯДОЧИТЬ ПО
         | РеализацияТоваровУслуг.Контрагент,
         | РеализацияТоваровУслуг.Дата
         |АВТОУПОРЯДОЧИВАНИЕ";
    
       Запрос.УстановитьПараметр("Дата1", Объект.ДатаНачала);
       Запрос.УстановитьПараметр("Дата2", тКонецДня(Объект.ДатаКонца));
       Выборка = Запрос.Выполнить().Выбрать();
    Друзья, подскажите, как перейти к Выборка.Товары, чтобы получить Сумму Количества Товаров?

    П.С. имеется в виду не Перебором, а Запросом.
    Последнее редактирование модератором: 17 май 2017
  2. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.515
    Симпатии:
    452
    Баллы:
    104
    В любом случае придется перебирать результат запроса. То бишь, перебор. А вот результат запроса может быть разным. Может быть и таблица значений, может быть и выборка запроса.
    Данные берете не из той таблицы
    Что-то типо этого будет
    Код:
    ВЫБРАТЬ
        РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
        РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
        РеализацияТоваровУслугТовары.Ссылка.Склад КАК Склад,
        РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента КАК СуммаДокумента,
        РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
        РеализацияТоваровУслугТовары.Количество КАК Количество,
        РеализацияТоваровУслугТовары.Цена КАК Цена,
        РеализацияТоваровУслугТовары.Сумма КАК Сумма
    ИЗ
        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    ГДЕ
        РеализацияТоваровУслугТовары.Ссылка.Проведен
        И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
    
  3. TopicStarter Overlay
    bitum_k
    Offline

    bitum_k

    Регистрация:
    13 май 2017
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Благодарю за конструктивный отклик.

    Вот смотрите:

    РеализацияТоваровУслугТовары - это уже ТЧ РеализацияТоваровУслуг

    Своим запросом я выбираю РеализацияТоваровУслуг и формирую таблицу Фирм, где каждой Фирме нужно вывести Сумму Количества Товара.

    Ваш код - это уже работа с ТЧ - т.е. с Товарами, но!

    Как перейти от каждого экземпляра РеализацияТоваровУслуг к Вами описанной ТЧ ?
    Последнее редактирование: 17 май 2017
  4. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.515
    Симпатии:
    452
    Баллы:
    104
    Если честно, то не совсем понял задачу. Что нужно получить с итоге?
    --- Объединение сообщений, 17 май 2017 ---
    А. Походу понял, что вы хотите.
    Код:
    ВЫБРАТЬ
        РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
        РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
        РеализацияТоваровУслугТовары.Ссылка.Склад КАК Склад,
        СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоТовара,
        СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаТовара
    ИЗ
        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    ГДЕ
        РеализацияТоваровУслугТовары.Ссылка.Проведен = &Проведен
        И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
    
    СГРУППИРОВАТЬ ПО
        РеализацияТоваровУслугТовары.Ссылка,
        РеализацияТоваровУслугТовары.Ссылка.Контрагент,
        РеализацияТоваровУслугТовары.Ссылка.Склад
    
    Последнее редактирование: 17 май 2017
  5. TopicStarter Overlay
    bitum_k
    Offline

    bitum_k

    Регистрация:
    13 май 2017
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Фирма 1 - Товар 1 - 1 шт.
    Фирма 1 - Товар 2 - 2 шт.
    Фирма 2 - Товар 1 - 11 шт.
    Фирма 2 - Товар 2 - 22 шт.
    Фирма 3 - Товар 4 - 5 шт.

    Своей выборкой я формирую таблицу:

    Фирма 1
    Фирма 2
    Фирма 3

    А надо зайти в ТЧ каждой фирм и сложить Количество Товаров:

    Фирма 1 - 3 шт. (1 + 2)
    Фирма 2 - 33 шт. (11 + 22)
    Фирма 3 - 5 шт. (5)
  6. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.515
    Симпатии:
    452
    Баллы:
    104
    Ну тогда самый первый запрос, что я написал вернёт как раз нужное.


    Отправлено с моего iPhone используя Tapatalk
  7. TopicStarter Overlay
    bitum_k
    Offline

    bitum_k

    Регистрация:
    13 май 2017
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    А как тому запросу передать текущую Реализацию, чтобы запрос знал, для какой реализации брать ТЧ ?

    Я пытался вторым запросом обращаться к ТЧ, но теория меня утащила в сторону Временных таблиц, в итоге всё запуталось...
  8. TopicStarter Overlay
    bitum_k
    Offline

    bitum_k

    Регистрация:
    13 май 2017
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Ребята, кто может подсказать, как от документа РеализацияТоваровУслуг перейти к его документу ЗаказКлиента?
  9. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.515
    Симпатии:
    452
    Баллы:
    104
    Код:
    ВЫБРАТЬ
        РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
        РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
        РеализацияТоваровУслугТовары.Ссылка.Склад КАК Склад,
        РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента КАК СуммаДокумента,
        РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
        РеализацияТоваровУслугТовары.Количество КАК Количество,
        РеализацияТоваровУслугТовары.Цена КАК Цена,
        РеализацияТоваровУслугТовары.Сумма КАК Сумма
    ИЗ
        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    ГДЕ
        РеализацияТоваровУслугТовары.Ссылка.Проведен
        И РеализацияТоваровУслугТовары.Ссылка = &Ссылка
        И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
    --- Объединение сообщений, 18 май 2017 ---
    Здесь нужно смотреть структуру таблиц. Какая конфигурация? Обычно в типовых делают реквизит Заказ.
    Код:
    РеализацияТоваровУслугТовары.Ссылка.Заказ
  10. TopicStarter Overlay
    bitum_k
    Offline

    bitum_k

    Регистрация:
    13 май 2017
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Друзья, и всё-таки, может быть кто знает теорию 1С...

    Возможно ли в одном запросе получить и Реализацию (шапку) и РеализациюТовары.СуммуКоличества(ТЧ) ?

    Как Левым соединением добавить поле Товары.СуммаКоличества как Количество ?

    Возможно ли такое?

    Пробую так:


    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | РеализацияТоваровУслуг.Ссылка,
    | РеализацияТоваровУслуг.Дата,
    | РеализацияТоваровУслуг.Контрагент,
    | РеализацияТоваровУслуг.Склад,
    | РеализацияТоваровУслуг.СуммаДокумента,
    | РеализацияТоваровУслуг.Товары
    |ИЗ
    | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    | ПО РеализацияТоваровУслуг.Товары.Ссылка = РеализацияТоваровУслугТовары.Ссылка
    |ГДЕ
    | РеализацияТоваровУслуг.Проведен = ИСТИНА
    | И РеализацияТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
    |УПОРЯДОЧИТЬ ПО
    | РеализацияТоваровУслуг.Контрагент,
    | РеализацияТоваровУслуг.Дата
    |АВТОУПОРЯДОЧИВАНИЕ";

    Запрос.УстановитьПараметр("Дата1", Объект.ДатаНачала);
    Запрос.УстановитьПараметр("Дата2", тКонецДня(Объект.ДатаКонца));
    Выборка = Запрос.Выполнить().Выбрать();

    Пишет:

    Запрос невозможно исполнить
    В условиях соединения запроса не допускается обращение к табличным частям. (4)
  11. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.515
    Симпатии:
    452
    Баллы:
    104
    Вы мои сообщения не видите? Я Вам написал работающий запрос.
  12. TopicStarter Overlay
    bitum_k
    Offline

    bitum_k

    Регистрация:
    13 май 2017
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Да, видел. Пришлось делать выборку по Реализации через временные таблицы. Так как без них перебрать Реализацию с заходом каждый раз в табличную часть невозможно.
  13. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.515
    Симпатии:
    452
    Баллы:
    104
    Либо Вы озвучили задачу не верно, либо Вы все же не читали моего сообщения. Выбираете данные напрямую из табличной части и все. Не нужно никуда заходить...
  14. angelivoin
    Offline

    angelivoin

    Регистрация:
    16 апр 2015
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Какие временные таблицы, задача в одно действие. Выше правильно привели запрос, в запросе берете не документ а его табличную часть товары.
    Код:
    ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
    РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
    РеализацияТоваровУслугТовары.Ссылка.Склад КАК Склад,
    СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоТовара,
    СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаТовара
    ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.Проведен = &Проведен
    И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
    
    СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслугТовары.Ссылка,
    РеализацияТоваровУслугТовары.Ссылка.Контрагент,
    РеализацияТоваровУслугТовары.Ссылка.Склад
    Н: Есть реализация
    Контрагент: Петров, Склад:Основной
    ТЧ Товары: Строка 1: Номенклатура:Стул, Количество:10, Сумма 100
    Строка 2: Номенклатура:Стол, Количество:5, Сумма 200
    В итоге по запросу выше получим:
    Контрагент:Петров, Склад:Основной, Количество: 15, Сумма: 300
    Т.е по реализации не важно сколько строк вТЧ, мы получим только одну запись(суммированную по количеству и сумме)
  15. TopicStarter Overlay
    bitum_k
    Offline

    bitum_k

    Регистрация:
    13 май 2017
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Да, я так и сделал. Всем спасибо. Тема раскрыта. Можно закрывать.
Похожие темы
  1. has
    Ответов:
    8
    Просмотров:
    1.075
  2. Sergio2002
    Ответов:
    9
    Просмотров:
    903
  3. Zbashunc
    Ответов:
    1
    Просмотров:
    598
  4. Galich
    Ответов:
    9
    Просмотров:
    1.250
  5. elite128
    Ответов:
    3
    Просмотров:
    1.014
Загрузка...

Поделиться этой страницей