8.х Запрос по 4-м документам

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем KatrineKA, 8 сен 2011.

  1. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте.
    Помогите пожалуйста написать запрос для отчета. Перепробовала уже много разных вариантов, но идеально отчет так и не заработал. Проблема мне кажется в самом условии его создания, т.к. информация берется из 4-х разных документов.

    В отчете должна формироваться таблица по продукции и материалам, с группировкой по заказам (или без заказа). Таблица разделена на две части по вертикали, т.е. слева Продукция (наим, остН, приход, расход, остК) и справа для Материалов (наим, остН, приход, расход, остК).
    ПродукцияПриход - ОтчетПроизводстваЗаСмену,
    ПродукцияРасход - РеализацияУслугПоПереработке,
    МатериалПриход - ПоступлениеТоваровНаСкладах,
    МатериалРасход - Требование-Накладная.

    Работаю с регистром ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты. Продукция или Материал я могу отличить только по длине Артикула.

    Пробовала отдельные запросы по Продукции и Материалам, а потом помещала результаты в ТЗ и пыталась там их выстроить друг напротив друга. Пока получилось не очень.

    Подскажите еще какие моут быть идеи, варианты. Спасибо.
  2. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    Две таблицы объединить (Метод "ОБЪЕДИНИТЬ ВСЕ")
    Поля первой Номенклатура,ПродукцияПриход ,ПродукцияРасход ,0,0
    Второй : Номенклатура,0,0,МатериалПриход ,МатериалРасход
    а потом результат свернуть по Номенклатуре.
  3. рамиль
    Offline

    рамиль Опытный в 1С

    Регистрация:
    12 мар 2006
    Сообщения:
    595
    Симпатии:
    0
    Баллы:
    26
    Используйте сложенные запросы.
  4. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    Пробовала, но что то не заладилось - сейчас еще раз попробую.

    Извините, это как это?
  5. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    покажи что напробовала...и как поняла что "не заладилось" ?
  6. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    Код:
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура КАК Номенклатура,
    0 как НоменклатураМ,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
    0 КАК МатПриход,
    0 КАК МатРасход,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Заказ КАК Заказ
    ИЗ
    РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.ОстаткиИОбороты(&НачПериода, &КонПериода, , , Заказ.ДоговорКонтрагента = &ДоговорКонтрагента) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты
    ГДЕ
    ВЫБОР
    КОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Артикул <= (ВЫРАЗИТЬ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Артикул КАК СТРОКА(7)))
    ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Артикул
    ИНАЧЕ 0
    КОНЕЦ <> 0
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
    0,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура,
    0,
    0,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоРасход,
    NULL,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Заказ
    ИЗ
    РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.ОстаткиИОбороты(&НачПериода, &КонПериода, , , Заказ.ДоговорКонтрагента = &ДоговорКонтрагента) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты
    ГДЕ
    ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Артикул КАК СТРОКА(9))) <> (ВЫРАЗИТЬ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Артикул КАК СТРОКА(8)))
    ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Артикул
    КОНЕЦ <> 0
    ИТОГИ ПО
    Заказ
    
  7. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    типы объединяемых полей должны совпадать..
    в первой таблице у тебя первое поле Номенклатура, во второй число..
    а они должны иметь один тип...
  8. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    т.е. мне нужно установить тип СправочникНоменклатура? как в запросе установить тип?
  9. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    не надо его устанавливать....
    надо чтоб поля в объеденяемых ьаблицах совпадали

    вроде так :

    Код:
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура КАК Номенклатура,
    0 как НоменклатураМ,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
    0 КАК МатПриход,
    0 КАК МатРасход,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Заказ КАК Заказ
    ИЗ
    РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.ОстаткиИОбороты(&;НачПериода, &;КонПериода, , , Заказ.ДоговорКонтрагента = &;ДоговорКонтрагента) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты
    ГДЕ
    ВЫБОР
    КОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Артикул <= (ВЫРАЗИТЬ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Артикул КАК СТРОКА(7)))
    ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Артикул
    ИНАЧЕ 0
    КОНЕЦ <> 0
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура,
    0,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоРасход,
    0,
    0,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Заказ
    ИЗ
    РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.ОстаткиИОбороты(&;НачПериода, &;КонПериода, , , Заказ.ДоговорКонтрагента = &;ДоговорКонтрагента) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты
    ГДЕ
    ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Артикул КАК СТРОКА(9))) <> (ВЫРАЗИТЬ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Артикул КАК СТРОКА(8)))
    ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Артикул
    КОНЕЦ <> 0
    ИТОГИ ПО
    Заказ
    
    [warn=Внимание!]
    Пользуемся тегами!
    [/warn]
  10. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    тогда я не совсем поняла, чего мы этим хотим добиться )))
    Мне ведь нужно в запросе получить практически аналог моего отчета - продукция слева, материалы справа.
    А так они выстраиваются друг под другом...
  11. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29

    ну вот..осталось Свернуть по номенклатуре... и поля встанут как ты и хочешь
  12. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    нее, видимо я опять не правильно объяснила... уж извените.
    Но как вы говорите, сделать не получится.
  13. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    ну вот смотри:
    Запрос возвратил таблицу (методом Выполнить().Выгрузить())
    к примеру такого вида

    Товар1,0,2,3,0,3
    Товар2,0,4,4,0,5
    Товар1,1,0,0,2,0

    после метода свернуть("Номенклатура"," тут все поля через запятую числовые")
    в итоге будет
    Товар1,1,2,3,2,3
    Товар2,0,4,4,0,5
  14. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    а мне нужно что бы было так:
    Товар1,1,2,3,2,3 Товар2,0,4,4,0,5
  15. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    "так" это уже в макете ?
    присоединяй секции...делов то
  16. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    ну т.е. как? вот встала например на первую строку в ТЗ, она Товар1. Вывести (Товар1) и т.д.
    Долшли до Товар2 - присоединить (Товар2). Присоединит он секции Товар2 аккуратно после всех Товар1. И выглядеть это будет так:

    Товар1----------------
    Товар1----------------
    Товар1----------------
    -------------------------Товар2
    -------------------------Товар2
    -------------------------Товар2
  17. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    во первых после Свернуть() у тебя будет на каждый товар только 1 строка в ТЗ..
    второе

    метод Присоединить()

    вот выдержка из СП

    Описание:
    Присоединяет табличный документ к результирующему табличному документу, помещая его в следующей колонке правее самой правой выведенной колонки, начиная со строки, с которой выводился предыдущий табличный документ.
  18. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    не понимаю ... :angry:
    Присоединить я понимаю как работает - просто в моем случае получится, так как я описала.

    давайте по порядку: для того что бы присоединить Секцию с Товар2, нужно сначало в списке ТЗ встать на эту строку. Т.е. ее нужно сначала найти (отличить от Товар1), так?
    ну просто в ТЗ строки выстроятся так:
    Товар1
    Товар1
    Товар1
    Товар2
    Товар2
    Товар2
  19. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    Нет..иди читай СП..
    Метод Свернуть() и Присоединить() ...


    ты запрос выгрузила в ТЗ...
    у тебя стоки как ты тут нарисовала ..

    Свернула..
    Стало 2 строки
    Товар1 и Товар2 ...
    вывела Товар1..и присоединила товар2..вот и получилось что тебе надо..
    все в одну строку
  20. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    и все таки я хочу понять... :angry:

    Запрос... дает такую таблицу
    ТоварПр1 (Продукция)
    ТоварПр2
    ТоварПр3
    ТоварМт1 (Материал)
    ТоварМт2
    ТоварМт3
    Помещаю результат в ТЗ...
    Свернуть("Номенклатура", "ПриходП, РасходП, ПриходМ, РасходМ");
    Для Каждого Текущаястрока Из ТЗ Цикл
    ...
    ТабДок.Вывести(...);
    ТабДок.Присоединить(...);
    конецЦикла;

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