|
Как сделать правильное условие в отчете. Ø (GROOVY 23.10.2013 14:33) | ☑ | ||
---|---|---|---|---|
0
Oleg102
23.10.13
✎
14:31
|
Всем привет! Никак не получается сделать отчет. Делаю отчет на основе ТОРГ12. Вообщем есть таблица где вводятся данные и разделяются строки только по столбцу "Питание" (это Завтрак, обед, ужин, ночное питание). Мне надо вывести это в макет печатной формы в ряд столбцами. Я так думаю надо сделать условие и вставлять исходя по условию по областям. Но не могу додуматься как правильно это сделать. Скрины отчета и таблицы прикладываю.
http://www.fotolink.su/v.php?id=91f329cb187a6da96d664a0edb448896 http://www.fotolink.su/v.php?id=2ef4aecc9fb7736ef3ca727669cc514b Код: Функция ПечатьТОРГ12ЕжедневныйОтчет(БезУслуг = Ложь) Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка); Запрос.Текст = "ВЫБРАТЬ | ОбщепитВыпускПродукцииМеню.Ссылка, | ОбщепитВыпускПродукцииМеню.Питание, | ОбщепитВыпускПродукцииМеню.Номенклатура, | ОбщепитВыпускПродукцииМеню.Выход, | ОбщепитВыпускПродукцииМеню.НомерСтроки КАК НомерСтроки, | 1 КАК ID |ИЗ | Документ.ОбщепитВыпускПродукции.Меню КАК ОбщепитВыпускПродукцииМеню |ГДЕ | ОбщепитВыпускПродукцииМеню.Ссылка = &ТекущийДокумент | |УПОРЯДОЧИТЬ ПО | ID, | НомерСтроки"; ВыборкаСтрокТовары = Запрос.Выполнить().Выбрать(); ТабДокумент = Новый ТабличныйДокумент; ДанныеДляПечати = ПодготовитьДанныеДляПечатиТОРГ12(БезУслуг); Если ДанныеДляПечати = Неопределено Тогда Возврат ТабДокумент; КонецЕсли; Шапка = ДанныеДляПечати.Шапка; ТабличнаяЧасть = ДанныеДляПечати.ТабличнаяЧасть; // Зададим параметры макета ТабДокумент.ПолеСверху = 0; ТабДокумент.ПолеСлева = 0; ТабДокумент.ПолеСнизу = 0; ТабДокумент.ПолеСправа = 0; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_ТОРГ12ЕжедневныйОтчет"; Макет = ПолучитьОбщийМакет("ТОРГ12ЕжедневныйОтчет"); ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьМакетаПитаниеШапкаНЗ = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки"); ОбластьМакетаПитаниеШапкаЗ = Макет.ПолучитьОбласть("ШапкаТаблицы|Завтрак"); ОбластьМакетаПитаниеНомерЗ = Макет.ПолучитьОбласть("ТаблицаПитание|НомерСтроки"); ОбластьМакетаПитаниеЗ = Макет.ПолучитьОбласть("ТаблицаПитание|Завтрак"); ОбластьМакетаПитаниеШапкаНО = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтрокиОбед"); ОбластьМакетаПитаниеШапкаО = Макет.ПолучитьОбласть("ШапкаТаблицы|Обед"); ОбластьМакетаПитаниеНомерО = Макет.ПолучитьОбласть("ТаблицаПитание|НомерСтрокиОбед"); ОбластьМакетаПитаниеО = Макет.ПолучитьОбласть("ТаблицаПитание|Обед"); ОбластьМакетаЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаб"); ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьМакетаВсего = Макет.ПолучитьОбласть("Всего"); ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал"); // Выводим общие реквизиты шапки СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.ЮрФизЛицо, Шапка.ДатаДокумента, , Шапка.БанковскийСчет); СведенияОГрузоотправителе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузоотправитель, Шапка.ДатаДокумента); СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Покупатель, Шапка.ДатаДокумента); СведенияОГрузополучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузополучатель, Шапка.ДатаДокумента); ОбластьМакетаШапка.Параметры.Заполнить(Шапка); ОбластьМакетаШапка.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка); ОбластьМакетаШапка.Параметры.ДатаДокумента = Шапка.ДатаДокумента; Если СокрЛП(Шапка.АдресДоставки) <> "" Тогда ПредставлениеГрузополучателяДоАдреса = ФормированиеПечатныхФорм.ОписаниеОрганизации( СведенияОГрузополучателе, "НаименованиеДляПечатныхФорм,ИНН,"); ПредставлениеГрузополучателяПослеАдреса = ФормированиеПечатныхФорм.ОписаниеОрганизации( СведенияОГрузополучателе, "Телефоны,НомерСчета,Банк,БИК,КоррСчет,"); ОбластьМакетаШапка.Параметры.ПредставлениеГрузополучателя = ?(СокрЛП(ПредставлениеГрузополучателяДоАдреса) = "", "", ПредставлениеГрузополучателяДоАдреса+", ") + Шапка.АдресДоставки + ?(СокрЛП(ПредставлениеГрузополучателяПослеАдреса)="", "", ", "+ПредставлениеГрузополучателяПослеАдреса); Иначе ОбластьМакетаШапка.Параметры.ПредставлениеГрузополучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации( СведенияОГрузополучателе,"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,БИК,КоррСчет"); КонецЕсли; ТабДокумент.Вывести(ОбластьМакетаШапка); //Олег ТабДокумент.Вывести(ОбластьМакетаПитаниеШапкаНЗ); ТабДокумент.Присоединить(ОбластьМакетаПитаниеШапкаЗ); ОбластьКолонкаТоварЗ = Макет.Область("Завтрак"); ТабДокумент.Присоединить(ОбластьМакетаПитаниеШапкаО); ОбластьКолонкаТоварО = Макет.Область("Обед"); НС = 1; Пока ВыборкаСтрокТовары.Следующий() Цикл ОбластьМакетаПитаниеНомерЗ.Параметры.НомерСтроки = НС; ТабДокумент.Вывести(ОбластьМакетаПитаниеНомерЗ); ОбластьМакетаПитаниеЗ.Параметры.Заполнить(ВыборкаСтрокТовары); ОбластьМакетаПитаниеЗ.Параметры.Номенклатура = СокрЛП(ВыборкаСтрокТовары.Номенклатура); ОбластьМакетаПитаниеЗ.Параметры.Выход = ВыборкаСтрокТовары.Выход; ТабДокумент.Присоединить(ОбластьМакетаПитаниеЗ); НС = НС + 1; КонецЦикла; // Инициализация счетчика страниц НомерСтраницы = 1; // Инициализация итогов по странице ИтогоМестНаСтранице = 0; ИтогоКоличествоНаСтранице = 0; ИтогоСуммаНаСтранице = 0; ИтогоНДСНаСтранице = 0; ИтогоСуммаСНДСНаСтранице = 0; // Инициализация итогов по документу ИтогоМест = 0; ИтогоКоличество = 0; ИтогоСуммаСНДС = 0; ИтогоСумма = 0; ИтогоНДС = 0; // Инициализация счетчика строк НомерСтроки = 0; КоличествоСтрок = ТабличнаяЧасть.Количество(); // Выводим заголовок многострочной части ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы); // Выводим многострочную часть документа Для Каждого ВыборкаСтрок Из ТабличнаяЧасть Цикл НомерСтроки = НомерСтроки + 1; ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСтрок); ОбластьМакетаСтрока.Параметры.Номер = НомерСтроки; Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.КоличествоМест) Тогда ОбластьМакетаСтрока.Параметры.ВидУпаковки = ""; ОбластьМакетаСтрока.Параметры.КоличествоВОдномМесте = ""; КонецЕсли; ОбластьМакетаСтрока.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрок.ТоварНаименование); СуммаСНДС = (ВыборкаСтрок.Сумма + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС)); КоличествоМест = ВыборкаСтрок.КоличествоМест; Количество = ВыборкаСтрок.Количество; СуммаНДС = ВыборкаСтрок.СуммаНДС; СуммаБезНДС = СуммаСНДС - СуммаНДС; ОбластьМакетаСтрока.Параметры.СуммаБезНДС = СуммаБезНДС; // Проверим вывод СтрокаСПодвалом = Новый Массив; Если НомерСтроки = 1 Тогда СтрокаСПодвалом.Добавить(ОбластьМакетаЗаголовокТаблицы); // если первая строка, то должен КонецЕсли; // помещаться заголовок СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока); Если НомерСтроки = КоличествоСтрок Тогда // если последняя строка, должен СтрокаСПодвалом.Добавить(ОбластьМакетаВсего); // помещаться и подвал документа СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал); КонецЕсли; ТабДокумент.Вывести(ОбластьМакетаСтрока); // Увеличим итоги по странице ИтогоМестНаСтранице = ИтогоМестНаСтранице + КоличествоМест; ИтогоКоличествоНаСтранице = ИтогоКоличествоНаСтранице + Количество; ИтогоСуммаНаСтранице = ИтогоСуммаНаСтранице + СуммаБезНДС; // Увеличим итоги по документу ИтогоМест = ИтогоМест + КоличествоМест; ИтогоКоличество = ИтогоКоличество + Количество; ИтогоСумма = ИтогоСумма + СуммаБезНДС; КонецЦикла; // Выводим итоги по странице ОбластьМакетаВсего.Параметры.ИтогКоличество = ИтогоКоличество; ОбластьМакетаВсего.Параметры.ИтогСуммы = ИтогоСумма; ТабДокумент.Вывести(ОбластьМакетаВсего); // Выводим подвал документа ОбластьМакетаПодвал.Параметры.ФИОСтПовар = Шапка.ФИОСтПовар; ОбластьМакетаПодвал.Параметры.ФИОТехнолог = Шапка.ФИОТехнолог; ТабДокумент.Вывести(ОбластьМакетаПодвал); Возврат ТабДокумент; КонецФункции // ПечатьТОРГ12ЕжедневныйОтчет() |
|||
1
zak555
23.10.13
✎
14:32
|
Питание -- это завтра/обед/ужин ?
|
|||
2
zak555
23.10.13
✎
14:32
|
*завтрак
|
|||
3
Oleg102
23.10.13
✎
14:32
|
да
|
|||
4
Oleg102
23.10.13
✎
14:33
|
блин наверное это не сложно. Ноя пока учусь. не могу сообразить
|
|||
5
GROOVY
23.10.13
✎
14:33
|
Научишся темы называть нормально - помогу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |