Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 июн 2021, 20:37

Добавление в макет подчиненногоэлемента табличной части через запрос

Автор Provodnik, 14 мар 2017, 20:01

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

Provodnik

Здравствуйте!
Имеется самописная конфа.
Не могу вывести в печатную форму подчиненный элемент табличной части. (Инвентарный номер)
В таблице в форме получилось добавить этот элемент в таблицу, а вывести в макет не получается (вложения)
На данный момент имеется такой запрос:
Процедура ПечатьПриложений(ТабДок, Ссылка) Экспорт
    //{{_КОНСТРУКТОР_ПЕЧАТИ(ПечатьПриложений)
    Макет = Документы.ДоговорОтветствХран.ПолучитьМакет("ПечатьПриложений");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   ЦЗН.ДиректорЦЗНсокр,
    |   ДоговорОтветствХран.Дата,
    |   ДоговорОтветствХран.ДоговорНом,
    |   ДоговорОтветствХран.ЦЗНполн,
    |   ДоговорОтветствХран.ИнвСписок.(
    |       НомерСтроки,
    |       НаименованиеТех.ИнвНом, //ВОТ ТУТ ПРОБЛЕМА, вот это надо вывести
    |       НаименованиеТех
    |   ),
    |   ДоговорОтветствХран.ИнвСписокБН.(
    |       НомерСтроки,
    |       НаименованиеТехБН,
    |       Количество
    |   )
    |ИЗ
    |   Справочник.ЦЗН КАК ЦЗН,
    |   Документ.ДоговорОтветствХран КАК ДоговорОтветствХран
    |ГДЕ
    |   ДоговорОтветствХран.Ссылка В (&Ссылка)";
    Запрос.Параметры.Вставить("Ссылка", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьИнвСписокШапка = Макет.ПолучитьОбласть("ИнвСписокШапка");
    ОбластьИнвСписок = Макет.ПолучитьОбласть("ИнвСписок");
    ОбластьИнвСписокБНШапка = Макет.ПолучитьОбласть("ИнвСписокБНШапка");
    ОбластьИнвСписокБН = Макет.ПолучитьОбласть("ИнвСписокБН");
    Подвал = Макет.ПолучитьОбласть("Подвал");
    Подвал.Параметры.ДиректорФскр = Константы.РуководительФсокр.Получить();
    //Поля страницы
    ТабДок.Автомасштаб=истина;
    ТабДок.ПолеСлева=30;
    ТабДок.ПолеСправа=15;
    ТабДок.ПолеСверху=20;
    ТабДок.ПолеСнизу=20;
    ТабДок.Очистить();

    ВставлятьРазделительСтраниц = Ложь;
    Пока Выборка.Следующий() Цикл
        Если ВставлятьРазделительСтраниц Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;

        //ТабДок.Вывести(ОбластьЗаголовок);
        //первая таблица
        НомерПП=1;
        Шапка.Параметры.НомерПП=НомерПП;
        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());
       
        ТабДок.Вывести(ОбластьИнвСписокШапка);
        ВыборкаИнвСписок = Выборка.ИнвСписок.Выбрать();
        Пока ВыборкаИнвСписок.Следующий() Цикл
            ОбластьИнвСписок.Параметры.Заполнить(ВыборкаИнвСписок);
            ТабДок.Вывести(ОбластьИнвСписок, ВыборкаИнвСписок.Уровень());
        КонецЦикла;
       
        Подвал.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Подвал);

        //вторая таблица
       
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        НомерПП=2;
        Шапка.Параметры.НомерПП=НомерПП;
        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());
       
       
        ТабДок.Вывести(ОбластьИнвСписокБНШапка);
        ВыборкаИнвСписокБН = Выборка.ИнвСписокБН.Выбрать();
        Пока ВыборкаИнвСписокБН.Следующий() Цикл
            ОбластьИнвСписокБН.Параметры.Заполнить(ВыборкаИнвСписокБН);
            ТабДок.Вывести(ОбластьИнвСписокБН, ВыборкаИнвСписокБН.Уровень());
        КонецЦикла;
       
        Подвал.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Подвал);
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    //}}
КонецПроцедуры


Norfolk

Цитата: Provodnik от 14 мар 2017, 20:01
Здравствуйте!
Имеется самописная конфа.
Не могу вывести в печатную форму подчиненный элемент табличной части. (Инвентарный номер)
В таблице в форме получилось добавить этот элемент в таблицу, а вывести в макет не получается (вложения)
На данный момент имеется такой запрос:
Процедура ПечатьПриложений(ТабДок, Ссылка) Экспорт
    //{{_КОНСТРУКТОР_ПЕЧАТИ(ПечатьПриложений)
    Макет = Документы.ДоговорОтветствХран.ПолучитьМакет("ПечатьПриложений");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   ЦЗН.ДиректорЦЗНсокр,
    |   ДоговорОтветствХран.Дата,
    |   ДоговорОтветствХран.ДоговорНом,
    |   ДоговорОтветствХран.ЦЗНполн,
    |   ДоговорОтветствХран.ИнвСписок.(
    |       НомерСтроки,
    |       НаименованиеТех.ИнвНом, //ВОТ ТУТ ПРОБЛЕМА, вот это надо вывести
    |       НаименованиеТех
    |   ),
    |   ДоговорОтветствХран.ИнвСписокБН.(
    |       НомерСтроки,
    |       НаименованиеТехБН,
    |       Количество
    |   )
    |ИЗ
    |   Справочник.ЦЗН КАК ЦЗН,
    |   Документ.ДоговорОтветствХран КАК ДоговорОтветствХран
    |ГДЕ
    |   ДоговорОтветствХран.Ссылка В (&Ссылка)";
    Запрос.Параметры.Вставить("Ссылка", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьИнвСписокШапка = Макет.ПолучитьОбласть("ИнвСписокШапка");
    ОбластьИнвСписок = Макет.ПолучитьОбласть("ИнвСписок");
    ОбластьИнвСписокБНШапка = Макет.ПолучитьОбласть("ИнвСписокБНШапка");
    ОбластьИнвСписокБН = Макет.ПолучитьОбласть("ИнвСписокБН");
    Подвал = Макет.ПолучитьОбласть("Подвал");
    Подвал.Параметры.ДиректорФскр = Константы.РуководительФсокр.Получить();
    //Поля страницы
    ТабДок.Автомасштаб=истина;
    ТабДок.ПолеСлева=30;
    ТабДок.ПолеСправа=15;
    ТабДок.ПолеСверху=20;
    ТабДок.ПолеСнизу=20;
    ТабДок.Очистить();

    ВставлятьРазделительСтраниц = Ложь;
    Пока Выборка.Следующий() Цикл
        Если ВставлятьРазделительСтраниц Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;

        //ТабДок.Вывести(ОбластьЗаголовок);
        //первая таблица
        НомерПП=1;
        Шапка.Параметры.НомерПП=НомерПП;
        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());
       
        ТабДок.Вывести(ОбластьИнвСписокШапка);
        ВыборкаИнвСписок = Выборка.ИнвСписок.Выбрать();
        Пока ВыборкаИнвСписок.Следующий() Цикл
            ОбластьИнвСписок.Параметры.Заполнить(ВыборкаИнвСписок);
            ТабДок.Вывести(ОбластьИнвСписок, ВыборкаИнвСписок.Уровень());
        КонецЦикла;
       
        Подвал.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Подвал);

        //вторая таблица
       
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        НомерПП=2;
        Шапка.Параметры.НомерПП=НомерПП;
        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());
       
       
        ТабДок.Вывести(ОбластьИнвСписокБНШапка);
        ВыборкаИнвСписокБН = Выборка.ИнвСписокБН.Выбрать();
        Пока ВыборкаИнвСписокБН.Следующий() Цикл
            ОбластьИнвСписокБН.Параметры.Заполнить(ВыборкаИнвСписокБН);
            ТабДок.Вывести(ОбластьИнвСписокБН, ВыборкаИнвСписокБН.Уровень());
        КонецЦикла;
       
        Подвал.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Подвал);
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    //}}
КонецПроцедуры

Можете пояснить кусок кода?
ТабДок.Вывести(ОбластьИнвСписок, ВыборкаИнвСписок.Уровень());

Provodnik

Цитата: Norfolk от 15 мар 2017, 06:12
Цитата: Provodnik от 14 мар 2017, 20:01
Здравствуйте!
Имеется самописная конфа.
Не могу вывести в печатную форму подчиненный элемент табличной части. (Инвентарный номер)
В таблице в форме получилось добавить этот элемент в таблицу, а вывести в макет не получается (вложения)
На данный момент имеется такой запрос:
Процедура ПечатьПриложений(ТабДок, Ссылка) Экспорт
    //{{_КОНСТРУКТОР_ПЕЧАТИ(ПечатьПриложений)
    Макет = Документы.ДоговорОтветствХран.ПолучитьМакет("ПечатьПриложений");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   ЦЗН.ДиректорЦЗНсокр,
    |   ДоговорОтветствХран.Дата,
    |   ДоговорОтветствХран.ДоговорНом,
    |   ДоговорОтветствХран.ЦЗНполн,
    |   ДоговорОтветствХран.ИнвСписок.(
    |       НомерСтроки,
    |       НаименованиеТех.ИнвНом, //ВОТ ТУТ ПРОБЛЕМА, вот это надо вывести
    |       НаименованиеТех
    |   ),
    |   ДоговорОтветствХран.ИнвСписокБН.(
    |       НомерСтроки,
    |       НаименованиеТехБН,
    |       Количество
    |   )
    |ИЗ
    |   Справочник.ЦЗН КАК ЦЗН,
    |   Документ.ДоговорОтветствХран КАК ДоговорОтветствХран
    |ГДЕ
    |   ДоговорОтветствХран.Ссылка В (&Ссылка)";
    Запрос.Параметры.Вставить("Ссылка", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьИнвСписокШапка = Макет.ПолучитьОбласть("ИнвСписокШапка");
    ОбластьИнвСписок = Макет.ПолучитьОбласть("ИнвСписок");
    ОбластьИнвСписокБНШапка = Макет.ПолучитьОбласть("ИнвСписокБНШапка");
    ОбластьИнвСписокБН = Макет.ПолучитьОбласть("ИнвСписокБН");
    Подвал = Макет.ПолучитьОбласть("Подвал");
    Подвал.Параметры.ДиректорФскр = Константы.РуководительФсокр.Получить();
    //Поля страницы
    ТабДок.Автомасштаб=истина;
    ТабДок.ПолеСлева=30;
    ТабДок.ПолеСправа=15;
    ТабДок.ПолеСверху=20;
    ТабДок.ПолеСнизу=20;
    ТабДок.Очистить();

    ВставлятьРазделительСтраниц = Ложь;
    Пока Выборка.Следующий() Цикл
        Если ВставлятьРазделительСтраниц Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;

        //ТабДок.Вывести(ОбластьЗаголовок);
        //первая таблица
        НомерПП=1;
        Шапка.Параметры.НомерПП=НомерПП;
        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());
       
        ТабДок.Вывести(ОбластьИнвСписокШапка);
        ВыборкаИнвСписок = Выборка.ИнвСписок.Выбрать();
        Пока ВыборкаИнвСписок.Следующий() Цикл
            ОбластьИнвСписок.Параметры.Заполнить(ВыборкаИнвСписок);
            ТабДок.Вывести(ОбластьИнвСписок, ВыборкаИнвСписок.Уровень());
        КонецЦикла;
       
        Подвал.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Подвал);

        //вторая таблица
       
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        НомерПП=2;
        Шапка.Параметры.НомерПП=НомерПП;
        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());
       
       
        ТабДок.Вывести(ОбластьИнвСписокБНШапка);
        ВыборкаИнвСписокБН = Выборка.ИнвСписокБН.Выбрать();
        Пока ВыборкаИнвСписокБН.Следующий() Цикл
            ОбластьИнвСписокБН.Параметры.Заполнить(ВыборкаИнвСписокБН);
            ТабДок.Вывести(ОбластьИнвСписокБН, ВыборкаИнвСписокБН.Уровень());
        КонецЦикла;
       
        Подвал.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Подвал);
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    //}}
КонецПроцедуры

Можете пояснить кусок кода?
ТабДок.Вывести(ОбластьИнвСписок, ВыборкаИнвСписок.Уровень());

К сожалению не очень. Ибо код генерировался через конструктор запросов.

Kironten

А если так, не прокатывает?
    |       НаименованиеТех.ИнвНом КАК ИнвНом, //ВОТ ТУТ ПРОБЛЕМА, вот это надо вывести

Provodnik

Цитата: Kironten от 15 мар 2017, 10:21
А если так, не прокатывает?
    |       НаименованиеТех.ИнвНом КАК ИнвНом, //ВОТ ТУТ ПРОБЛЕМА, вот это надо вывести
:zebzdr:Спасибо большое. именно то что нужно. Я пробовал подобное сделать, но видимо где-то косячил.

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск