Имя: Пароль:
1C
1С v8
отчёт по документу требование накладная
,
0 LvvFox
 
06.02.19
10:20
не соображу, как прикрутить сумму к строкам
слепил такой отчёт:

    ТекстЗапроса =
        "ВЫБРАТЬ
        |    Хозрасчетный.Регистратор,
        |    ТребованиеНакладная.Склад.Ссылка,
        |    ТребованиеНакладная.Материалы.(
        |        Номенклатура КАК Номенклатура,
        |        Количество КАК Количество
        |    ),
        |    Хозрасчетный.Сумма
        |ИЗ
        |    Документ.ТребованиеНакладная КАК ТребованиеНакладная
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
        |    ПО ТребованиеНакладная.Материалы.Номенклатура = Хозрасчетный.Регистратор
        |ГДЕ
        |    ТребованиеНакладная.Дата >= &ДатаНач
        |    И ТребованиеНакладная.Дата <= &ДатаКон
        |    И ТребованиеНакладная.Склад.Ссылка = &Склад";
    Запрос.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНач));
    Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон));
    Запрос.УстановитьПараметр("Склад", Склады);
    
    Запрос.Текст = ТекстЗапроса;
    
    Результат = Запрос.Выполнить();
    
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ВыборкаДетали = Результат.Выбрать();
    сообщить(ВыборкаДетали.Количество());
        нпп=0;
    Пока ВыборкаДетали.Следующий() Цикл
        
        ВыборкаПоСтрокам = ВыборкаДетали.Материалы.Выбрать();
        Пока ВыборкаПоСтрокам.Следующий()Цикл
            нпп=нпп+1;
            ОбластьДетальныхЗаписей.Параметры.Номенклатура = ВыборкаПоСтрокам.Номенклатура;
            ОбластьДетальныхЗаписей.Параметры.Нпп=нпп;
            ОбластьДетальныхЗаписей.Параметры.Количество=ВыборкаПоСтрокам.Количество;
            ОбластьДетальныхЗаписей.Параметры.Сумма=ВыборкаПоСтрокам.Сумма;

            ТабДок.Вывести(ОбластьДетальныхЗаписей);
        КонецЦикла;
    КонецЦикла;

сумма, понятно, не вылезает. Если указать регистром элемент таблицы номенклатуру, конструктор показывает ошибку. Подскажите, где туплю?
1 Лодырь
 
06.02.19
10:23
Делай запрос не к табличной части, а к движениям документа.
2 LvvFox
 
06.02.19
10:26
(1) я делал, но не понятно как делать выборку. суммы выходят после первой выборки, а номенклатура после второй
3 catena
 
06.02.19
10:29
(0)Регистратор - номенклатура? Забавный подход.
(2)Запрос надо делать к табличной части, тогда не будет "первой-второй" выборки. И вообще, обычно есть регистр, в который пишется и склад и номенклатур и сумма.
4 LvvFox
 
06.02.19
10:31
(3) интересно. попробую.
5 LvvFox
 
07.02.19
05:44
Всем спасибо, запрос получился такого вида, может кому-то пригодится:
    ТекстЗапроса =
        "ВЫБРАТЬ
        |    ХозрасчетныйДвиженияССубконто.Сумма КАК Сумма,
        |    ХозрасчетныйДвиженияССубконто.Регистратор,
        |    ХозрасчетныйДвиженияССубконто.СубконтоКт2 КАК Склад,
        |    ХозрасчетныйДвиженияССубконто.КоличествоКт КАК Количество,
        |    ХозрасчетныйДвиженияССубконто.СубконтоКт1 КАК Номенклатура,
        |    ХозрасчетныйДвиженияССубконто.Период КАК Период
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&ДатаНач, &ДатаКон, , , ) КАК ХозрасчетныйДвиженияССубконто
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная КАК ТребованиеНакладная
        |        ПО ХозрасчетныйДвиженияССубконто.Регистратор = ТребованиеНакладная.Ссылка
        |ГДЕ
        |    ХозрасчетныйДвиженияССубконто.Период >= &ДатаНач
        |    И ХозрасчетныйДвиженияССубконто.Период <= &ДатаКон
        |    И ХозрасчетныйДвиженияССубконто.СубконтоКт2 = &Склад";
    Запрос.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНач));
    Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон));
    Запрос.УстановитьПараметр("Склад", Склады);
6 LvvFox
 
07.02.19
05:46
Два предпоследних параметра лишние
7 catena
 
07.02.19
06:16
(6)Да и соединение тоже нигде не уперлось.
8 LvvFox
 
07.02.19
06:59
(7) без соединения вываливает туеву хучу строк.
9 catena
 
07.02.19
07:01
(8)Этого не может быть, в запросе (5) ТребованиеНакладная не используется нигде и никак не может влиять на результат.
10 Лодырь
 
07.02.19
07:12
(5) Просто задумайся что у тебя произойдет когда два документа по одному складу будут иметь одну дату.
11 LvvFox
 
07.02.19
07:24
(9) Используется как регистратор
(10) У меня девять документов по одному складу на одну дату. Отчёт отрабатывает нормально.
12 catena
 
07.02.19
07:31
(11)Нет, не используется. Это соединение по регистратору, при чем левое. И оно никак на результат запроса не влияет.
Программист всегда исправляет последнюю ошибку.