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

Помогите свернуть строки макета

Автор Tyshkan, 29 авг 2012, 10:06

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

Tyshkan

В макете выводятся данные документа и в них есть ставки НДС 10 и 18, так вот если в одном документе есть обе ставки он их выводит вначале одну, а ниже другую. А мне нужно чтобы выводилось в строке документа в соответствующий колонках. Может сделать как-то выгрузить в ТЗ и свернуть??? Но как это сделать??? Помогите...


Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.Прямой);
   ВыборкаВалют = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
   ТабДок = ЭлементыФормы.ПолеТабличногоДокументаРеестр;
   ТабДок.Очистить();
   Макет  = ПолучитьМакет("РеестрДокументов");         
   
   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.ТекстЗаголовка = "Реестр счетов фактур за период " + Формат(ДатаНач, "ДФ=dd.MM.yyyy") + " - " + Формат(ДатаКон, "ДФ=dd.MM.yyyy");
   ТабДок.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ТабДок.Вывести(ОбластьМакета);
   
   К=0;
   Пока Выборка.Следующий() Цикл
      Если Выборка.ТипЗаписи() <> ТипЗаписиЗапроса.ДетальнаяЗапись Тогда
         продолжить;
      КонецЕсли;
      К = К+1;
      ОбластьМакета = Макет.ПолучитьОбласть("Строка");
      ОбластьМакета.Параметры.Заполнить(Выборка);
      Если ЗначениеЗаполнено(Выборка.Агент) Тогда
         ОбластьМакета.Параметры.Проект = Выборка.Агент;
      КонецЕсли;
      //      ОбластьМакета.Параметры.Комментарий = СокрП(ОбластьМакета.Параметры.Комментарий);
      //ОбластьМакета.Параметры.НомерСтроки     = К;
      
      ТабДок.Вывести(ОбластьМакета);
      
   КонецЦикла;
   
   ЛинияБезГраниц = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии);
   ИтогНадпись = "Итого:";
   Пока ВыборкаВалют.Следующий() Цикл
      Если ВыборкаВалют.ВалютаДокумента = NULL И ВыборкаВалют.СуммаДокумента = NULL
         ИЛИ ВыборкаВалют.ВалютаДокумента = Справочники.Валюты.ПустаяСсылка() И ВыборкаВалют.СуммаДокумента = 0.00 Тогда
         продолжить;
      КонецЕсли;
      ОбластьМакета = Макет.ПолучитьОбласть("Строка");
//      ОбластьМакета.Параметры.ВалютаДокумента = ВыборкаВалют.ВалютаДокумента;
      //Попытка
      //   ОбластьМакета.Параметры.Проект = ВыборкаВалют.ВалютаДокумента;
      
      ОбластьМакета.Параметры.СуммаДокумента  = СокрЛП(Формат(ВыборкаВалют.СуммаДокумента, "ЧЦ=15;ЧДЦ=2"));
      ОбластьМакета.Параметры.Контрагент      = ИтогНадпись;
      Для х = 1 По ОбластьМакета.ШиринаТаблицы Цикл
         ОбластьМакета.Область(1, х, 1, х).Обвести(ЛинияБезГраниц, ЛинияБезГраниц, ЛинияБезГраниц, ЛинияБезГраниц);
      КонецЦикла;
      ТабДок.Вывести(ОбластьМакета);
      ИтогНадпись = "";
   КонецЦикла;
   
   // Зададим параметры макета
   ТабДок.Автомасштаб = Истина;
   ТабДок.ОриентацияСтраницы  = ОриентацияСтраницы.Ландшафт;

   // Первую колонку не печатаем
   ТабДок.ОбластьПечати = ТабДок.Область(1,2,ТабДок.ВысотаТаблицы,ТабДок.ШиринаТаблицы);
   
   ТабДок.ФиксацияСлева  = 4;
   ТабДок.ФиксацияСверху = 3;
   

MuI_I_Ika

По хорошему нужно сделать правильный запрос, чтобы он уже содержал данные в том виде в котором вы формируете отчет.

Но если хочется отрабатывать это кодом, то можно в цикле при выводе строк проверять не повторная ли это запись и если повторная, и в ней просто другой НДС, редактировать старое значение строки.

Или выгрузить результат запроса в ТЗ и проделать то же самое с ТЗ. Но это не правильный подход.

Tyshkan

просто я думала выгрузить запрос в ТЗ, свернуть ее и потом перебрать в цикле значения ТЗ.Но у меня никак не получается выгрузить в ТЗ запрос

cska-fanat-kz

ТЗ = Запрос.Выполнить().Выгрузить();
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Tyshkan

пробовала, не выгружает в ТЗ данные

MuI_I_Ika

Она не выгружает какие-то конкретные данные? Или результат полностью не выгружается?
ТЗ в результате чему равна?

Tyshkan

ничего не выгружает.Может я что-то не правильно пишу. после "Макет=ПолучитьМакет(..);" ТЗ=РезультатЗапроса.Выгрузить();

MuI_I_Ika

ТЗ = Запрос.Выполнить().Выгрузить();

Прямо на этой строке точку останова поставьте и скажите чему равно ТЗ

Tyshkan


Tyshkan

В ТЗ есть значения колонок из запроса
как мне теперь их в макет закинуть??

Теги:

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

Рейтинг@Mail.ru

Поиск