8.х Объединение или соединение

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

  1. TopicStarter Overlay
    Gulnaz
    Offline

    Gulnaz Опытный в 1С

    Регистрация:
    20 сен 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Здраствуйте! Я новичок в программировании на 1С. Возник вопрос. Создаю отчет на СКД, делаю запрос:

    ВЫБРАТЬ
    ВложенныйЗапрос.ГруппаСкладов КАК ГруппаСкладов,
    ВложенныйЗапрос.Номеклатура КАК Номеклатура,
    ВложенныйЗапрос.Номеклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
    ВложенныйЗапрос.Номеклатура.Код КАК НоменклатураКод,
    ВЫРАЗИТЬ(ВложенныйЗапрос.Номеклатура.Комментарий КАК СТРОКА(100)) КАК Бюро,
    СУММА(ВложенныйЗапрос.К1Кол) КАК ПотребностьНаПрограммуКол,
    СУММА(ВложенныйЗапрос.К1Сумма) КАК ПотребностьНаПрограммуСумма,
    СУММА(ВложенныйЗапрос.К1Цена) КАК Цена,
    СУММА(ВложенныйЗапрос.К2Кол) КАК ОстатокКол,
    СУММА(ВложенныйЗапрос.К2Сумма) КАК ОстатокСумма,
    СУММА(ВложенныйЗапрос.К2НаДатуСведенийКол) КАК ОстатокНаДатуСведенийКол,
    СУММА(ВложенныйЗапрос.К2НаДатуСведенийСумма) КАК ОстатокНаДатуСведенийСумма,
    СУММА(ВложенныйЗапрос.К3) КАК НормативЗапаса,
    "" КАК Примечание,
    МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК ЦенаПУ,
    СУММА(ВложенныйЗапрос.К5) КАК КредиторскаяЗадолженность,
    СУММА(ВложенныйЗапрос.РасходКоличество) КАК РасходКоличество,
    СУММА(ВложенныйЗапрос.РасходСумма) КАК РасходСумма,
    СУММА(ВложенныйЗапрос.К1Сумма - ВложенныйЗапрос.К2Сумма + ВложенныйЗапрос.К3) КАК ПотребностьНаПланируемыйПериодСумма,
    СУММА(ВложенныйЗапрос.К1Кол - ВложенныйЗапрос.К2Кол) КАК ПотребностьНаПланируемыйПериодКол
    ИЗ
    (ВЫБРАТЬ
    ОИТ_ЛимитнаяКарта.СкладОтправитель.Софт_ГруппаСкладов КАК ГруппаСкладов,
    ОИТ_ЛимитнаяКарта.Номеклатура КАК Номеклатура,
    СУММА(ОИТ_ЛимитнаяКарта.ЛимитНаВыпуск) КАК К1Кол,
    СУММА(ОИТ_ЛимитнаяКарта.ЛимитНаВыпуск * ЦеныНоменклатурыСрезПоследних.Цена) КАК К1Сумма,
    МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК К1Цена,
    0 КАК К2Кол,
    0 КАК К2Сумма,
    0 КАК К2НаДатуСведенийКол,
    0 КАК К2НаДатуСведенийСумма,
    0 КАК К3,
    0 КАК К5,
    0 КАК Сортировка,
    0 КАК РасходКоличество,
    0 КАК РасходСумма
    ИЗ
    Документ.ОИТ_ЛимитнаяКарта КАК ОИТ_ЛимитнаяКарта
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
    &КонецПериода,
    ТипЦен В
    (ВЫБРАТЬ
    Константы.ТипЦенПлановойСебестоимостиНоменклатуры
    ИЗ
    Константы КАК Константы)) КАК ЦеныНоменклатурыСрезПоследних
    ПО ОИТ_ЛимитнаяКарта.Номеклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    ГДЕ
    ОИТ_ЛимитнаяКарта.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    И ОИТ_ЛимитнаяКарта.Проведен = ИСТИНА

    СГРУППИРОВАТЬ ПО
    ОИТ_ЛимитнаяКарта.СкладОтправитель.Софт_ГруппаСкладов,
    ОИТ_ЛимитнаяКарта.Номеклатура

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто1 КАК Справочник.Склады).Софт_ГруппаСкладов,
    ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто2 КАК Справочник.Номенклатура),
    0,
    0,
    0,
    0,
    0,
    СУММА(ХозрасчетныйОстатки.КоличествоОстаток),
    СУММА(ХозрасчетныйОстатки.СуммаОстаток),
    0,
    0,
    0,
    0,
    0
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаСведений, Счет = &Счет, &СкладНоменклатура, ) КАК ХозрасчетныйОстатки

    СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто1 КАК Справочник.Склады).Софт_ГруппаСкладов,
    ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто2 КАК Справочник.Номенклатура)

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто1 КАК Справочник.Склады).Софт_ГруппаСкладов,
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто2 КАК Справочник.Номенклатура),
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    СУММА(ХозрасчетныйОбороты.КоличествоОборотКт),
    СУММА(ХозрасчетныйОбороты.СуммаОборотКт)
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, -1), ДОБАВИТЬКДАТЕ(&КонецПериода, МЕСЯЦ, -1), Период, Счет = &Счет, &СкладНоменклатура, , , ) КАК ХозрасчетныйОбороты

    СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто1 КАК Справочник.Склады).Софт_ГруппаСкладов,
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто2 КАК Справочник.Номенклатура)) КАК ВложенныйЗапрос
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
    &КонецПериода,
    ТипЦен В
    (ВЫБРАТЬ
    Константы.ТипЦенПлановойСебестоимостиНоменклатуры
    ИЗ
    Константы КАК Константы)) КАК ЦеныНоменклатурыСрезПоследних
    ПО ВложенныйЗапрос.Номеклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура

    СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.ГруппаСкладов,
    ВложенныйЗапрос.Номеклатура,
    ВложенныйЗапрос.Сортировка,
    ВЫРАЗИТЬ(ВложенныйЗапрос.Номеклатура.Комментарий КАК СТРОКА(100)),
    ВложенныйЗапрос.Номеклатура.БазоваяЕдиницаИзмерения,
    ВложенныйЗапрос.Номеклатура.Код
    УПОРЯДОЧИТЬ ПО
    ВложенныйЗапрос.Сортировка

    Все нормально работает. Но когда хочу сделать отбор по полю "ОстатокКол" >0, то отбор делается, но остальные поля пустыми выходят. Здесь проблема в том, что я использовала для соединения данных "ОБЪЕДИНИТЬ ВСЕ", а надо было использовать "СОЕДИНЕНИЕ" данных?
  2. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.986
    Симпатии:
    398
    Баллы:
    104
    Проверить очень легко. Лучше используйте временные таблицы. Проверьте что в себе содержат оба набора. По очереди посмотрите какие данные они выводят. И еще. Что в Вашем понимании эта фраза
    Это означает, что поля выводятся, но просто пустые или их вообще нет? Каким образом Вы прописываете условие ОстатокКол" >0 ? Какая конфа и киньте XML -файл со схемой компоновки данных.

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