Имя: Пароль:
1C
1С v8
Внешний отчет. Присоединить область. Заполнить присоединенную область.
0 buketovav
 
04.09.19
09:16
Добрый день, дорогие Форумчане!
Есть вопрос.
Делаю отчет. Сделал макет. Создал области. В отчете к строке присоединяются области по количеству дней, указанному в периоде на форме отчета.
Присоединяются области хорошо, вроде бы все в порядке, нов от что-то заполнить их у меня не получается.

Вот этим кодом присоединяю области:

    Для Каждого Стр Из ТаблицаДней Цикл
        Если НЕ Стр.ДеньВключенВГрафик = Истина Тогда
            ТабДок.Присоединить(ОбластьСтрока22);
        Иначе
            ТабДок.Присоединить(ОбластьСтрока21);
        КонецЕсли;
    КонецЦикла;


Вот этим кодом пытаюсь их заполнить:

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Для Каждого Стр Из ТаблицаДней Цикл
            Если НЕ Стр.ДеньВключенВГрафик = Истина И НачалоДня(ВыборкаДетальныеЗаписи.Период) = Стр.ДатаГрафика Тогда
                ОбластьСтрока22.Параметры.КоличесвоАЗС = ВыборкаДетальныеЗаписи.АЗСЗаправки;
            ИначеЕсли
                 Стр.ДеньВключенВГрафик = Истина И НачалоДня(ВыборкаДетальныеЗаписи.Период) = Стр.ДатаГрафика Тогда
                ОбластьСтрока21.Параметры.КоличесвоАЗС = ВыборкаДетальныеЗаписи.АЗСЗаправки;
            Конецесли;
        КонецЦикла;
    КонецЦикла;

ОбластьСтрока22 - это область окрашенная цветом, для отображения выходных в отчете, ОбластьСтрока21 - будние дня с понедельника по пятницу. ВыборкаДетальныеЗаписи.Период - дата заправки. ДатаГрафика - взято из РегистрСведений.КалендарныеГрафики

Так вот проблема  в том. что я не могу заполнить присоединенные области, они все выводятся, но все пустые, ни где не заполняется количество заправленных литров в этот день. Наример, машиина заправлялась, 5-го, 12-го, 15-го, 2-го и 28-го августа и только в этих колонках должно заполниться значение.

Подскажите, что делаю не так и как сделать правильно?
Заранее благодарю.
1 malem13
 
04.09.19
10:49
сначала заполнить область макета а потом присоединять?
2 buketovav
 
04.09.19
11:25
(1) так?
что-то все равно не получается. не правильно работает

    Для Каждого Стр Из ТаблицаДней Цикл
            Если НЕ Стр.ДеньВключенВГрафик = Истина  Тогда
                Если ВыборкаДетальныеЗаписи.Период = Стр.ДатаГрафика Тогда
                    ОбластьСтрока22.Параметры.КоличесвоАЗС = ВыборкаДетальныеЗаписи.АЗСЗаправки;
                КонецЕсли;
                ТабДок.Присоединить(ОбластьСтрока22);
            Иначе
                Стр.ДеньВключенВГрафик = Истина;
                ТабДок.Присоединить(ОбластьСтрока21);
            Конецесли;
        КонецЦикла;
3 malem13
 
04.09.19
11:33
по отладчику данные есть в параметре перед присоединением? тип данных ячейки правильный?
4 Ёпрст
 
04.09.19
11:37
(0) очевидно же, что условие  Если НЕ Стр.ДеньВключенВГрафик = Истина И НачалоДня(ВыборкаДетальныеЗаписи.Период) = Стр.ДатаГрафика Тогда
никогда не выполняется
5 Ёпрст
 
04.09.19
11:38
ну или ВыборкаДетальныеЗаписи.АЗСЗаправки всегда null, например
6 buketovav
 
04.09.19
11:39
(3) данные есть в параметре и тип данных ячейки правильный
дело в том, что я не могу правильно построить алгоритм заполнения. Что-то у меня как-то все криво
7 buketovav
 
04.09.19
11:41
(5) не, там все норм... не могу составить правильный цикл для заполнения, у меня сейчас если и заполняются поля. то одинаковыми значениями везде везде
8 Ёпрст
 
04.09.19
11:43
(7) больше кода, отсюда не видно, что и как.
9 buketovav
 
04.09.19
11:44
ВнешОбработка = РеквизитФормыВЗначение("Отчет");    
    Макет = ВнешОбработка.ПолучитьМакет("Макет");

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

    //заполняем шапку    
    ТабДок.Очистить();
    ОбластьШапка.Параметры.Дата1 = Отчет.Дата1;
    ОбластьШапка.Параметры.Дата2 = Отчет.Дата2;
    ОбластьШапка.Параметры.ТС    = Отчет.ТС;
    
    //выводим шапку отчета и шапку таблицы
    ТабДок.Вывести(ОбластьШапка);

    //заполняем даты периода  >>    
    ЗапросДни = Новый Запрос;
    ЗапросДни.Текст =
    "ВЫБРАТЬ
    |    КалендарныеГрафики.ДатаГрафика КАК ДатаГрафика,
    |    КалендарныеГрафики.ДеньВключенВГрафик КАК ДеньВключенВГрафик
    |ИЗ
    |    РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
    |ГДЕ
    |    КалендарныеГрафики.ДатаГрафика МЕЖДУ &Дата1 И &Дата2";
    ЗапросДни.УстановитьПараметр("Дата1", НачалоДня(Отчет.Дата1));
    ЗапросДни.УстановитьПараметр("Дата2", КонецДня(Отчет.Дата2));
    
    РезультатЗапросаДни = ЗапросДни.Выполнить();
    
    ВыборкаДни = РезультатЗапросаДни.Выбрать();
    
    ТаблицаДней = Новый ТаблицаЗначений;
    ТаблицаДней.Колонки.Добавить("ДатаГрафика");
    ТаблицаДней.Колонки.Добавить("ДеньВключенВГрафик");
    
    ТаблицаДней = РезультатЗапросаДни.Выгрузить();
    ОбластьШапкаДней1 = Макет.ПолучитьОбласть("ОбластьШапкаТаблицы|Область1");    
    ОбластьШапкаДней2 = Макет.ПолучитьОбласть("ОбластьШапкаТаблицы|Область2");
    ОбластьШапкаДней3 = Макет.ПолучитьОбласть("ОбластьШапкаТаблицы|Область3");
    ОбластьШапкаДней4 = Макет.ПолучитьОбласть("ОбластьШапкаТаблицы|Область4");
    ОбластьШапкаДней5 = Макет.ПолучитьОбласть("ОбластьШапкаТаблицы|Область5");

    ОбластьСтрока1     = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока1|Область1");
    ОбластьСтрока2     = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область1");
    ОбластьСтрока21    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область2");
    ОбластьСтрока22    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область3");
    ОбластьСтрока23    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область4");
    ОбластьСтрока3     = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока3|Область1");
    ОбластьСтрока31    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока3|Область2");
    ОбластьСтрока32    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока3|Область3");
    ОбластьСтрока33    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока3|Область4");
    ОбластьСтрока4     = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область4");
    ОбластьСтрока5     = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока4|Область1");
    ОбластьСтрока51    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока4|Область2");
    ОбластьСтрока52    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока4|Область3");
    
    ТабДок.Вывести(ОбластьШапкаДней1);

    Для Каждого Стр Из ТаблицаДней Цикл
        Если Стр.ДеньВключенВГрафик = Истина  Тогда
            ОбластьШапкаДней2.Параметры.Дата = Формат(Стр.ДатаГрафика, "ДФ=dd.MM");
            ТабДок.Присоединить(ОбластьШапкаДней2);
        Иначе
            ОбластьШапкаДней3.Параметры.Дата = Формат(Стр.ДатаГрафика, "ДФ=dd.MM");
            ТабДок.Присоединить(ОбластьШапкаДней3);
        КонецЕсли;
    КонецЦикла;
    //заполняем даты периода  //
    
    //присоединяем область с итогами по заправкам
    ТабДок.Присоединить(ОбластьШапкаДней5);
    
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ТЗЗаправкиАЗС = Запрос.Выполнить().Выгрузить();
    
    //заполняем таблицу
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    ОбластьСтрока1.Параметры.НомерПП = 0;
    ВыборкаДетальныеЗаписи.Следующий();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ЗаполнитьЗначенияСвойств(ОбластьСтрока1.Параметры,ВыборкаДетальныеЗаписи);
        ОбластьСтрока1.Параметры.НомерПП = ОбластьСтрока1.Параметры.НомерПП + 1;
        ТабДок.Вывести(ОбластьСтрока1);
        
        Для Каждого Стр Из ТаблицаДней Цикл
            Если НЕ Стр.ДеньВключенВГрафик = Истина  Тогда
                Если ВыборкаДетальныеЗаписи.Период = Стр.ДатаГрафика Тогда
                ОбластьСтрока22.Параметры.КоличесвоАЗС = ВыборкаДетальныеЗаписи.АЗСЗаправки;
                КонецЕсли;
                ТабДок.Присоединить(ОбластьСтрока22);
            Иначе
                Если Стр.ДеньВключенВГрафик = Истина Тогда
                ОбластьСтрока21.Параметры.КоличесвоАЗС = ВыборкаДетальныеЗаписи.АЗСЗаправки;
                КонецЕсли;
                ТабДок.Присоединить(ОбластьСтрока21);
            Конецесли;
        КонецЦикла;
        ТабДок.Присоединить(ОбластьСтрока4);
        
        
        ТабДок.Вывести(ОбластьСтрока2);
        Для Каждого Стр Из ТаблицаДней Цикл
            Если НЕ Стр.ДеньВключенВГрафик = Истина  Тогда
                ТабДок.Присоединить(ОбластьСтрока22);
            Иначе
                Стр.ДеньВключенВГрафик = Истина;
                ТабДок.Присоединить(ОбластьСтрока21);
            Конецесли;
        КонецЦикла;  
        ТабДок.Присоединить(ОбластьСтрока4);

        
        ТабДок.Вывести(ОбластьСтрока3);
        Для Каждого СтрДни Из ТаблицаДней Цикл
        Если НЕ СтрДни.ДеньВключенВГрафик = Истина Тогда
                ТабДок.Присоединить(ОбластьСтрока32);
            Иначе
                ТабДок.Присоединить(ОбластьСтрока31);
            Конецесли;
        КонецЦикла;
        ТабДок.Присоединить(ОбластьСтрока4);
        
        ТабДок.Вывести(ОбластьСтрока5);
        
        Для Каждого Стр Из ТаблицаДней Цикл
            Если НЕ Стр.ДеньВключенВГрафик = Истина  Тогда
                ТабДок.Присоединить(ОбластьСтрока22);
            Иначе
                Стр.ДеньВключенВГрафик = Истина;
                ТабДок.Присоединить(ОбластьСтрока21);
            Конецесли;
        КонецЦикла;
        ТабДок.Присоединить(ОбластьСтрока4);
    КонецЦикла;
    
    

    
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    
    ТабДок.ФиксацияСверху = 6;
    ТабДок.ФиксацияСлева = 5;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
10 Ёпрст
 
04.09.19
11:44
Ну и.. если как в (0) - то ясен пень, все области будут иметь одно значение, последнее, в данном случае.

Нужно Заполнять параметры в цикле и в этом же цикле выводить/присоединять эту секцию
11 buketovav
 
04.09.19
11:48
(10) так вот как заполнить параметр именно в нужный день отчета? что-то я не пойму
12 Ёпрст
 
04.09.19
11:49
(9) вот это у тебя никогда не выполняется
ВыборкаДетальныеЗаписи.Период = Стр.ДатаГрафика

в тексте запроса приведи дату и период, к началу дня, хотя бы
13 Ёпрст
 
04.09.19
11:49
в обоих запросах.
14 Ёпрст
 
04.09.19
11:52
НачалоПериода(ОстаткиТоплива.Период,День) КАК Период,

.....

НачалоПериода(КалендарныеГрафики.ДатаГрафика,День) как ....

так хотя бы
15 buketovav
 
04.09.19
11:54
(12) это да, я знаю. спасибо

но вот с моим кодом я получаю нечто странное:

KDB -96 SA   Петров    11    11    11

то есть в строке одинаковые значения
а в соседней строке другое значение. но внутри строки так же они одинаковы
16 Ёпрст
 
04.09.19
12:02
(15) ё...ну так параметры области очищай, перед каждым заполнением, иначе, будут предыдущие там, если в условия не попадаешь
17 buketovav
 
04.09.19
12:05
(16) параметр приравнивать к нулю и потом снова его заполнять?
18 Ёпрст
 
04.09.19
12:06
(17) хотя бы так
19 Ёпрст
 
04.09.19
12:07
или записать это в ветку Иначе в условии
20 malem13
 
04.09.19
12:10
обычно просто область макета заново получают
21 buketovav
 
04.09.19
12:37
что-то все-таки не так. ни чего не помогает, ситуация не изменилась
22 buketovav
 
04.09.19
12:38
(20) и это попробовал, не помогло
23 Ёпрст
 
04.09.19
12:39
(21) конечно не так.. вот это полный ПЭ

    |СГРУППИРОВАТЬ ПО
        |    ОстаткиТоплива.ТС,
        |    ОстаткиТоплива.Водитель,
        |    ОстаткиТоплива.Период,
        |    ОстаткиТоплива.Количество,
        |    ОстаткиТоплива.Склад
24 Ёпрст
 
04.09.19
12:40
как и это
ИЗ
        |    РегистрНакопления.ОстаткиТоплива КАК ОстаткиТоплива
25 buketovav
 
04.09.19
12:50
(23) а как надо? подскажите, пожалуйста
26 buketovav
 
04.09.19
12:50
(24) а в этом что не так?
27 buketovav
 
04.09.19
14:06
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ОстаткиТоплива.ТС КАК ТС,
    |    ОстаткиТоплива.Водитель КАК Водитель,
    |    ОстаткиТоплива.Период КАК Период,
    |    ОстаткиТоплива.Количество КАК АЗСЗаправки,
    |    ОстаткиТоплива.Склад КАК Склад
    |ИЗ
    |    РегистрНакопления.ОстаткиТоплива КАК ОстаткиТоплива
    |ГДЕ
    |    ОстаткиТоплива.Период МЕЖДУ &Дата1 И &Дата2
    |
    |СГРУППИРОВАТЬ ПО
    |    ОстаткиТоплива.ТС,
    |    ОстаткиТоплива.Водитель,
    |    ОстаткиТоплива.Период,
    |    ОстаткиТоплива.Количество,
    |    ОстаткиТоплива.Склад
    |
    |УПОРЯДОЧИТЬ ПО
    |    Период";


так можно?
28 buketovav
 
04.09.19
14:06
или надо так

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ОстаткиТоплива.ТС КАК ТС,
    |    ОстаткиТоплива.Водитель КАК Водитель,
    |    ОстаткиТоплива.Период КАК Период,
    |    ОстаткиТоплива.Количество КАК АЗСЗаправки,
    |    ОстаткиТоплива.Склад КАК Склад
    |ИЗ
    |    РегистрНакопления.ОстаткиТоплива КАК ОстаткиТоплива
    |ГДЕ
    |    ОстаткиТоплива.Период МЕЖДУ &Дата1 И &Дата2
    |
    |УПОРЯДОЧИТЬ ПО
    |    Период";
29 buketovav
 
04.09.19
14:30
//чтобы получить макет в форме внешнего отчета необходимо выполнить ВнешОбработка = РеквизитФормыВЗначение("Отчет"); и после этого нам будет доступен "ПолучитьМакет"
    ВнешОбработка = РеквизитФормыВЗначение("Отчет");    
    Макет = ВнешОбработка.ПолучитьМакет("Макет");

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

    //заполняем шапку    
    ТабДок.Очистить();
    ОбластьШапка.Параметры.Дата1 = Отчет.Дата1;
    ОбластьШапка.Параметры.Дата2 = Отчет.Дата2;
    ОбластьШапка.Параметры.ТС    = Отчет.ТС;
    
    //выводим шапку отчета и шапку таблицы
    ТабДок.Вывести(ОбластьШапка);

    //заполняем даты периода  >>    
    ЗапросДни = Новый Запрос;
    ЗапросДни.Текст =
    "ВЫБРАТЬ
    |    КалендарныеГрафики.ДатаГрафика КАК ДатаГрафика,
    |    КалендарныеГрафики.ДеньВключенВГрафик КАК ДеньВключенВГрафик
    |ИЗ
    |    РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
    |ГДЕ
    |    КалендарныеГрафики.ДатаГрафика МЕЖДУ &Дата1 И &Дата2";
    ЗапросДни.УстановитьПараметр("Дата1", НачалоДня(Отчет.Дата1));
    ЗапросДни.УстановитьПараметр("Дата2", КонецДня(Отчет.Дата2));
    
    РезультатЗапросаДни = ЗапросДни.Выполнить();
    
    ВыборкаДни = РезультатЗапросаДни.Выбрать();
    
    ТаблицаДней = Новый ТаблицаЗначений;
    ТаблицаДней.Колонки.Добавить("ДатаГрафика");
    ТаблицаДней.Колонки.Добавить("ДеньВключенВГрафик");
    
    ТаблицаДней = РезультатЗапросаДни.Выгрузить();
    ОбластьШапкаДней1 = Макет.ПолучитьОбласть("ОбластьШапкаТаблицы|Область1");    
    ОбластьШапкаДней2 = Макет.ПолучитьОбласть("ОбластьШапкаТаблицы|Область2");
    ОбластьШапкаДней3 = Макет.ПолучитьОбласть("ОбластьШапкаТаблицы|Область3");
    ОбластьШапкаДней4 = Макет.ПолучитьОбласть("ОбластьШапкаТаблицы|Область4");
    ОбластьШапкаДней5 = Макет.ПолучитьОбласть("ОбластьШапкаТаблицы|Область5");

    ОбластьСтрока1     = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока1|Область1");
    ОбластьСтрока11    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока1|Область2");
    ОбластьСтрока12    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока1|Область3");
    ОбластьСтрока13    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока1|Область4");
    ОбластьСтрока14    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока1|Область5");
    
    ОбластьСтрока2     = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область1");
    ОбластьСтрока21    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область2");
    ОбластьСтрока22    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область3");
    ОбластьСтрока23    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область4");
    ОбластьСтрока24    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область5");

    ОбластьСтрока3     = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока3|Область1");
    ОбластьСтрока31    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока3|Область2");
    ОбластьСтрока32    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока3|Область3");
    ОбластьСтрока33    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока3|Область4");
    ОбластьСтрока34    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока3|Область5");
    
    //ОбластьСтрока4     = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область4");
        
    ОбластьСтрока5     = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока4|Область1");
    ОбластьСтрока51    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока4|Область2");
    ОбластьСтрока52    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока4|Область3");
    ОбластьСтрока53    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока4|Область4");
    ОбластьСтрока54    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока4|Область5");
    
    ТабДок.Вывести(ОбластьШапкаДней1);

    Для Каждого Стр Из ТаблицаДней Цикл
        Если Стр.ДеньВключенВГрафик = Истина  Тогда
            ОбластьШапкаДней2.Параметры.Дата = Формат(Стр.ДатаГрафика, "ДФ=dd.MM");
            ТабДок.Присоединить(ОбластьШапкаДней2);
        Иначе
            ОбластьШапкаДней3.Параметры.Дата = Формат(Стр.ДатаГрафика, "ДФ=dd.MM");
            ТабДок.Присоединить(ОбластьШапкаДней3);
        КонецЕсли;
    КонецЦикла;
    //заполняем даты периода  //
    
    //присоединяем область с итогами по заправкам
    ТабДок.Присоединить(ОбластьШапкаДней5);
    
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ТЗЗаправкиАЗС = Запрос.Выполнить().Выгрузить();
    
    //заполняем таблицу
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    ОбластьСтрока1.Параметры.НомерПП = 0;
    ОбластьСтрока24.Параметры.ИтогоКоличесвоАЗС = 0;
    ВыборкаДетальныеЗаписи.Следующий();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ЗаполнитьЗначенияСвойств(ОбластьСтрока1.Параметры,ВыборкаДетальныеЗаписи);
        ОбластьСтрока1.Параметры.НомерПП = ОбластьСтрока1.Параметры.НомерПП + 1;
        ТабДок.Вывести(ОбластьСтрока1);
        
        Для Каждого СтрДни Из ТаблицаДней Цикл
        Если НЕ СтрДни.ДеньВключенВГрафик = Истина Тогда
                ТабДок.Присоединить(ОбластьСтрока12);
            Иначе
                ТабДок.Присоединить(ОбластьСтрока11);
            Конецесли;
        КонецЦикла;
        ТабДок.Присоединить(ОбластьСтрока14);
        
        ТабДок.Вывести(ОбластьСтрока2);

        //Заполняем и выводим заправки на АЗС
        Для Каждого Стр Из ТаблицаДней Цикл
            Если НЕ Стр.ДеньВключенВГрафик = Истина  Тогда
                ОбластьСтрока22.Параметры.КоличесвоАЗС = 0;
                Если НачалоДня(ВыборкаДетальныеЗаписи.Период) = НачалоДня(Стр.ДатаГрафика) Тогда
                ОбластьСтрока22    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область3");    
                ОбластьСтрока22.Параметры.КоличесвоАЗС = ВыборкаДетальныеЗаписи.АЗСЗаправки;
            КонецЕсли;
                ИтогоЛитровВых = ВыборкаДетальныеЗаписи.АЗСЗаправки;
                ТабДок.Присоединить(ОбластьСтрока22);
            ИначеЕсли Стр.ДеньВключенВГрафик = Истина Тогда
                ОбластьСтрока21.Параметры.КоличесвоАЗС = 0;
                Если НачалоДня(ВыборкаДетальныеЗаписи.Период) = НачалоДня(Стр.ДатаГрафика) Тогда
                ОбластьСтрока21    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область2");
                ОбластьСтрока21.Параметры.КоличесвоАЗС = ВыборкаДетальныеЗаписи.АЗСЗаправки;
                ИтогоЛитровБуд = ВыборкаДетальныеЗаписи.АЗСЗаправки;
                КонецЕсли;
                ТабДок.Присоединить(ОбластьСтрока21);            
            Конецесли;
        КонецЦикла;
        
        ТабДок.Присоединить(ОбластьСтрока24);

        //заполняем и выводим ДУТ
        //ТабДок.Вывести(ОбластьСтрока2);
        //Для Каждого Стр Из ТаблицаДней Цикл
        //    Если НЕ Стр.ДеньВключенВГрафик = Истина  Тогда
        //        ТабДок.Присоединить(ОбластьСтрока22);
        //    Иначе
        //        Стр.ДеньВключенВГрафик = Истина;
        //        ТабДок.Присоединить(ОбластьСтрока21);
        //    Конецесли;
        //КонецЦикла;  
        //ТабДок.Присоединить(ОбластьСтрока4);

        
        ТабДок.Вывести(ОбластьСтрока3);
        Для Каждого СтрДни Из ТаблицаДней Цикл
        Если НЕ СтрДни.ДеньВключенВГрафик = Истина Тогда
                ТабДок.Присоединить(ОбластьСтрока32);
            Иначе
                ТабДок.Присоединить(ОбластьСтрока31);
            Конецесли;
        КонецЦикла;
        ТабДок.Присоединить(ОбластьСтрока34);

        
        ТабДок.Вывести(ОбластьСтрока5);
        //заполняем и выводим склады
        Для Каждого Стр Из ТаблицаДней Цикл
            Если НЕ Стр.ДеньВключенВГрафик = Истина  Тогда
                ОбластьСтрока52.Параметры.Склад = "";
                Если НЕ ОбластьСтрока22 = "" Тогда
                    ОбластьСтрока52.Параметры.Склад = ВыборкаДетальныеЗаписи.Склад;
                Иначе
                    ОбластьСтрока52.Параметры.Склад = "";
                Конецесли;
                ТабДок.Присоединить(ОбластьСтрока52);
            Иначе
                ОбластьСтрока51.Параметры.Склад = "";
                Если НЕ ОбластьСтрока21 = "" Тогда
                ОбластьСтрока51.Параметры.Склад = ВыборкаДетальныеЗаписи.Склад;
                Иначе
                ОбластьСтрока52.Параметры.Склад = "";
                Конецесли;
                //Стр.ДеньВключенВГрафик = Истина;
                ТабДок.Присоединить(ОбластьСтрока51);
            Конецесли;
        КонецЦикла;
        ТабДок.Присоединить(ОбластьСтрока54);
    КонецЦикла;
    
    
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    
    ТабДок.ФиксацияСверху = 6;
    ТабДок.ФиксацияСлева = 5;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
30 buketovav
 
04.09.19
14:31
переделал так. Теперь заполняется отчет, но все равно не правильно. Он заполняет сначала первую колонку, потом которую, потом третью и так далее и все это уходить вниз, то есть как бы в шахматном порядке заполняется, стало ещенепонятнее
31 buketovav
 
05.09.19
08:03
Ребятки, помогите разобраться, что-то я застрял ((
32 hhhh
 
05.09.19
08:18
(31) наверно у тебя эти области - ОбластьСтрока1 не ограничены справа, а должны быть полностью ограниченные квадратики.
33 buketovav
 
05.09.19
08:25
(32) выводятся все области нормально, не правильно заполняются данными, вот в чем основная проблема
34 buketovav
 
05.09.19
10:38
//Заполняем и выводим заправки на АЗС        
        Для Каждого Стр Из ТаблицаДней Цикл
            Если НЕ Стр.ДеньВключенВГрафик = Истина  Тогда
            ОбластьСтрока22    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область3");
                Если НачалоДня(ВыборкаДетальныеЗаписи.Период) = НачалоДня(Стр.ДатаГрафика) Тогда         
                    ОбластьСтрока22.Параметры.КоличесвоАЗС = 0;
                    ОбластьСтрока22.Параметры.КоличесвоАЗС = ВыборкаДетальныеЗаписи.АЗСЗаправки;
                КонецЕсли;
                ТабДок.Присоединить(ОбластьСтрока22);
            ИначеЕсли Стр.ДеньВключенВГрафик = Истина Тогда
                ОбластьСтрока21    = Макет.ПолучитьОбласть("ОбластьТаблицаСтрока2|Область2");
                Если НачалоДня(ВыборкаДетальныеЗаписи.Период) = НачалоДня(Стр.ДатаГрафика) Тогда
                    ОбластьСтрока21.Параметры.КоличесвоАЗС = 0;
                    ОбластьСтрока21.Параметры.КоличесвоАЗС = ВыборкаДетальныеЗаписи.АЗСЗаправки;
                КонецЕсли;
                ТабДок.Присоединить(ОбластьСтрока21);            
            Конецесли;
        КонецЦикла;


вот так выводятся правильно и заполняются правильно. только вот строк много, а желательно, чтобы все в одной строке было, где-то надо убрать вывод первой строки из цикла, наверное
35 hhhh
 
05.09.19
10:48
(34) заканчивайте тогда писать дерьмокод, переходите на СКД, там это без кода всё, из коробки.
36 Ёпрст
 
05.09.19
14:06
(29) да блин, ну наверное надо брать не табличку регистра, а смотреть хотя бы остатки на каждый день
ну и группировать по количеству..ну ты понял - моветон, нужно сумма(количество), а не  сгруппировать по Количество.
А в вашем случае, смотреть надо виртуальную табличку остатков, а не табличку движений регистра.
37 buketovav
 
05.09.19
14:32
(36) мне надо видеть сколько каждый день было заправлено в какую машину
38 Ёпрст
 
05.09.19
14:37
(37) ну так группируй тогда по машине и суммируй количество, а не выбирай каждую запись в регистре
39 buketovav
 
05.09.19
16:35
(38) буду пробовать
на СКД такой отчет собрал за 10 минут, но клиент хочет видеть определенную форму, поэтому с макетом подкидываюсь )
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший