Имя: Пароль:
1C
1С v8
Добавить значение в запросе
0 ittaxi
 
24.08.17
21:21
Отчет формирует водителей только там где есть движение.

&НаСервере
Процедура ОтчетДепозит()
    
    ТабЧастьДепозит = Отчет.ТабличнаяЧастьДепозитВодителей;
    
    //НачалоПериода = '20170801';
    //КонецПериода = '20170831';
    
    НачалоПериода     = Отчет.НачалоПериода;
    КонецПериода     = Отчет.КонецПериода;
    
    ТаблицаЗначений = Новый ТаблицаЗначений;
    ТаблицаЗначений.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата"));
    
    Для Сч = 0 По (КонецПериода - НачалоПериода) / 86400 Цикл
        
        НоваяСтрока = ТаблицаЗначений.Добавить();
        НоваяСтрока.Период = НачалоПериода + (Сч * 86400);
        
    КонецЦикла;
    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТаблицаПериодов.Период
        |ПОМЕСТИТЬ ВТ_ТаблицаПериодов
        |ИЗ
        |    &ТаблицаПериодов КАК ТаблицаПериодов
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |   ВТ_ТаблицаПериодов.Период КАК Период,
        |    РегистрНакопленияДепозитОстаткиИОбороты.Водитель.Фамилия КАК ВодительФамилия,
        |   РегистрНакопленияДепозитОстаткиИОбороты.ДепозитКонечныйОстаток КАК ДепозитОстаток
        |ИЗ
        |    ВТ_ТаблицаПериодов КАК ВТ_ТаблицаПериодов
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РегистрНакопленияДепозит.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК РегистрНакопленияДепозитОстаткиИОбороты
        |        ПО ВТ_ТаблицаПериодов.Период = РегистрНакопленияДепозитОстаткиИОбороты.Период";
    
    Запрос.УстановитьПараметр("ТаблицаПериодов", ТаблицаЗначений);
    Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
    Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
    
    //Результат = Запрос.Выполнить().Выгрузить();
      Результат = Запрос.Выполнить().Выбрать();
      
      ТабЧастьДепозит.Очистить();
            
    Пока Результат.Следующий() Цикл
                НоваяСтрока = ТабЧастьДепозит.Добавить();
                
                НоваяСтрока.Водитель = Результат.ВодительФамилия;
                НоваяСтрока.Депозит = Результат.ДепозитОстаток;
                НоваяСтрока.Дата = Результат.Период;
                
        КонецЦикла;

    
КонецПроцедуры

Там где движение нет надо заполнить водителя в этом запросе водитель заполняется только там где есть движение.
Сейчас депозит водитель дата
        0               01.08
        500    Пупкин   02.08
        0               03.08

Надо   депозит водитель дата
        0      Пупкин   01.08
        500    Пупкин   02.08
        0      Пупкин   03.08

в теле запроса это можно сделать?
движение было только 02.08
1 jsmith82
 
24.08.17
21:29
Где водителя-то брать?
2 jsmith82
 
24.08.17
21:29
Если он есть справа, он и идёт (причём несколько на одну дату может быть), а если нет? Всех водителей из справочника водителей множить на дату?
3 ittaxi
 
24.08.17
21:32
(1) ИЗ РегистрНакопленияДепозитОстаткиИОбороты.Водитель.Фамилия он же пупкин
4 breezee
 
24.08.17
22:50
(3) Гугли получение данных на каждую дату, это популярнейшая тема и очень избитая