8.1 Запрос по регистру бухгалтерии

Тема в разделе "1C и всё что с ней связано", создана пользователем unknown181538, 23 фев 2009.

  1. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Нужно создать отчет по остаткам по Д 60.2 и кредиту 60.1. При этом остатки должны выводиться только при наличии остатков по одному договору по д*цензура*у и кредиту. Выводиться остатки должны в разрезе третьего субконто(платежно-расчетные документы, значения которого по д*цензура*у и кредиту всегда разные). Со вторым разобрался с помощью внутреннего соединения. А как быть с третьим непонятно. Должно быть что-то вроде внешнего соединения по нему.
    Код (PHP):
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |   ДТ60_2.Субконто1,
    |   ДТ60_2.Субконто2 КАК Субконто2,
    |   ЕСТЬNULL(ДТ60_2.Субконто3, "
    """) КАК Субконто3,
    |   ДТ60_2.СуммаОстатокДт КАК СуммаОстатокДт,
    |   КТ60_1.Субконто1 КАК Субконто11,
    |   КТ60_1.Субконто2 КАК Субконто21,
    |   ЕСТЬNULL(КТ60_1.Субконто3, "
    """) КАК Субконто31,
    |   КТ60_1.СуммаОстатокКт КАК СуммаОстатокКт
    |ИЗ
    |   РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет.Код = "
    "60.02"", , ) КАК ДТ60_2
    |       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки
    (&Дата, Счет.Код = "
    "60.01"", , ) КАК КТ60_1
    |       ПО ДТ60_2.Субконто2 = КТ60_1.Субконто2
    |           И ДТ60_2.Субконто1 = КТ60_1.Субконто1
    |
    |СГРУППИРОВАТЬ ПО
    |   ДТ60_2.Субконто2,
    |   ЕСТЬNULL(ДТ60_2.Субконто3, "
    """),
    |   ЕСТЬNULL(КТ60_1.Субконто3, "
    """),
    |   ДТ60_2.Субконто1,
    |   ДТ60_2.СуммаОстатокДт,
    |   КТ60_1.Субконто1,
    |   КТ60_1.Субконто2,
    |   КТ60_1.СуммаОстатокКт
    |ИТОГИ
    |   СУММА(СуммаОстатокДт),
    |   СУММА(СуммаОстатокКт)
    |ПО
    |   Субконто2,
    |   Субконто3,
    |   Субконто31"
    ;
    Запрос.УстановитьПараметр("Дата",Дата);
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока Выборка.Следующий() цикл
    Сообщить(строка(Выборка.Субконто1)+строка(выборка.субконто2)+строка(Выборка.Субконто3)+
    строка(выборка.субконто31)+" д*цензура* "+Строка(выборка.СуммаОстатокДт)+
    " кредит "+Строка(выборка.СуммаОстатокКт));
    //Сообщить(Выборка.Субконто3);
    Выборка2=Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока Выборка2.Следующий() цикл
    Сообщить("!!"+строка(Выборка2.Субконто3)+строка(Выборка2.Субконто31));
    КонецЦикла;

    КонецЦикла;

    Пытался сделать вложенными запросами, и тоже не осилил. Как правильно?
     
  2. Mirage

    Mirage Гость

    Выдели запрос в подзапрос, там разберешься, я бы вообще делал объединением трех запросов
     
Загрузка...

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