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

Как вывести результаты запроса в макет печатной формы документа?

Автор sapravka, 19 янв 2013, 14:33

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

sapravka

 Здравствуйте!
Собственно все по порядку:
Есть документ (ОтчетПроизводстваЗаСмену, бух 2.0), в него я добавил дополнительную печатную форму – по кнопке Печать она выходит на печать, но вот правда на ней не отображается данные из запроса, который написан в модуле документа:

Функция ПечатьКарта()



            Запрос = Новый Запрос;

            Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);

            Запрос.Текст =

            "ВЫБРАТЬ

            |           ОтчетПроизводстваЗаСмену.Номер КАК НомерДокумента,

            |           ОтчетПроизводстваЗаСмену.Дата КАК ДатаДокумента,

            |           ОтчетПроизводстваЗаСмену.Склад КАК СкладДокумента

            |ИЗ

            |           Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену";

            ЗапросШапка = Запрос.Выполнить().Выбрать();





            Запрос = Новый Запрос;

            Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);

            Запрос.Текст =

            "ВЫБРАТЬ

            |           ОтчетПроизводстваЗаСменуПродукция.Количество,

            |            ОтчетПроизводстваЗаСменуПродукция.Номенклатура.ОсновнаяСпецификацияНоменклатуры.Владелец.Ссылка,

            |           СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура,

            |           СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК КоличествоСостав,

            |           ОтчетПроизводстваЗаСменуПродукция.Количество * СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК КоличествоСоставаПоНоменклатуре

            |ИЗ

            |           Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция

            |                       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие

            |                       ПО ОтчетПроизводстваЗаСменуПродукция.Номенклатура = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка.Владелец";



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

            Макет = ПолучитьМакет("Карта");

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

            ШапкаДокумента   = Макет.ПолучитьОбласть("Шапка");

            ЗаголовокТаблицы = Макет.ПолучитьОбласть("Строка");

            ПодвалДокумента  = Макет.ПолучитьОбласть("Подвал");



            ТабДокумент = Новый ТабличныйДокумент;



            // Зададим параметры макета по умолчанию.

            ТабДокумент.ПолеСверху              = 10;

            ТабДокумент.ПолеСлева               = 0;

            ТабДокумент.ПолеСнизу               = 0;

            ТабДокумент.ПолеСправа              = 0;

            ТабДокумент.РазмерКолонтитулаСверху = 10;



            // Загрузим настройки пользователя.

            ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Карта";



            Область = Макет.ПолучитьОбласть("Шапка");

            ТабДокумент.Вывести(Область);



            Область = Макет.ПолучитьОбласть("Строка");

            ТабДокумент.Вывести(Область);



            Область = Макет.ПолучитьОбласть("Подвал");

            ТабДокумент.Вывести(Область);



            Возврат ТабДокумент;

КонецФункции // ПечатьКарта()

Подскажите, как поступить – в макете я добавил параметры и прописал там необходимые области, например:

В шапке написал следующие параметры:
НомерДокумента,
ДатаДокумента,
СкладДокумента

А при печати все равно выходит пустое поле...
Подскажите, пожалуйста, что еще необходимо прописать в модуле, что бы печатной форме выводились данные поля?
И насчет области строка – тут как я понимаю необходимо циклом выбрать все строки – если я правильно догадываюсь – дайте, пожалуйста пример данного цикла...
Заранее благодарен...


sertak

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

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

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

sapravka

Цитата: sertak от 19 янв 2013, 15:08
Простой дружеский совет: полезно ковыряться в типовых конфигах.
А вот простейший пример вывода в табличный документ:

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

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

Спасибо!
Сейчас попробую!
А вот еще вопрос: в цикле можно тогда указать необходимо количество параметров - у меня их несколько?
И еще если параметр один - (например ДатаДокумента) то цикл можно не использовать?

sertak

Цикл необходим для перебора СТРОК выборки, к числу параметров макета (которым соответствуют КОЛОНКИ выборки) отношения не имеет, т.е. можно задавать любое число параметров.

Пока Выборка.Следующий() Цикл
    ОбластьСтрока.Параметры.МойПараметрВМакете1 = Выборка.Колонка1;
    ОбластьСтрока.Параметры.МойПараметрВМакете2 = Выборка.Колонка2;
    ОбластьСтрока.Параметры.МойПараметрВМакете3 = Выборка.Колонка3;
    ТабДок.Вывести(ОбластьСтрока);   
КонецЦикла;   

Теги:

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

Рейтинг@Mail.ru

Поиск