8.х Получение данных из табличной части документа для вставки в макет

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

Статус темы:
Закрыта.
  1. TopicStarter Overlay
    andreya81
    Offline

    andreya81 Опытный в 1С

    Регистрация:
    27 ноя 2014
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Код:
    Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
       
    
        ТабличныйДокумент = Новый ТабличныйДокумент;
        ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_мфоВыдачаЗайма_ДоговорКратскосрочный";
       
        ТабличныйДокумент = Новый ТабличныйДокумент;
       
        ДанныеПечати            = Запрос.Выполнить().Выбрать();
       
        ПервыйДокумент          = Истина;
       
           
        Пока ДанныеПечати.Следующий() Цикл
       
            // Макет необходимо получать для каждого документа, т.к. размеры колонок изменяются динамически
            Макет           = УправлениеПечатью.ПолучитьМакет("Документ.мфоВыдачаЗайма.ГрафикПлатежейСреднесрочный");
           
            Если Не ПервыйДокумент Тогда
                ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            КонецЕсли;
           
            ПервыйДокумент    = Ложь;
            НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
            //Шапка
            ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
           
            ОбластьМакета.Параметры.НаселенныйПункт = ?(ЗначениеЗаполнено(ДанныеПечати.ПодразделениеГород),
                                                    СокрЛП(ДанныеПечати.ПодразделениеГород), "_______________");
            ОбластьМакета.Параметры.Контрагент = ДанныеПечати.Контрагент;
            ОбластьМакета.Параметры.Номер = ДанныеПечати.Номер;
            ОбластьМакета.Параметры.ФИОМенеджера = ДанныеПечати.ФИОМенеджера;
            ОбластьМакета.Параметры.ПодразделениеТелефон = ДанныеПечати.ПодразделениеТелефон;
            ОбластьМакета.Параметры.СуммаЗайма = Формат(ДанныеПечати.СуммаЗайма, "ЧЦ=17; ЧДЦ=0; ЧН=; ЧГ=3,0");
            ОбластьМакета.Параметры.ДатаВыдачи    = Формат(ДанныеПечати.ДатаВыдачи,"ДФ= 'дд ММММ гггг'");
            ОбластьМакета.Параметры.ДатаВыдачиДоговор = Формат(ДанныеПечати.ДатаВыдачи,"ДФ='дд ММММ гггг ""года""'");
            ОбластьМакета.Параметры.Ставка = Формат(ДанныеПечати.Ставка,"ЧЦ=15; ЧДЦ=2") + "%";
            ОбластьМакета.Параметры.СрокЗайма = ДанныеПечати.СрокЗайма;
            ОбластьМакета.Параметры.СтавкаГод = Формат(ДанныеПечати.ПСК,"ЧЦ=15; ЧДЦ=2") + "%";
            ОбластьМакета.Параметры.ПСК = Формат(ДанныеПечати.ПСК,"ЧЦ=15; ЧДЦ=3") + "%";
    
            ТабличныйДокумент.Вывести(ОбластьМакета);
           
            //График платежей
            ОбластьМакета = Макет.ПолучитьОбласть("ГрафикПлатежейШапка");
            ТабличныйДокумент.Вывести(ОбластьМакета);
            ОбластьМакета = Макет.ПолучитьОбласть("ГрафикПлатежей");
            ОбластьМакета.Параметры.НомерСтроки = ДанныеПечати.НомерСтроки;
            ТабличныйДокумент.Вывести(ОбластьМакета);
            //Подвал
            ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
           
            ОбластьМакета.Параметры.НаименованиеОрганизации = ДанныеПечати.Организация;
            ОбластьМакета.Параметры.ЮрАдрес = ДанныеПечати.ЮрАдресОрганизации;
            ОбластьМакета.Параметры.ФактАдрес = ДанныеПечати.ПодразделениеАдрес;
            ОбластьМакета.Параметры.ИННОрганизации = ДанныеПечати.Организация_ИНН;
            ОбластьМакета.Параметры.КППОрганизации = ДанныеПечати.Организация_КПП;
            ОбластьМакета.Параметры.РасчетныйСчет = ДанныеПечати.РасчетныйСчет;
            ОбластьМакета.Параметры.Банк = ДанныеПечати.Банк;
            ОбластьМакета.Параметры.КорСчет = ДанныеПечати.КорСчет;
            ОбластьМакета.Параметры.БИК = ДанныеПечати.БИК;
            ОбластьМакета.Параметры.Номер = ДанныеПечати.Номер;
            ОбластьМакета.Параметры.ПодразделениеТелефон = ДанныеПечати.ПодразделениеТелефон;
            ОбластьМакета.Параметры.ДатаВыдачиДоговор = Формат(ДанныеПечати.ДатаВыдачи,"ДФ='дд ММММ гггг ""года""'");   
           
            ТабличныйДокумент.Вывести(ОбластьМакета);
        КонецЦикла;
       
        ТабличныйДокумент.АвтоМасштаб = Истина;
    
        Если ПривилегированныйРежим() Тогда
            УстановитьПривилегированныйРежим(Ложь);
        КонецЕсли;
       
        Возврат ТабличныйДокумент;
    КонецФункции
    --- Объединение сообщений, 28 ноя 2014 ---
    Пока попробовал НомерСтроки
  2. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Да, если у вас макет под каждый документ, то тут будет под каждую строчку ТЧ новый.
    Делать тогда цикл в цикле надо, например, можно сделать итоги по документу и обход по группировкам - первый цикл, берём документ, создаём макет, в нём цикл по детальным записям, заполняем уже макет.

    Пробуй:)
    --- Объединение сообщений, 28 ноя 2014 ---
    лИБО ОСТАВИТЬ КАК ЕСТЬ, НО (ой) создавать макет только если документ изменился.
    У тебя в данном случае выборка следующего вида
    Док1 ТЧСтрока1
    Док1 ТЧСтрока2
    Док1 ТЧСтрока3
    Док2 ТЧСтрока1
    Док2 ТЧСтрока2
    ...
  3. TopicStarter Overlay
    andreya81
    Offline

    andreya81 Опытный в 1С

    Регистрация:
    27 ноя 2014
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Даша спасибо конечно. Но для меня с моим уровнем квалификации в данном вопросе цикл в цикле не понятен. Откуда начинать и где заканчивать этот самый цикл в цикле.
  4. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Оставь как есть, только новый макет создавай, если предыдущий документ из выборки отличается от текущего.
    Потом научишься цикл в цикле делать.
  5. TopicStarter Overlay
    andreya81
    Offline

    andreya81 Опытный в 1С

    Регистрация:
    27 ноя 2014
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Последний глупый вопрос новичка, а как это сделать? И если постигнет неудача, закрываем тему и иду переписывать под (ТабДок. Ссылка)
    --- Объединение сообщений, 28 ноя 2014 ---
    А как кстати ведут себя ЕСТЬNULL и ЛЕВОЕ СОЕДИНЕНИЕ в случае с (ТабДок.Ссылка)
  6. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Создай макет перед циклом.Сделай переменную ТекДок которой перед циклом присвой значение "", а в конце цикла присваивай значение ДанныеПечати.Ссылка, в выборке перед созданием макета сделай условие
    Код:
    Если ТекДок <> ДанныеПечати.ССылка Тогда
    Создаём макет. Иначе не создаём новый, а в имеющемся заполняем данные.
  7. TopicStarter Overlay
    andreya81
    Offline

    andreya81 Опытный в 1С

    Регистрация:
    27 ноя 2014
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Переменная не определена ДанныеПечати.Ссылка
    Код:
    Функция СформироватьПечатнуюФормуГрафикПлатежейСреднесрочный(МассивОбъектов, ОбъектыПечати)
        Запрос       = Новый Запрос;
       
        Запрос.Текст = "ВЫБРАТЬ
        |    мфоВыдачаЗаймаГрафикиПлатежей.Ссылка,
        |    мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Номер,
        |    мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.ДатаВыдачи,
        |    мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.ФИОМенеджера,
        |    мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Контрагент,
        |    мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.ПСК,
        |    мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.СуммаЗайма,
        |   мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Организация,
        |   мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Организация.ИНН КАК Организация_ИНН,
        |    мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Организация.КПП КАК Организация_КПП,
        |   мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Ставка,
        |   мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.СрокЗайма,
        |    ЕСТЬNULL(КИ_Организация_Адрес.Представление, """") КАК ЮрАдресОрганизации,
        |    ЕСТЬNULL(КИ_ТочкаПродаж_Адрес.Представление, """") КАК ПодразделениеАдрес,
        |    ЕСТЬNULL(КИ_ТочкаПродаж_Телефон.Представление, """") КАК ПодразделениеТелефон,
        |    ЕСТЬNULL(КИ_ТочкаПродаж_Адрес.Город, """") КАК ПодразделениеГород,
        |    ЕСТЬNULL(КИ_Контрагент_Адрес.Представление, """") КАК ФактАдресКонтрагента,
        |    ЕСТЬNULL(КИ_Контрагент_Телефон.Представление, """") КАК ТелефонКонтрагента,
        |    ЕСТЬNULL(КИ_Контрагент_ЮрАдрес.Представление, """") КАК ЮрАдресКонтрагента,
        |      мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.БанковскийСчет.КоррСчетБанка КАК КорСчет,
        |   мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.БанковскийСчет.НомерСчета КАК РасчетныйСчет,
        |   мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.БанковскийСчет.БИКБанка КАК БИК,
        |   мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.БанковскийСчет.Банк КАК Банк,
        |   мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Организация.РегистрационныйНомерВРеестреМФО КАК РегистрационныйНомер,
        |    мфоВыдачаЗаймаГрафикиПлатежей.НомерСтроки КАК НомерСтроки,
        |    мфоВыдачаЗаймаГрафикиПлатежей.Период КАК Период,
        |    мфоВыдачаЗаймаГрафикиПлатежей.СуммаПлатежа КАК СуммаПлатежа,
        |    мфоВыдачаЗаймаГрафикиПлатежей.СуммаПроценты КАК СуммаПроценты,   
        |    мфоВыдачаЗаймаГрафикиПлатежей.СуммаПогашениеДолга КАК СуммаПогашенияДолга,
        |    мфоВыдачаЗаймаГрафикиПлатежей.СуммаОстатокДолга КАК СуммаОстатокДолга
        |   
        |   
        |      
        |ИЗ
        |    Документ.мфоВыдачаЗайма.ГрафикПлатежей КАК мфоВыдачаЗаймаГрафикиПлатежей
        |    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации.КонтактнаяИнформация КАК КИ_Организация_Адрес
        |        ПО мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Организация = КИ_Организация_Адрес.Ссылка
        |            И (КИ_Организация_Адрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресОрганизации))
        |    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.мфоКонтрагенты.КонтактнаяИнформация КАК КИ_Контрагент_Адрес
        |        ПО (КИ_Контрагент_Адрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ФактАдресКонтрагента))
        |            И мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Контрагент = КИ_Контрагент_Адрес.Ссылка
        |    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.мфоКонтрагенты.КонтактнаяИнформация КАК КИ_Контрагент_ЮрАдрес
        |        ПО (КИ_Контрагент_ЮрАдрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента))
        |            И мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Контрагент = КИ_Контрагент_ЮрАдрес.Ссылка
        |    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.мфоКонтрагенты.КонтактнаяИнформация КАК КИ_Контрагент_Телефон
        |        ПО (КИ_Контрагент_Телефон.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента))
        |            И мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Контрагент = КИ_Контрагент_Телефон.Ссылка
        |    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.мфоПодразделенияОрганизаций.КонтактнаяИнформация КАК КИ_ТочкаПродаж_Адрес
        |        ПО мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Подразделение.Ссылка = КИ_ТочкаПродаж_Адрес.Ссылка
        |            И (КИ_ТочкаПродаж_Адрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ФактАдресТочкиПродаж))
        |    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.мфоПодразделенияОрганизаций.КонтактнаяИнформация КАК КИ_ТочкаПродаж_Телефон
        |        ПО мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Подразделение.Ссылка = КИ_ТочкаПродаж_Телефон.Ссылка
        |            И (КИ_ТочкаПродаж_Телефон.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонТочкиПродаж))
        |
        |ГДЕ
        |    мфоВыдачаЗаймаГрафикиПлатежей.Ссылка В(&МассивДокументов)";
       
        Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
        ТекДок = "";
        Если ТекДок <> ДанныеПечати.Ссылка Тогда
    
        ТабличныйДокумент = Новый ТабличныйДокумент;
        ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_мфоВыдачаЗайма_ДоговорКратскосрочный";
       
        ТабличныйДокумент = Новый ТабличныйДокумент;
       
        ДанныеПечати            = Запрос.Выполнить().Выбрать();
       
        ПервыйДокумент          = Истина;
        Макет           = УправлениеПечатью.ПолучитьМакет("Документ.мфоВыдачаЗайма.ГрафикПлатежейСреднесрочный");
        Шапка = Макет.ПолучитьОбласть("Шапка");
        ГрафикПлатежейШапка = Макет.ПолучитьОбласть("ГрафикПлатежейШапка");
        ГрафикПлатежей = Макет.ПолучитьОбласть("ГрафикПлатежей");
        ГрафикПлатежейПодвал = Макет.ПолучитьОбласть("ГрафикПлатежейПодвал");
        Подвал = Макет.ПолучитьОбласть("Подвал");
        ТекДок = "";   
        Пока ДанныеПечати.Следующий() Цикл
       
            Если Не ПервыйДокумент Тогда
                ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            КонецЕсли;
           
            ПервыйДокумент    = Ложь;
            НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
            //Шапка
                    
            Шапка.Параметры.НаселенныйПункт = ?(ЗначениеЗаполнено(ДанныеПечати.ПодразделениеГород),
                                                    СокрЛП(ДанныеПечати.ПодразделениеГород), "_______________");
            Шапка.Параметры.Контрагент = ДанныеПечати.Контрагент;
            Шапка.Параметры.Номер = ДанныеПечати.Номер;
            Шапка.Параметры.ФИОМенеджера = ДанныеПечати.ФИОМенеджера;
            Шапка.Параметры.ПодразделениеТелефон = ДанныеПечати.ПодразделениеТелефон;
            Шапка.Параметры.СуммаЗайма = Формат(ДанныеПечати.СуммаЗайма, "ЧЦ=17; ЧДЦ=0; ЧН=; ЧГ=3,0");
            Шапка.Параметры.ДатаВыдачи    = Формат(ДанныеПечати.ДатаВыдачи,"ДФ= 'дд ММММ гггг'");
            Шапка.Параметры.ДатаВыдачиДоговор = Формат(ДанныеПечати.ДатаВыдачи,"ДФ='дд ММММ гггг ""года""'");
            Шапка.Параметры.Ставка = Формат(ДанныеПечати.Ставка,"ЧЦ=15; ЧДЦ=2") + "%";
            Шапка.Параметры.СрокЗайма = ДанныеПечати.СрокЗайма;
            Шапка.Параметры.СтавкаГод = Формат(ДанныеПечати.ПСК,"ЧЦ=15; ЧДЦ=2") + "%";
            Шапка.Параметры.ПСК = Формат(ДанныеПечати.ПСК,"ЧЦ=15; ЧДЦ=3") + "%";
    
            ТабличныйДокумент.Вывести(Шапка);
           
            //График платежей
           
            ТабличныйДокумент.Вывести(ГрафикПлатежейШапка);
            ГрафикПлатежей.Параметры.НомерСтроки = ДанныеПечати.НомерСтроки;
            ТабличныйДокумент.Вывести(ГрафикПлатежей);
            ТабличныйДокумент.Вывести(ГрафикПлатежейПодвал);
            //Подвал
                   
            Подвал.Параметры.НаименованиеОрганизации = ДанныеПечати.Организация;
            Подвал.Параметры.ЮрАдрес = ДанныеПечати.ЮрАдресОрганизации;
            Подвал.Параметры.ФактАдрес = ДанныеПечати.ПодразделениеАдрес;
            Подвал.Параметры.ИННОрганизации = ДанныеПечати.Организация_ИНН;
            Подвал.Параметры.КППОрганизации = ДанныеПечати.Организация_КПП;
            Подвал.Параметры.РасчетныйСчет = ДанныеПечати.РасчетныйСчет;
            Подвал.Параметры.Банк = ДанныеПечати.Банк;
            Подвал.Параметры.КорСчет = ДанныеПечати.КорСчет;
            Подвал.Параметры.БИК = ДанныеПечати.БИК;
            Подвал.Параметры.Номер = ДанныеПечати.Номер;
            Подвал.Параметры.ПодразделениеТелефон = ДанныеПечати.ПодразделениеТелефон;
            Подвал.Параметры.ДатаВыдачиДоговор = Формат(ДанныеПечати.ДатаВыдачи,"ДФ='дд ММММ гггг ""года""'");   
           
            ТабличныйДокумент.Вывести(Подвал);
        КонецЦикла;
        ТекДок = ДанныеПечати.Ссылка;
        КонецЕсли;
        ТабличныйДокумент.АвтоМасштаб = Истина;
    
        Если ПривилегированныйРежим() Тогда
            УстановитьПривилегированныйРежим(Ложь);
        КонецЕсли;
       
        Возврат ТабличныйДокумент;
    КонецФункции
    --- Объединение сообщений, 28 ноя 2014 ---
    Кстати попробовал через ТабДок. Ссылка.
    ЕСТЬNULL и ЛЕВОЕ СОЕДИНЕНИЕ не работают((
    Последнее редактирование: 28 ноя 2014
  8. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Присвойте в запросе всем выбираемым данным имена через КАК
    Код:
    мфоВыдачаЗаймаГрафикиПлатежей.Ссылка.Организация.КПП КАК Организация_КПП,
    и по этим именам уже выбирайте.
  9. TopicStarter Overlay
    andreya81
    Offline

    andreya81 Опытный в 1С

    Регистрация:
    27 ноя 2014
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Все равно "Переменная не определена ДанныеПечати.Ссылка"
    --- Объединение сообщений, 28 ноя 2014 ---
    В
    Если ТекДок <> ДанныеПечати.Ссылка Тогда
  10. KrivosheevEV
    Offline

    KrivosheevEV Новичок в 1С

    Регистрация:
    3 мар 2014
    Сообщения:
    35
    Симпатии:
    2
    Баллы:
    4
    Код:
    Если ТекДок <> ДанныеПечати.Ссылка Тогда
        // ...  
        ДанныеПечати            = Запрос.Выполнить().Выбрать();
    Потому что ДанныеПечати получает значение позже.
  11. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Действительно, проглядела. Условие должно быть в цикле
  12. TopicStarter Overlay
    andreya81
    Offline

    andreya81 Опытный в 1С

    Регистрация:
    27 ноя 2014
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Код:
    ДанныеПечати  = Запрос.Выполнить().Выбрать();
        Если ТекДок <> ДанныеПечати.Ссылка Тогда
    
    Так я понимаю? Все равно в итоге три строки в ТЧ = три страницы макета. Печалька млин((
  13. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    потому что вы в цикле макет получаете.... может вы все таки полистаете книжку?
  14. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Инструкции для дураков, русский во всём сам разберётся:D

    andreya81 - попытайтесь понять логику запроса и выборки из него данных, иначе вы так долго мучиться будете.
  15. KrivosheevEV
    Offline

    KrivosheevEV Новичок в 1С

    Регистрация:
    3 мар 2014
    Сообщения:
    35
    Симпатии:
    2
    Баллы:
    4
    Но сначала понять что такое условие и цикл.
  16. TopicStarter Overlay
    andreya81
    Offline

    andreya81 Опытный в 1С

    Регистрация:
    27 ноя 2014
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Последняя просьба посмотрите
    Код:
    Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
                   
        ТабличныйДокумент = Новый ТабличныйДокумент;
        ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_мфоВыдачаЗайма_ДоговорКратскосрочный";
       
        ТабличныйДокумент = Новый ТабличныйДокумент;
       
        ДанныеПечати            = Запрос.Выполнить().Выбрать();
       
        ПервыйДокумент          = Истина;
        Макет           = УправлениеПечатью.ПолучитьМакет("Документ.мфоВыдачаЗайма.ГрафикПлатежейСреднесрочный");
        Шапка = Макет.ПолучитьОбласть("Шапка");
        ГрафикПлатежейШапка = Макет.ПолучитьОбласть("ГрафикПлатежейШапка");
        ГрафикПлатежей = Макет.ПолучитьОбласть("ГрафикПлатежей");
        ГрафикПлатежейПодвал = Макет.ПолучитьОбласть("ГрафикПлатежейПодвал");
        Подвал = Макет.ПолучитьОбласть("Подвал");
       
        Если Не ПервыйДокумент Тогда
                ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
           
            ПервыйДокумент    = Ложь;
            НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
    
    
         Пока ДанныеПечати.Следующий() Цикл
            ТекДок = "";
            Если ТекДок <> ДанныеПечати.Ссылка Тогда
       
            //Шапка
                    
            Шапка.Параметры.НаселенныйПункт = ?(ЗначениеЗаполнено(ДанныеПечати.ПодразделениеГород),
                                                    СокрЛП(ДанныеПечати.ПодразделениеГород), "_______________");
            Шапка.Параметры.Контрагент = ДанныеПечати.Контрагент;
            Шапка.Параметры.Номер = ДанныеПечати.Номер;
            Шапка.Параметры.ФИОМенеджера = ДанныеПечати.ФИОМенеджера;
            Шапка.Параметры.ПодразделениеТелефон = ДанныеПечати.ПодразделениеТелефон;
            Шапка.Параметры.СуммаЗайма = Формат(ДанныеПечати.СуммаЗайма, "ЧЦ=17; ЧДЦ=0; ЧН=; ЧГ=3,0");
            Шапка.Параметры.ДатаВыдачи    = Формат(ДанныеПечати.ДатаВыдачи,"ДФ= 'дд ММММ гггг'");
            Шапка.Параметры.ДатаВыдачиДоговор = Формат(ДанныеПечати.ДатаВыдачи,"ДФ='дд ММММ гггг ""года""'");
            Шапка.Параметры.Ставка = Формат(ДанныеПечати.Ставка,"ЧЦ=15; ЧДЦ=2") + "%";
            Шапка.Параметры.СрокЗайма = ДанныеПечати.СрокЗайма;
            Шапка.Параметры.СтавкаГод = Формат(ДанныеПечати.ПСК,"ЧЦ=15; ЧДЦ=2") + "%";
            Шапка.Параметры.ПСК = Формат(ДанныеПечати.ПСК,"ЧЦ=15; ЧДЦ=3") + "%";
    
                   
            //График платежей
           
            ГрафикПлатежей.Параметры.НомерСтроки = ДанныеПечати.НомерСтроки;
            //Подвал
                   
            Подвал.Параметры.НаименованиеОрганизации = ДанныеПечати.Организация;
            Подвал.Параметры.ЮрАдрес = ДанныеПечати.ЮрАдресОрганизации;
            Подвал.Параметры.ФактАдрес = ДанныеПечати.ПодразделениеАдрес;
            Подвал.Параметры.ИННОрганизации = ДанныеПечати.Организация_ИНН;
            Подвал.Параметры.КППОрганизации = ДанныеПечати.Организация_КПП;
            Подвал.Параметры.РасчетныйСчет = ДанныеПечати.РасчетныйСчет;
            Подвал.Параметры.Банк = ДанныеПечати.Банк;
            Подвал.Параметры.КорСчет = ДанныеПечати.КорСчет;
            Подвал.Параметры.БИК = ДанныеПечати.БИК;
            Подвал.Параметры.Номер = ДанныеПечати.Номер;
            Подвал.Параметры.ПодразделениеТелефон = ДанныеПечати.ПодразделениеТелефон;
            Подвал.Параметры.ДатаВыдачиДоговор = Формат(ДанныеПечати.ДатаВыдачи,"ДФ='дд ММММ гггг ""года""'");   
           
            ТекДок = ДанныеПечати.Ссылка;
            КонецЕсли;
    
        КонецЦикла;
        ТабличныйДокумент.Вывести(Шапка);
        ТабличныйДокумент.Вывести(ГрафикПлатежейШапка);
        ТабличныйДокумент.Вывести(ГрафикПлатежей);
        ТабличныйДокумент.Вывести(ГрафикПлатежейПодвал);
        ТабличныйДокумент.Вывести(Подвал);
       
        ТабличныйДокумент.АвтоМасштаб = Истина;
    
        Если ПривилегированныйРежим() Тогда
            УстановитьПривилегированныйРежим(Ложь);
        КонецЕсли;
       
        Возврат ТабличныйДокумент;
    КонецФункции
    --- Объединение сообщений, 28 ноя 2014 ---
    Все замечательно но только в макета последняя запись из ТЧ. Последний раз прошу помочь честно)
  17. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    потому что вы выводите области в макет после цикла, потому только последние данные и попадают...
  18. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    andreya81, думайте.
    Если вы в начале цикла указываете ТекДок = "", то в условии "Если ТекДок <> ДанныеПечати.Ссылка Тогда" у вас когда-нибудь будет Истина?
    Заполнение шапки внутри условия "Если ТекДок <> ДанныеПечати.Ссылка Тогда" вполне логично, но если там же заполнять строки ТЧ, что у вас будет?
    Макет вы один только в начале создаёте - как у вас будет на каждый новый документ новый макет?
    Какой смысл заполнять параметры в цикле, а выводить их в макет после цикла?

    Ответьте себе на эти вопросы, поймите принцип работы программы. В цикле обходятся все строки результата, выйдя из цикла вам будет доступна только последняя строка из выборки.
  19. TopicStarter Overlay
    andreya81
    Offline

    andreya81 Опытный в 1С

    Регистрация:
    27 ноя 2014
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Кошмар какой-то честно. Если области выводить до цикла выходит пустой документ(((
  20. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    это не кошмар, просто вы бросились кодить, не понимая что за чем следует и как должно располагаться в тексте программы чтобы работало так как вам надо. Когда вы логику поймете - будете кодить без кошмаров.

    З.Ы. если я вас бидела - извините не хотела, но в третий раз прошу - полистайте книжечку, она быстро читается и многое прояснит в вашей голове. А так вы себе головную боль заработаете и кошмары сниться начнут. Поймите - нельзя с места в карьер - там может быть глубоко.
Статус темы:
Закрыта.

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