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

Внешняя печатная форма.

Автор ls600, 18 окт 2013, 10:22

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

ls600

Доброго времени суток. Ситуация вот в чем, создал ВПФ и при печати макет пустой, без заполнения данных. в коде ошибок нет. Подскажите в чем дело, заранее благодарю.




Функция Печать()Экспорт

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОтпускаОрганизации_Т6";
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;

// получаем данные для печати
ВыборкаДляШапки = СформироватьЗапросДляПечати("ПоРеквизитамДокумента").Выбрать();
ВыборкаРаботники = СформироватьЗапросДляПечати("ПоТабличнойЧастиДокумента").Выбрать();

// запоминаем области макета
Макет = ПолучитьМакет("Приказ");
ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка"); // Шапка документа
ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал"); // Подвал документа
ОбластьМакета = Макет.ПолучитьОбласть("Работник"); // строка работника

// выводим данные о руководителях организации
Если ВыборкаДляШапки.Следующий() Тогда
ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапки); // Шапка документа.
ОбластьМакетаШапка.Параметры.НазваниеОрганизации = СокрЛП(ВыборкаДляШапки.НазваниеОрганизации);
ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапки); // Для подвала.
НомерДокДляПечати = ОбщегоНазначения.ПолучитьНомерНаПечать(ЭтотОбъект, глСписокПрефиксовУзлов);
ОбластьМакетаШапка.Параметры.НомерДок = НомерДокДляПечати;
КонецЕсли;

// Начинаем формировать выходной документ
Пока ВыборкаРаботники.Следующий() Цикл

// Каждый приказ на отдельной странице.
Если ТабДокумент.ВысотаТаблицы > 0 Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

// Шапка документа.
Если СсылкаНаОбъект.РаботникиОрганизации.Количество() > 1 Тогда
ОбластьМакетаШапка.Параметры.НомерДок = НомерДокДляПечати + "/" + ВыборкаРаботники.НомерСтроки
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакетаШапка);

// Данные по работнику.
ОбластьМакета.Параметры.Заполнить(ВыборкаРаботники);
Если ЗначениеЗаполнено(ВыборкаРаботники.ТарифныйРазряд) Тогда
ОбластьМакета.Параметры.Должность = "" + ВыборкаРаботники.Должность + ", " + ВыборкаРаботники.ТарифныйРазряд;
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);

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

КонецЦикла;

// если не было ни одного работника - выводим пустой бланк
Если ТабДокумент.ВысотаТаблицы = 0 Тогда
ТабДокумент.Вывести(ОбластьМакетаШапка);
ТабДокумент.Вывести(ОбластьМакета);
ТабДокумент.Вывести(ОбластьМакетаПодвал);
КонецЕсли;

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

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

Функция СформироватьЗапросДляПечати(Режим)


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


// Установим параметры запроса
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
Запрос.УстановитьПараметр("Руководитель", Перечисления.ОтветственныеЛицаОрганизаций.Руководитель);
Запрос.УстановитьПараметр("ДатаДокумента", СсылкаНаОбъект.Дата);
Запрос.УстановитьПараметр("ПустаяДата", '00010101');


Если Режим = "ПоРеквизитамДокумента" Тогда


Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ОтпускаОрганизаций.Дата КАК ДатаДок,
| ОтпускаОрганизаций.Номер КАК НомерДок,
| ВЫРАЗИТЬ(ОтпускаОрганизаций.Организация.НаименованиеПолное КАК СТРОКА(250)) КАК НазваниеОрганизации,
| ОтпускаОрганизаций.Организация.КодПоОКПО КАК КодПоОКПО,
| ОтветственныеЛицаОрганизацийСрезПоследних.Должность.Представление КАК ДолжностьРуководителя,
| ЕСТЬNULL(ФИОФизЛицСрезПоследних.Фамилия + "" "" + ФИОФизЛицСрезПоследних.Имя + "" "" + ФИОФизЛицСрезПоследних.Отчество, ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо.Наименование) КАК ФИОРуководителя,
| ОтветственныеЛицаОрганизацийСрезПоследних.ОтветственноеЛицо
|ИЗ
| Документ.ОтпускаОрганизаций КАК ОтпускаОрганизаций
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(&ДатаДокумента, ОтветственноеЛицо = &Руководитель) КАК ОтветственныеЛицаОрганизацийСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаДокумента, ) КАК ФИОФизЛицСрезПоследних
| ПО ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо = ФИОФизЛицСрезПоследних.ФизЛицо
| ПО ОтпускаОрганизаций.Организация = ОтветственныеЛицаОрганизацийСрезПоследних.СтруктурнаяЕдиница
|
|ГДЕ
| ОтпускаОрганизаций.Ссылка = &ТекущийДокумент";


ИначеЕсли Режим = "ПоТабличнойЧастиДокумента" Тогда


Запрос.УстановитьПараметр("ГоловнаяОрганизация", ОбщегоНазначения.ГоловнаяОрганизация(СсылкаНаОбъект.Организация));
Запрос.УстановитьПараметр("Праздник", Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник);

Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(ФИОФизЛиц.Фамилия + "" "" + ФИОФизЛиц.Имя + "" "" + ФИОФизЛиц.Отчество, ОтпускаОрганизацииРаботники.ФизЛицо.Наименование) КАК Работник,
| ДанныеОРаботникахОрганизации.ПодразделениеОрганизацииНаименование КАК ПодразделениеРаботника,
| ДанныеОРаботникахОрганизации.ДолжностьНаименование КАК Должность,
| ДанныеОРаботникахОрганизации.ТарифныйРазрядНаименование КАК ТарифныйРазряд,
| ДанныеОРаботникахОрганизации.ТабельныйНомер,
| ОтпускаОрганизацииРаботники.НомерСтроки КАК НомерСтроки,
| ОтпускаОрганизацииРаботники.ПричинаОтсутствия,
| ВЫРАЗИТЬ(ОтпускаОрганизацииРаботники.Основание КАК СТРОКА(250)) КАК Основание,
| ОтпускаОрганизацииРаботники.ПричинаОтсутствия КАК ВидДопОтпуска,
| ОтпускаОрганизацииРаботники.ДатаНачала,
| ОтпускаОрганизацииРаботники.ДатаОкончания,
| РАЗНОСТЬДАТ(ОтпускаОрганизацииРаботники.ДатаНачала, ОтпускаОрганизацииРаботники.ДатаОкончания, ДЕНЬ) + 1 КАК ПродолжительностьДоп
|ИЗ
| Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацииРаботники
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
| &ДатаДокумента,
| ФизЛицо В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОтпускаОрганизацииРаботники.ФизЛицо
| ИЗ
| Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацииРаботники
| ГДЕ
| ОтпускаОрганизацииРаботники.Ссылка = &ТекущийДокумент)) КАК ФИОФизЛиц
| ПО ОтпускаОрганизацииРаботники.ФизЛицо = ФИОФизЛиц.ФизЛицо
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| СписокДат.Физлицо КАК Физлицо,
| СписокДат.Приказ КАК Приказ,
| РаботникиОрганизации.ПодразделениеОрганизации.Наименование КАК ПодразделениеОрганизацииНаименование,
| РаботникиОрганизации.Должность.Наименование КАК ДолжностьНаименование,
| РаботникиОрганизации.ТарифныйРазряд.Наименование КАК ТарифныйРазрядНаименование,
| РаботникиОрганизации.ТабельныйНомер КАК ТабельныйНомер,
| СписокДат.НомерСтроки КАК НомерСтроки
| ИЗ
| (ВЫБРАТЬ
| РаботникиВнутри.Физлицо КАК Физлицо,
| МАКСИМУМ(РаботникиВнутри.Период) КАК ДатаПоследнегоИзменения,
| ОтпускаОрганизаций.Приказ КАК Приказ,
| ОтпускаОрганизаций.НомерСтроки КАК НомерСтроки
| ИЗ
| РегистрСведений.РаботникиОрганизаций КАК РаботникиВнутри
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизаций
| ПО РаботникиВнутри.Период < ОтпускаОрганизаций.ДатаНачала
| И РаботникиВнутри.Физлицо = ОтпускаОрганизаций.ФизЛицо
| И (РаботникиВнутри.Организация = &ГоловнаяОрганизация)
| И РаботникиВнутри.Приказ = ОтпускаОрганизаций.Приказ
| ГДЕ
| ОтпускаОрганизаций.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ОтпускаОрганизаций.НомерСтроки,
| РаботникиВнутри.Физлицо,
| ОтпускаОрганизаций.Приказ) КАК СписокДат
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизации
| ПО СписокДат.Физлицо = РаботникиОрганизации.Физлицо
| И (РаботникиОрганизации.Организация = &ГоловнаяОрганизация)
| И СписокДат.Приказ = РаботникиОрганизации.Приказ
| И СписокДат.ДатаПоследнегоИзменения = РаботникиОрганизации.Период) КАК ДанныеОРаботникахОрганизации
| ПО ОтпускаОрганизацииРаботники.НомерСтроки = ДанныеОРаботникахОрганизации.НомерСтроки
|ГДЕ
| ОтпускаОрганизацииРаботники.Ссылка = &ТекущийДокумент";


Иначе
Возврат Неопределено
КонецЕсли;


Возврат Запрос.Выполнить();


КонецФункции

MuI_I_Ika

Может в макете параметры неправильно заданы?

ls600

параметры заданы, вот сам отчет

Besart

не вмжу где вы в Функция Печать()Экспорт
получаете
Функция СформироватьЗапросДляПечати(Режим)

andr2510

А если сделать трассировку, то в выборке есть что нить?

Теги:

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

Рейтинг@Mail.ru

Поиск