Имя: Пароль:
1C
1С v8
Двоится вывод данных на макет
,
0 KoalaJustKoala
 
04.03.21
06:50
Доброго утречка!
Это снова, как не странно я)
Вот то что выводит:
http://pics.rsh.ru/img/_i60yvup3.png
Как можно заметить, сначала идет дефолтный макет, а только после него идет заполнение с "чистого" листа

Вот сам макет:
http://pics.rsh.ru/img/_1rtqph3g.png

Код с выводом:
http://pics.rsh.ru/img/_6wountl8.png
Остаток кода:
ОбластьИтого.Параметры.ИтУценкаНаценка = ИтУценкаНаценка;  
    ОбластьИтого.Параметры.ИтСкидка = ИтСкидка;
    ОбластьИтого.Параметры.ИтСуммаБезнал = ИтСуммаБезнал;
    
    Макет.Вывести(ОбластьИтого);
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    
    
    ОбластьПодвал.Параметры.КонПериода = Формат(КонПериода+60*60*24,"ДЛФ=DD");
    Если Остаток.Количество() > 0 Тогда
        ОбластьПодвал.Параметры.СуммаКонечныйОстаток = Остаток.КонечныйОстаток;
    КонецЕсли;
    
    Макет.Вывести(ОбластьПодвал);    
    Макет.Показать();

Вообщем, больше нигде макет не вызывается в данной обработке
Может кто сможет подсказать от чего такая двоякость ?
1 Галахад
 
гуру
04.03.21
07:02
В чем прикол, кода в картинках?
2 KoalaJustKoala
 
04.03.21
07:07
(1) да черт его знает, могу переслать весь полностью текстом
3 KoalaJustKoala
 
04.03.21
07:08
Процедура ОсновныеДействияФормыПереместитьВПечать(Кнопка)
    Макет = ПолучитьМакет("Макет");
    
    ЗапросОстаток = Новый Запрос;
    ЗапросОстаток.Текст =
    "ВЫБРАТЬ
    |    СУММА(ВЫРАЗИТЬ(ВложенныйЗапрос.НачальныйОстаток КАК ЧИСЛО(15, 2))) КАК НачальныйОстаток,
    |    СУММА(ВЫРАЗИТЬ(ВложенныйЗапрос.КонечныйОстаток КАК ЧИСЛО(15, 2))) КАК КонечныйОстаток
    |ИЗ
    |    (ВЫБРАТЬ
    |        ТоварыНаСкладахВПродажныхЦенахОстаткиИОбороты.КоличествоНачальныйОстаток * ТоварыНаСкладахВПродажныхЦенахОстаткиИОбороты.Цена КАК НачальныйОстаток,
    |        ТоварыНаСкладахВПродажныхЦенахОстаткиИОбороты.КоличествоКонечныйОстаток * ТоварыНаСкладахВПродажныхЦенахОстаткиИОбороты.Цена КАК КонечныйОстаток
    |    ИЗ
    |        РегистрНакопления.ТоварыНаСкладахВПродажныхЦенах.ОстаткиИОбороты(&НачПериода, &КонПериода, , , Склад = &Склад) КАК ТоварыНаСкладахВПродажныхЦенахОстаткиИОбороты) КАК ВложенныйЗапрос";
    ЗапросОстаток.УстановитьПараметр("Склад",Склад)  ;
    ЗапросОстаток.УстановитьПараметр("НачПериода",НачалоДня(НачПериода))  ;
    ЗапросОстаток.УстановитьПараметр("КонПериода",КонецДня(КонПериода))  ;
    Остаток = ЗапросОстаток.Выполнить().Выбрать();    
    Если Остаток.Количество() > 0 Тогда
        Остаток.Следующий();
    КонецЕсли;
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьЗаголовок.Параметры.Склад = Склад.Магазин.Наименование;
    ОбластьЗаголовок.Параметры.НачПериода = Формат(НачПериода,"ДЛФ=DD");
    ОбластьЗаголовок.Параметры.КонПериода = Формат(КонПериода,"ДЛФ=DD");
    Если Остаток.Количество() > 0 Тогда
        ОбластьЗаголовок.Параметры.СуммаНачальныйОстаток=Остаток.НачальныйОстаток;
    КонецЕсли;    
    Макет.Вывести(ОбластьЗаголовок);
    
    ОбластьТовар = Макет.ПолучитьОбласть("Товар");
    Для Каждого ТекСтрока Из Таб Цикл
        ОбластьТовар.Параметры.Заполнить(ТекСтрока);
        Макет.Вывести(ОбластьТовар);
    КонецЦикла;
    ОбластьИтого = Макет.ПолучитьОбласть("Итого");
    
    ОбластьИтого.Параметры.ИтСуммаПрих = ИтСуммаПрих;
    ОбластьИтого.Параметры.ИтВыручка = ИтВыручка;
    ОбластьИтого.Параметры.ИтСуммаВозвр = ИтСуммаВозвр;
    ОбластьИтого.Параметры.ИтУценкаНаценка = ИтУценкаНаценка;  
    ОбластьИтого.Параметры.ИтСкидка = ИтСкидка;
    ОбластьИтого.Параметры.ИтСуммаБезнал = ИтСуммаБезнал;
    
    Макет.Вывести(ОбластьИтого);
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    
    
    ОбластьПодвал.Параметры.КонПериода = Формат(КонПериода+60*60*24,"ДЛФ=DD");
    Если Остаток.Количество() > 0 Тогда
        ОбластьПодвал.Параметры.СуммаКонечныйОстаток = Остаток.КонечныйОстаток;
    КонецЕсли;
    
    Макет.Вывести(ОбластьПодвал);    
    Макет.Показать();
КонецПроцедуры
4 PuhUfa
 
04.03.21
07:17
А зачем ты выводишь сам макет то?
5 Почему 1С
 
04.03.21
07:20
(3) Создай табличный документ, и все операции типа Вывести , Показать производи с ним.
6 KoalaJustKoala
 
04.03.21
07:40
(4) Потому что он нужен для конечного просмотра отчета и он полностью взят с оригинала
7 KoalaJustKoala
 
04.03.21
07:41
(5) Так вроде на него же вывожу, разве нет?
Информацию он берет с формы
8 ДенисЧ
 
04.03.21
07:42
Макет = ПолучитьМакет("Макет");
...
Макет.Вывести(ОбластьЗаголовок);

За такое канделябры уже не трогают... Тут сразу... Моментально... и в море.
9 KoalaJustKoala
 
04.03.21
07:45
(8) мяф, косяк пошел из-за имени?
10 ДенисЧ
 
04.03.21
07:50
(9) Шта?
Ты область макета в макет выводишь. Что ты ещё хотел получить?
Бери чистый табдок и туда гони всё.
11 KoalaJustKoala
 
04.03.21
08:20
(10) ПолучитьМакет() - просто выводит весь макет, а не используется для заполнения?
12 KoalaJustKoala
 
04.03.21
08:20
(10) Или я косячу с .Вывести()?
Я немного не догоняю
13 ДенисЧ
 
04.03.21
08:27
(11) Получитьмает - даёт тебе макет в том виде, как он нарисован в конфигураторе.
И для вывода из него берутся области и выводятся в новый документ.

Почитай ты книжки, наконец. Начни с Митичкина, там такие примитивы есть
14 KoalaJustKoala
 
04.03.21
08:32
(13) Так вон оно что....
Забавненько(

Да не успеваю я книжки читать, поспать бы хоть
15 ДенисЧ
 
04.03.21
08:35
(14) Некогда заводить, ехать надо!
16 KoalaJustKoala
 
04.03.21
08:37
(15) Я и не глушил! Не будь у меня запаса кофе, я бы уже спал((
17 hhhh
 
04.03.21
17:38
(16) человек должен работать 8 часов в день. Потому что если сверх 8 часов, производительность у него падает в разы.
18 KoalaJustKoala
 
05.03.21
14:17
(17) Я работаю 8 часов в день, но потом я засиживаюсь за обуч. материалом, статьями и прочим изучая всё что можно
Программист всегда исправляет последнюю ошибку.