8.х Вывод 2 строк с разным набором данных в СКД

Тема в разделе "Система компоновки данных (СКД)", создана пользователем BBDragon, 20 фев 2016.

  1. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Думаю задача элементарная, но что-то никак не получается. Имеется 2 набора данных:

    1) дата поступления, количество, сумма
    2) дата перемещения, количество, сумма

    При этом первый набор данных всегда в единственном экземпляре (поскольку поступление товара всего один раз происходит), а вот второй может быть и несколько раз. Выводить их надо списком, т.е. как на рисунке:

    [​IMG]
    Здесь первая строка - это данные по поступлению, а вторая и третья - уже по перемещению товара.
    Как их правильно все-таки вывести?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Обычными детальными записями.
    Весь массив данных должен 1 набором формироваться.
  3. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Сами данные сформированы, одним набором, я просто неудачное слово использовал в первом посту. Детальные записи я делаю, но неправильно. Как же все-таки правильно вывести их?

    Грубо говоря есть a1,a2,a3,b1,b2,b3.
    как вывести итоги в виде:

    первая строка: а1 а2 а3
    вторая строка: b1 b2 b3
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    формат данных в таблице должен быть:

    Номенклатура1, Дата1, Количество1, Сумма1
    Номенклатура1, Дата2, Количество2, Сумма2
    Номенклатура1, Дата3, Количество3, Сумма3
    Номенклатура2, Дата1, Количество1, Сумма1
    Номенклатура2, Дата2, Количество2, Сумма2
    Номенклатура3, Дата3, Количество3, Сумма3
    ..................

    Т.к. вывод идёт с отбором по 1-ой номенклатуре, то записи в таблице должны быть отсортированы по Дата.

    Дальше простой вывод ДетальныеЗаписи с полями Дата, Количество, Сумма - оно само выведет как нужно.
    Сортировку по Дата можно и внутри СКД делать....
  5. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    nomad_irk
    Даты, количества и суммы разные.
    Первая строка: ДатаПоступления, КоличествоПоступления, СуммаПоступления
    Вторая и последующие: ДатаПеремещения, КоличествоПеремещения, СуммаПеремещения.

    В этом вся и проблема, что данные используются разные, а то бы я давно уже сделал сам.
  6. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Не подскажу... с СКД у самого тяжело.
  7. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Не пойму в чем сложность?! В запросе выбираете объединением данные из двух таблиц. 1) Поступления 2) Перемещения. Потом как сказал Вадим, детальными записями получаете уже нужный вид отчета. В чем сложность?
    BBDragon нравится это.
  8. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Все это сделано, но проблема с выводом так и остается. Вот сам запрос:

    ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Номенклатура,
    ПоступлениеТоваровУслугТовары.Цена КАК ЦенаПоступления,
    ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК ДатаПоступления,
    ПоступлениеТоваровУслугТовары.Количество КАК КоличествоПоступления,

    ПоступлениеТоваровУслугТовары.Сумма КАК СуммаПоступления,
    ПоступлениеТоваровУслугТовары.Ссылка.Контрагент как Поставщик,
    ПоступлениеТоваровУслугТовары.Ссылка.Склад КАК СкладПоступления,
    ПеремещениеТоваровТовары.Количество КАК КоличествоПеремещения,
    ПеремещениеТоваровТовары.Ссылка.Дата КАК ДатаПеремещения,
    ПеремещениеТоваровТовары.Ссылка.СкладОтправитель КАК Отправитель,
    ПеремещениеТоваровТовары.Ссылка.СкладПолучатель КАК Получатель,
    ПеремещениеТоваровТовары.Цена КАК ЦенаПеремещения
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
    ПО ПоступлениеТоваровУслугТовары.Номенклатура = ПеремещениеТоваровТовары.Номенклатура

    Запрос выдает в итоге таблицу, в которой будут только строки перемещения с дополнительной информацией о поступлении товара. В ней не будет отдельных строк по поступлению и отдельных строк по перемещению. Примерно так:

    Товар; реквизиты поступления 1; реквизиты перемещения 1;
    Товар; реквизиты поступления 1; реквизиты перемещения 2;
    Товар; реквизиты поступления 1; реквизиты перемещения 3;

    Вот отсюда надо вытащить необходимые данные и оформить в таблицу. Все необходимые переменные вычислены, значения определены
  9. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Погодите. Ранее Вы описывали другое. В Вашем случае сейчас, данные по поступлению будут дублироваться. Дата поступления, например, будет повторяться столько раз, сколько будет строк в перемещении. Нарисуйте в Экселе полную таблицу, которую нужно получить в итоге? Со всеми колонками.
    BBDragon нравится это.
  10. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Вот:

    [​IMG]

    Сверху переменные, которые используются. Строка по поступлению всегда одна, а вот по перемещениям может быть несколько (как на примере внизу)
  11. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Ну тогда в запросе не соединение, а объединение.
    BBDragon нравится это.
  12. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Практически все получилось, осталась одна мелочь. Во время вывода данных сумма выводится только по поступлению, по перемещению - пусто. И странно почему сумма выводится аж с 4 нолями. Поле Сумма - вычисляемое, формула: Сумма = ЦенаПоступления*Количество

    [​IMG]

    Переработанный запрос (режим объединения)

    Код:
    ВЫБРАТЬ
        ПоступлениеТоваровУслугТовары.Номенклатура,
        ПоступлениеТоваровУслугТовары.Цена КАК ЦенаПоступления,
        ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата,
        ПоступлениеТоваровУслугТовары.Количество КАК Количество,
        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Отправитель,
        ПоступлениеТоваровУслугТовары.Ссылка.Склад КАК Получатель
    ИЗ
        Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        ПеремещениеТоваровТовары.Номенклатура,
        ПеремещениеТоваровТовары.Цена,
        ПеремещениеТоваровТовары.Ссылка.Дата,
        ПеремещениеТоваровТовары.Количество,
        ПеремещениеТоваровТовары.Ссылка.СкладОтправитель,
        ПеремещениеТоваровТовары.Ссылка.СкладПолучатель
    ИЗ
        Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
     
    ГДЕ ПеремещениеТоваровТовары.Ссылка.Проведен=ИСТИНА
    Последнее редактирование модератором: 24 фев 2016
  13. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Эту мелочь можно решить форматированием в СКД. Там где вычисляемое поле есть закладка оформление. Там поставьте формат и все.
    BBDragon нравится это.
  14. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Формат Суммы поправил, спасибо!
    Последний нюанс - как вывести Сумму во всех строках, а не только в строке поступления
  15. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Это уже скорее вопрос к Вашему запросу. Нужно смотреть, что он возвращает...
    BBDragon нравится это.
  16. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    А в перемещении товаров цена есть?
    BBDragon нравится это.
  17. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Нет, там цены нет, я просто добавил, чтобы количество полей совпадало. Мне нужно, чтобы Сумма из поступления копировалась во все остальные строчки (они всегда совпадать будут).
    Можно ли сделать, чтобы в колонке Сумма по перемещению принудительно выводилась сумма из поступления?
  18. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Можно, только смысл такого отчета сразу сведется к 0.
    BBDragon нравится это.
  19. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    У меня главные поля - это даты перемещений и склады (получатель, отправитель), остальное - чисто вспомогательная инфа, она большого смысла не несет. Можно и без Суммы, просто хотелось максимальной наглядности
  20. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну Вы блин даете.
    Вы сами хоть понимаете что делаете когда создаете вычисляемое поле
    Сумма = ЦенаПоступления*Количество

    Цена =0 , а потом вопрос почему? сумма равна нулю.

    вычисляемое поле оно уже срабатывает после объеденения.

    Можете сделать так
    Код:
    ВЫБРАТЬ
        ПоступлениеТоваровУслугТовары.Номенклатура,
        ПоступлениеТоваровУслугТовары.Цена КАК ЦенаПоступления,
        ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата,
        ПоступлениеТоваровУслугТовары.Количество КАК Количество,
        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Отправитель,
        ПоступлениеТоваровУслугТовары.Ссылка.Склад КАК Получатель,
        "Поступление" КАК Вид
    ИЗ
        Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        ПеремещениеТоваровТовары.Номенклатура,
        ПеремещениеТоваровТовары.Цена,
        ПеремещениеТоваровТовары.Ссылка.Дата,
        ПеремещениеТоваровТовары.Количество,
        ПеремещениеТоваровТовары.Ссылка.СкладОтправитель,
        ПеремещениеТоваровТовары.Ссылка.СкладПолучатель,
        "Перемещение"  КАК Вид
    ИЗ
        Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
    ГДЕ ПеремещениеТоваровТовары.Ссылка.Проведен=ИСТИНА
    а В вычисляемое тогда

    Выбор когда Вид="Перемещение" Тогда Сумма
    Иначе ЦенаПоступления*Количество
    КонецЕсли
    BBDragon нравится это.

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