Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 03:48

Проблема с итогами в макете документа.

Автор Лис, 08 июн 2016, 03:35

0 Пользователей и 1 гость просматривают эту тему.

Лис

Всем доброго времени суток. Столкнулся с одной проблемой по примеру взятой из этой  темы выводил итоги, макет содержит в себе пару табличных частей, так вот первую табличную часть все считает, но когда делаю так же со второй табличной частью то выскакивает ошибка. Буду сильно благодарен если подскажете что деть!


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

ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьКоровьеМолокоШапка);
ВыборкаКоровьеМолоко = Выборка.КоровьеМолоко.Выбрать();
ФизИтогг = 0; 
БазисИтог = 0;
ФизИтог1 = 0; 
БазисИтог1 = 0;
Пока ВыборкаКоровьеМолоко.Следующий() Цикл
ОбластьКоровьеМолоко.Параметры.Заполнить(ВыборкаКоровьеМолоко);
ТабДок.Вывести(ОбластьКоровьеМолоко, ВыборкаКоровьеМолоко.Уровень());
ФизИтогг = ФизИтогг + ВыборкаКоровьеМолоко.ФизическийВес;
БазисИтог = БазисИтог + ВыборкаКоровьеМолоко.БазисныйВес;
КонецЦикла;
ОбластьИтог.Параметры.ФизИтогг = ФизИтогг;
ОбластьИтог.Параметры.БазисИтог = БазисИтог;
ОбластьИтог.Параметры.ЖирИтог = ОбластьИтог.Параметры.ФизИтогг / ОбластьИтог.Параметры.БазисИтог * 3.4;
ТабДок.Вывести(ОбластьИтог);
ТабДок.Вывести(ОбластьКозьеМолокоШапка);
ВыборкаКозьеМолоко = Выборка.КозьеМолоко.Выбрать();
Пока ВыборкаКозьеМолоко.Следующий() Цикл
ОбластьКозьеМолоко.Параметры.Заполнить(ВыборкаКозьеМолоко);
ТабДок.Вывести(ОбластьКозьеМолоко, ВыборкаКозьеМолоко.Уровень());
ФизИтог1 = ФизИтог1 + ВыборкаКозьеМолоко.ФизВес;
БазисИто1 = БазисИто1 + ВыборкаКозьеМолоко.БазисВес;
КонецЦикла;
ОбластьИтог.Параметры.ФизИтог1 = ФизИтог1;
ОбластьИтог.Параметры.БазисИтог1 = БазисИтог1;
ТабДок.Вывести(ОбластьИтог);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры


Скриншоты вдруг помогут.
скрин
скрин
скрин
скрин

vitasw

В приведенном коде нет такой строки с ошибкой как на скрине. Скорее всего не обновили конфигурацию базы данных.

Тём

Посмотрите внимательнее на область "Область2", в ней есть параметры "ФизИтог1" и "БазисИтог1". В программе идет обращение к параметру "ФизИтогг" которого нет.

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

    ТабДок.Очистить();
    ВставлятьРазделительСтраниц = Ложь;
    Пока Выборка.Следующий() Цикл
        Если ВставлятьРазделительСтраниц Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        ТабДок.Вывести(ОбластьЗаголовок);
        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());
        ТабДок.Вывести(ОбластьКоровьеМолокоШапка);
        ВыборкаКоровьеМолоко = Выборка.КоровьеМолоко.Выбрать();
        ФизИтогг = 0; 
        БазисИтог = 0;
        ФизИтог1 = 0; 
        БазисИтог1 = 0;
        Пока ВыборкаКоровьеМолоко.Следующий() Цикл
            ОбластьКоровьеМолоко.Параметры.Заполнить(ВыборкаКоровьеМолоко);
            ТабДок.Вывести(ОбластьКоровьеМолоко, ВыборкаКоровьеМолоко.Уровень());
            ФизИтогг = ФизИтогг + ВыборкаКоровьеМолоко.ФизическийВес;
            БазисИтог = БазисИтог + ВыборкаКоровьеМолоко.БазисныйВес;
        КонецЦикла;
ОбластьИтог.Параметры.ФизИтогг = ФизИтогг; // <===== Здесь ошибка
ОбластьИтог.Параметры.БазисИтог = БазисИтог; // <===== Этого тоже нет
ОбластьИтог.Параметры.ЖирИтог = ОбластьИтог.Параметры.ФизИтогг  ОбластьИтог.Параметры.БазисИтог * 3.4;
ТабДок.Вывести(ОбластьИтог);
        ТабДок.Вывести(ОбластьКозьеМолокоШапка);
        ВыборкаКозьеМолоко = Выборка.КозьеМолоко.Выбрать();
        Пока ВыборкаКозьеМолоко.Следующий() Цикл
            ОбластьКозьеМолоко.Параметры.Заполнить(ВыборкаКозьеМолоко);
            ТабДок.Вывести(ОбластьКозьеМолоко, ВыборкаКозьеМолоко.Уровень());
            ФизИтог1 = ФизИтог1 + ВыборкаКозьеМолоко.ФизВес;
            БазисИто1 = БазисИто1 + ВыборкаКозьеМолоко.БазисВес;
        КонецЦикла;
ОбластьИтог.Параметры.ФизИтог1 = ФизИтог1;
ОбластьИтог.Параметры.БазисИтог1 = БазисИтог1;
ТабДок.Вывести(ОбластьИтог);
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    //}}
КонецПроцедуры


Скорее всего вы перепутали и обращаетесь не к той области))

Лис

Всем большое спасибо!
Ошибку провоцировало то что было неправильное обращения к областям, а точнее обращаясь к "Область1" и "Область2" изменив значения все заработало.
ОбластьИтог = Макет.ПолучитьОбласть("Область1");
ОбластьИтог1 = Макет.ПолучитьОбласть("Область2");
---------------------------------
Есть один вопрос, если кто знает в параметре ЖирИтог присутствует  деление и умножение и в результате отображается целое число и длинная дробь, так вот вопрос можно ли округлить результат? Например у меня в результате вышло 3.8372392489234798, а мне нужно округлить до 3.8
Опять же буду сильно благодарен и да я не очень хорошо знаю с1 и я студент =)

vitasw


Похожие темы (5)

Рейтинг@Mail.ru

Поиск