Цитата(sava1 @ 03.08.15, 14:27) необходимо зарегистрироваться для просмотра ссылки
Код вывода данных покажите.
Код большой. можна также в самом отчете посмотреть что я выложил на скачку.
Функция ВывестиМенюНаДень(ДопПоля)
ВыводФорма = новый ТабличныйДокумент;
ОбластьШапка1 = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ОбластьШапка1");
ОбластьШапка2 = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ОбластьШапка2");
ОбластьШапкаЗаголовок = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ОбластьШапкаЗаголовок");
ОбластьШапкаСписокГП = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ОбластьШапкаСписокГП");
ОбластьЗаголовокЭнц = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ОбластьЗаголовокЭнц");
ОбластьЗаголовокПП1 = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ОбластьЗаголовокПП1");
ОбластьБлюдо = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ОбластьБлюдо");
ОбластьБлюдоСЦеной = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ОбластьБлюдоСЦеной");
ОбластьБлюдоСКалор = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ОбластьБлюдоСКалор");
ОбластьБлюдоЭнц = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ОбластьБлюдоЭнц");
ПодвалМенюСЦеной = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ПодвалМенюСЦеной");
ПодвалМенюСКалор = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ПодвалМенюСКалор");
ОбластьПодвалБЖУК = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ОбластьПодвалБЖУК");
Подвал = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("Подвал");
ОбластьСсылкаНаСборник = Отчеты.МенюНаДень.ПолучитьМакет("Макет").ПолучитьОбласть("ОбластьСсылкаНаСборник");
// Установка параметров области "ОбластьШапка1"
ОбластьШапка1.Параметры.Подразделение = Отчет.Подразделение.Наименование;
// Установка параметров области "ОбластьШапка2"
ОбластьШапка2.Параметры.Подразделение = Отчет.Подразделение.Наименование;
Отбор = новый Структура;
Отбор.Вставить("Подразделение", Отчет.Подразделение);
ИмяДиректора = РегистрыСведений.ОтветственныеЛица.ПолучитьПоследнее(ТекущаяДата(),Отбор).ОтвЛицоДиректор;
ОбластьШапка2.Параметры.ИмяДиректора = ИмяДиректора;
// Установка параметров области "ОбластьШапкаЗаголовок"
ОбластьШапкаЗаголовок.Параметры.НаименованиеДокумента = "Меню на";
ОбластьШапкаЗаголовок.Параметры.ДатаДокумента = Формат(Отчет.ДатаМеню, "ДЛФ=ДД");
// Установка параметров области "ОбластьШапкаСписокГП"
ОбластьШапкаСписокГП.Параметры.СписокГруппПитания = Отчет.ГруппаПитания;
// Выводим все "шапки" в результирующий документ
ВыводФорма.Вывести(ОбластьШапка1);
ВыводФорма.Вывести(ОбластьШапка2);
ВыводФорма.Вывести(ОбластьШапкаЗаголовок);
ВыводФорма.Вывести(ОбластьШапкаСписокГП);
Если ДопПоля = 3 тогда
ВыводФорма.Вывести(ОбластьЗаголовокЭнц);
КонецЕсли;
// Собственно выборка меню на день
ВыборкаМенюНаДень = ПолучитьМенюНаДень();
ОбщаяЦена = 0;
ОбщаяКалорийность = 0;
ВсегоБелки = 0;
ВсегоЖиры = 0;
ВсегоУглеводы = 0;
Пока ВыборкаМенюНаДень.Следующий() Цикл
ОбластьЗаголовокПП1.Параметры.НаименованиеПриёмаПищи = ВыборкаМенюНаДень.ПриёмПищи;
ВыводФорма.Вывести(ОбластьЗаголовокПП1);
// Выборка всех блюд по данному меню
ВыборкаСписокБлюдВМеню = ПолучитьСписокБлюдВМеню(ВыборкаМенюНаДень.Ссылка);
Пока ВыборкаСписокБлюдВМеню.Следующий() Цикл
// ДопПоля = 0 - простое меню, без цен и калорий
Если ДопПоля = 0 Тогда
Если Отчет.ПечататьНР тогда
ОбластьБлюдо.Параметры.НаименованиеБлюда = ВыборкаСписокБлюдВМеню.Наименование + " (" + ВыборкаСписокБлюдВМеню.КодРецептуры + ")";
Иначе
ОбластьБлюдо.Параметры.НаименованиеБлюда = ВыборкаСписокБлюдВМеню.Наименование;
КонецЕсли;
ОбластьБлюдо.Параметры.Выход = СформироватьВыходБлюда(ВыборкаСписокБлюдВМеню.Выход1, ВыборкаСписокБлюдВМеню.Выход2, ВыборкаСписокБлюдВМеню.Выход3);
ОбластьБлюдо.Параметры.ЕД = ВыборкаСписокБлюдВМеню.ЕдИзм;
ВыводФорма.Вывести(ОбластьБлюдо);
КонецЕсли;
// ДопПоля = 1 - меню с ценой
Если ДопПоля = 1 Тогда
ОбластьБлюдоСЦеной.Параметры.НаименованиеБлюда = ВыборкаСписокБлюдВМеню.Наименование;
ОбластьБлюдоСЦеной.Параметры.Выход = СформироватьВыходБлюда(ВыборкаСписокБлюдВМеню.Выход1, ВыборкаСписокБлюдВМеню.Выход2, ВыборкаСписокБлюдВМеню.Выход3);
ОбластьБлюдоСЦеной.Параметры.ЕД = ВыборкаСписокБлюдВМеню.ЕдИзм;
Цена = УправлениеМеню.ПолучитьЦенуБлюда(ВыборкаМенюНаДень.Ссылка, ВыборкаСписокБлюдВМеню.ИдентификаторБлюда, Отчет.БазаРасчётаЦен);
ОбластьБлюдоСЦеной.Параметры.Цена = Формат(Цена, "ЧДЦ=2");
ОбластьБлюдоСЦеной.Параметры.Вал = Константы.БазоваяВалютаСистемы.Получить();
ВыводФорма.Вывести(ОбластьБлюдоСЦеной);
Если Цена = NULL тогда
Сообщить("Цена блюда " + ВыборкаСписокБлюдВМеню.Наименование + " не определена");
Иначе
ОбщаяЦена = ОбщаяЦена + Цена;
КонецЕсли;
КонецЕсли;
// ДопПоля = 2 - меню с калориями
Если ДопПоля = 2 Тогда
ОбластьБлюдоСКалор.Параметры.НаименованиеБлюда = ВыборкаСписокБлюдВМеню.Наименование;
ОбластьБлюдоСКалор.Параметры.Выход = СформироватьВыходБлюда(ВыборкаСписокБлюдВМеню.Выход1, ВыборкаСписокБлюдВМеню.Выход2, ВыборкаСписокБлюдВМеню.Выход3);
ОбластьБлюдоСКалор.Параметры.ЕД = ВыборкаСписокБлюдВМеню.ЕдИзм;
ОбластьБлюдоСКалор.Параметры.Калор = Формат(ВыборкаСписокБлюдВМеню.КалорийностьБлюда, "ЧДЦ=2");
ВыводФорма.Вывести(ОбластьБлюдоСКалор);
Если ВыборкаСписокБлюдВМеню.КалорийностьБлюда = NULL тогда
Сообщить("Калорийность блюда " + ВыборкаСписокБлюдВМеню.Наименование + " не определена");
Иначе
ОбщаяКалорийность = ОбщаяКалорийность + Число(ВыборкаСписокБлюдВМеню.КалорийностьБлюда);
КонецЕсли;
КонецЕсли;
// ДопПоля = 3 - вывод параметров БЖУК
Если ДопПоля = 3 Тогда
ОбластьБлюдоЭнц.Параметры.НаименованиеБлюда = ВыборкаСписокБлюдВМеню.Наименование;
ОбластьБлюдоЭнц.Параметры.Выход = СформироватьВыходБлюда(ВыборкаСписокБлюдВМеню.Выход1, ВыборкаСписокБлюдВМеню.Выход2, ВыборкаСписокБлюдВМеню.Выход3);
ОбластьБлюдоЭнц.Параметры.ЕД = ВыборкаСписокБлюдВМеню.ЕдИзм;
ОбластьБлюдоЭнц.Параметры.Белки = Формат(ВыборкаСписокБлюдВМеню.Белки, "ЧДЦ=2");
ОбластьБлюдоЭнц.Параметры.Жиры = Формат(ВыборкаСписокБлюдВМеню.Жиры, "ЧДЦ=2");
ОбластьБлюдоЭнц.Параметры.Углеводы = Формат(ВыборкаСписокБлюдВМеню.Углеводы, "ЧДЦ=2");
ОбластьБлюдоЭнц.Параметры.Калорийность = Формат(ВыборкаСписокБлюдВМеню.КалорийностьБлюда, "ЧДЦ=2");
ВыводФорма.Вывести(ОбластьБлюдоЭнц);
Если НЕ ВыборкаСписокБлюдВМеню.КалорийностьБлюда = NULL тогда
ОбщаяКалорийность = ОбщаяКалорийность + Число(ВыборкаСписокБлюдВМеню.КалорийностьБлюда);
КонецЕсли;
Если НЕ ВыборкаСписокБлюдВМеню.КалорийностьБлюда = NULL тогда
ВсегоБелки = ВсегоБелки + Число(ВыборкаСписокБлюдВМеню.Белки);
КонецЕсли;
Если НЕ ВыборкаСписокБлюдВМеню.КалорийностьБлюда = NULL тогда
ВсегоЖиры = ВсегоЖиры + Число(ВыборкаСписокБлюдВМеню.Жиры);
КонецЕсли;
Если НЕ ВыборкаСписокБлюдВМеню.КалорийностьБлюда = NULL тогда
ВсегоУглеводы = ВсегоУглеводы + Число(ВыборкаСписокБлюдВМеню.Углеводы);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
// Если меню с ценой - выводим общую цену по меню
Если ДопПоля = 1 Тогда
ПодвалМенюСЦеной.Параметры.ЦенаВсего = Формат(ОбщаяЦена, "ЧДЦ=2");
ПодвалМенюСЦеной.Параметры.Вал = Константы.БазоваяВалютаСистемы.Получить();
ВыводФорма.Вывести(ПодвалМенюСЦеной);
КонецЕсли;
// Если меню с калориями - выводим общую калорийность
Если ДопПоля = 2 Тогда
ПодвалМенюСКалор.Параметры.КалорВсего = Формат(ОбщаяКалорийность, "ЧДЦ=2");
ВыводФорма.Вывести(ПодвалМенюСКалор);
КонецЕсли;
// БЖУК
Если ДопПоля = 3 Тогда
ОбластьПодвалБЖУК.Параметры.Белки = Формат(ВсегоБелки, "ЧДЦ=2");
ОбластьПодвалБЖУК.Параметры.Жиры = Формат(ВсегоЖиры, "ЧДЦ=2");
ОбластьПодвалБЖУК.Параметры.Углеводы = Формат(ВсегоУглеводы, "ЧДЦ=2");
ОбластьПодвалБЖУК.Параметры.Калорийность = Формат(ОбщаяКалорийность, "ЧДЦ=2");
ВыводФорма.Вывести(ОбластьПодвалБЖУК);
КонецЕсли;
Если Отчет.ПечататьНР тогда
ВыводФорма.Вывести(ОбластьСсылкаНаСборник);
КонецЕсли;
Подвал.Параметры.ОтветственноеЛицо1 = "Зав. производством";
Подвал.Параметры.ОтветственноеЛицо2 = "Бухгалтер";
Подвал.Параметры.ОтветственноеЛицо3 = "Врач";
ВыводФорма.Вывести(Подвал);
ВыводФорма.ТолькоПросмотр = Истина;
Возврат ВыводФорма;
КонецФункции