8.х Данные ТЗ в макет печатного документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Светлана5291, 8 июн 2015.

  1. TopicStarter Overlay
    Светлана5291
    Offline

    Светлана5291 Опытный в 1С

    Регистрация:
    6 фев 2013
    Сообщения:
    156
    Симпатии:
    0
    Баллы:
    26
    что то у меня с этой доп. областью не получается.. Получилось так, без области усл
    Код:
    Для каждого СтоимостьУслуг из мСтоимостьУслуг Цикл
    Обл.Параметры.СтоимостьУслуг=СтоимостьУслуг.Код;
    КонецЦикла;
    
    Цикл проходит, коды видны в отладчике, только в параметр заполняется только последний код. А если вставить в цикле
    Код:
    ТабДокумент.Вывести(Обл)
    то соответственно выводится весь макет по 3 раза
  2. TopicStarter Overlay
    Светлана5291
    Offline

    Светлана5291 Опытный в 1С

    Регистрация:
    6 фев 2013
    Сообщения:
    156
    Симпатии:
    0
    Баллы:
    26
    как вариант разбить макет на области, тогда выводиться нормально. Просто хотелось бы понять как именно 1 ячейку дублировать в соответствии с количеством строчек в тз.
    так работает:
    Код:
    // другой код.....
    Обл = Макет.ПолучитьОбласть("Усл");
    
    
    Для каждого СтоимостьУслуг из мСтоимостьУслуг Цикл
    
    обл.Параметры.СтоимостьУслуг=СтоимостьУслуг.Код;
    ТабДокумент.Вывести(обл);
    
    КонецЦикла;
    
    Обл = Макет.ПолучитьОбласть("Оборотная1");
    ТабДокумент.Вывести(обл);
    
  3. RuslanKhanow
    Offline

    RuslanKhanow Опытный в 1С

    Регистрация:
    18 фев 2015
    Сообщения:
    145
    Симпатии:
    0
    Баллы:
    26
    На держи как пример,только вчера делал)
    Код:
    &НаСервере
    Функция СформироватьПечатнуюФормуНаСервере()
      
      
        ТабДокумент = Новый ТабличныйДокумент;   
        Макет = ПолучитьМакетНаСервере();   
        
        ОбластьОбщая = Макет.ПолучитьОбласть("ОбластьОбщая");
        ОбластьОбщая.Параметры.НомЗаказа = Объект.Номер;
              
        Дата = Объект.Дата;
        Число = Формат(Дата, "Дф = дд");
        Месяц = Формат(Дата, "Дф = ММММ");
        Год = Формат(Дата, "Дф = гг");
        
        Если Месяц = "Март" ИЛИ Месяц = "Август" Тогда
            Месяц = Месяц + "а";
        Иначе
            Мен =  СтрДлина(Месяц) - 1  ;
            Месяц = Лев(Месяц,мен) + "я";
        КонецЕсли;
            
        ОбластьОбщая.Параметры.Число  = Число;
        ОбластьОбщая.Параметры.Месяц  = Месяц;
        ОбластьОбщая.Параметры.Год    = Год;
        
        ОбластьОбщая.Параметры.Заказчик = Объект.Контрагент;
        ОбластьОбщая.Параметры.Исполнитель = " ";
        
        ТабДокумент.Вывести(ОбластьОбщая);
        
        ОбластьЗаказОбщая  = Макет.ПолучитьОбласть("ОбластьЗаказОбщая");
        ТабДокумент.Вывести(ОбластьЗаказОбщая);
        ОбластьЗаказЗаказы = Макет.ПолучитьОбласть("ОбластьЗаказЗаказы");
        
        Для каждого СтрокаТЧ из Объект.СоставРабот Цикл
            ОбластьЗаказЗаказы.Параметры.Номер = СтрокаТЧ.НомерСтроки;
            ОбластьЗаказЗаказы.Параметры.НаименованиеРаботы = СтрокаТЧ.НаименованиеРабот;
            ОбластьЗаказЗаказы.Параметры.Часы = СтрокаТЧ.Трудозатраты;        
            ТабДокумент.Вывести(ОбластьЗаказЗаказы);
            СтрокаТЧ.ПолучитьИдентификатор()
        КонецЦикла;
        
        ОбластьЗаказИтог = Макет.ПолучитьОбласть("ОбластьЗаказИтог");
        ОбластьЗаказИтог.Параметры.ВсегоЧасов = Объект.СоставРабот.Итог("Трудозатраты");
        
        
        ТабДокумент.Вывести(ОбластьЗаказИтог);     
        
        
        ОбластьЗаказПодвал = Макет.ПолучитьОбласть("ОбластьЗаказПодвал");
        ОбластьЗаказПодвал.Параметры.Автор = Объект.Автор;
        ТабДокумент.Вывести(ОбластьЗаказПодвал);
        Возврат ТабДокумент;        
    КонецФункции
    
    
    --- Объединение сообщений, 11 июн 2015 ---
    Тоже вчера впервые табличную часть выводил в цикле
    Код:
    Для каждого СтрокаТЧ из Объект.СоставРабот Цикл
    ОбластьЗаказЗаказы.Параметры.Номер = СтрокаТЧ.НомерСтроки;
    ОбластьЗаказЗаказы.Параметры.НаименованиеРаботы = СтрокаТЧ.НаименованиеРабот;
    ОбластьЗаказЗаказы.Параметры.Часы = СтрокаТЧ.Трудозатраты;
    ТабДокумент.Вывести(ОбластьЗаказЗаказы);
    КонецЦикла;
    
    Область делаешь и после прохода возвращаешь значение просто
    Код:
    ТабДокумент.Вывести(ОбластьЗаказЗаказы);
    
    Вообщем на примере все понятно должно быть
    --- Объединение сообщений, 11 июн 2015 ---
    Шаблон печатной формы

    Вложения:

    • Тест.epf
      Размер файла:
      6 КБ
      Просмотров:
      0
    Последнее редактирование: 11 июн 2015
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Странно что у Вас не получается. во вложении пример, посмотрите
    Вот макет рис 1 вот результат подобласть детали выводиться Рис 2

    Вот код вывода
    Код:
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
        ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
        ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
        ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
        ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
        ОбластьПодДеталей = ОбластьДетальныхЗаписей.ПолучитьОбласть("ПодДетали");
       
        ТабДок.Очистить();
        ТабДок.Вывести(ОбластьЗаголовок);
        ТабДок.Вывести(ОбластьШапкаТаблицы);
        ТабДок.НачатьАвтогруппировкуСтрок();
    
        ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            а=1;
            б=3;
            ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
            ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
            ОбластьПодДеталей = ОбластьДетальныхЗаписей.ПолучитьОбласть("ПодДетали");
            Пока а<б Цикл
                ОбластьПодДеталей.Параметры.МойПараметр="ааааа"+ВыборкаДетальныеЗаписи.Представление;
                ТабДок.Вывести(ОбластьПодДеталей,ВыборкаДетальныеЗаписи.Уровень());
                а=а+1;
            КонецЦикла;   
        КонецЦикла;
    
    Т.е под область через область получаем, как и писал
    --- Объединение сообщений, 11 июн 2015 ---
    Попробуйте у Вас вот так
    Код:
    Форма = ЭтотОбъект.ПолучитьФорму("ФормаДокумента");
    СтоимостьУслуг = Форма.ЭлементыФормы.СтоимостьУслуг.Значение;
    
    Оборот = Макет.ПолучитьОбласть("Оборотная");
    ТабДокумент.Вывести(Оборот);
    
    Для каждого стр из СтоимостьУслуг Цикл
    
    Усл = Оборот.ПолучитьОбласть("Усл");
    усл.Параметры.Заполнить(стр);
    ТабДокумент.Вывести(усл);
    
    КонецЦикла;
    Т.е вывели оборотную область, вывели ее, а затем уже в цикле получаете подобласти и выводите

    Вложения:

Поделиться этой страницей