|
Внешний отчет. Присоединить область. Заполнить присоединенную область. | ☑ | ||
---|---|---|---|---|
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 минут, но клиент хочет видеть определенную форму, поэтому с макетом подкидываюсь ) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |