![]() |
|
Создание внешней печатной формы в ЗУП. | ☑ | ||
---|---|---|---|---|
0
Босечка
30.11.15
✎
17:47
|
Сделала внешнюю печ. форму для командировочных, не заполняются реквизиты шапки. Их заполняю при помощи функции. Можно ли вызывать функции во внешней печ. форме?
Перем мДлинаСуток; Функция СформироватьЗапросДляПечати(Режим) Запрос = Новый Запрос; // Установим параметры запроса Запрос.УстановитьПараметр("ДокументСсылка", СсылкаНаОбъект.Ссылка); Запрос.УстановитьПараметр("ДатаДокумента", СсылкаНаОбъект.Дата); Если Режим = "ПоРеквизитамДокумента" Тогда Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("СтруктурнаяЕдиница",СсылкаНаОбъект.Организация); Запрос.Текст = ФормированиеПечатныхФормЗК.ПолучитьТекстЗапросаПоОтветственнымЛицам( "ДатаДокумента", "ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель) |И СтруктурнаяЕдиница = &СтруктурнаяЕдиница"); Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | КомандировкиОрганизаций.Дата КАК ДатаДок, | КомандировкиОрганизаций.Номер КАК НомерДок, | КомандировкиОрганизаций.Организация.НаименованиеПолное КАК НазваниеОрганизации, | КомандировкиОрганизаций.Организация.КодПоОКПО КАК КодПоОКПО, | КомандировкиОрганизаций.СтранаНазначения, | КомандировкиОрганизаций.ОрганизацияНазначения, | КомандировкиОрганизаций.ОснованиеКомандировки, | ОтветственныеЛицаОрганизаций.Должность КАК ДолжностьРуководителя, | ОтветственныеЛицаОрганизаций.НаименованиеОтветственногоЛица КАК ФИОРуководителя |ИЗ | Документ.КомандировкиОрганизаций КАК КомандировкиОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОбОтветственномЛице КАК ОтветственныеЛицаОрганизаций | ПО (ИСТИНА) |ГДЕ | КомандировкиОрганизаций.Ссылка = &ДокументСсылка"; ИначеЕсли Режим = "ПоТабличнойЧастиДокумента" Тогда Запрос.УстановитьПараметр("Организация", СсылкаНаОбъект.Организация); Запрос.УстановитьПараметр("ГоловнаяОрганизация", ОбщегоНазначенияЗК.ГоловнаяОрганизация(СсылкаНаОбъект.Организация)); Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | КомандировкиОрганизацииРаботники.НомерСтроки, | КомандировкиОрганизацииРаботники.Сотрудник.Физлицо КАК Физлицо, | КомандировкиОрганизацииРаботники.Сотрудник КАК Сотрудник, | КомандировкиОрганизацииРаботники.ФизЛицо.Пол КАК ФизЛицоПол, | КомандировкиОрганизацииРаботники.ДатаНачала, | КомандировкиОрганизацииРаботники.ДатаОкончания, | КомандировкиОрганизацииРаботники.ОсвобождатьСтавку, | КомандировкиОрганизацииРаботники.Цель, | КомандировкиОрганизацииРаботники.ИсточникФинансирования, | КомандировкиОрганизацииРаботники.НапомнитьПоЗавершении, | КомандировкиОрганизацииРаботники.ВремяНахожденияВПути, | КомандировкиОрганизацииРаботники.Сотрудник.Код КАК ТабельныйНомер |ПОМЕСТИТЬ ВТСотрудники |ИЗ | Документ.КомандировкиОрганизаций.РаботникиОрганизации КАК КомандировкиОрганизацииРаботники |ГДЕ | КомандировкиОрганизацииРаботники.Ссылка = &ДокументСсылка | И (НЕ КомандировкиОрганизацииРаботники.Сторно) | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(ФИОФизЛиц.Фамилия + "" "" + ФИОФизЛиц.Имя + "" "" + ФИОФизЛиц.Отчество, КомандировкиОрганизацииРаботники.Сотрудник.Наименование) КАК Работник, | ЕСТЬNULL(ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид.Наименование + "", серия "" + ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия + "", №"" + ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер, """") КАК РеквизитыПаспорта, | КомандировкиОрганизацииРаботники.НомерСтроки КАК НомерСтроки, | КомандировкиОрганизацииРаботники.ФизЛицоПол, | КомандировкиОрганизацииРаботники.ДатаНачала, | КомандировкиОрганизацииРаботники.ДатаОкончания, | КомандировкиОрганизацииРаботники.ВремяНахожденияВПути, | КомандировкиОрганизацииРаботники.Цель, | ВЫБОР | КОГДА Работники.ПериодЗавершения <= КомандировкиОрганизацииРаботники.ДатаНачала | И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА Работники.ПодразделениеОрганизацииЗавершения | ИНАЧЕ Работники.ПодразделениеОрганизации | КОНЕЦ КАК ПодразделениеРаботника, | ВЫБОР | КОГДА Работники.ПериодЗавершения <= КомандировкиОрганизацииРаботники.ДатаНачала | И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА Работники.ДолжностьЗавершения | ИНАЧЕ Работники.Должность | КОНЕЦ КАК Должность, | КомандировкиОрганизацииРаботники.ИсточникФинансирования, | КомандировкиОрганизацииРаботники.ТабельныйНомер |ИЗ | ВТСотрудники КАК КомандировкиОрганизацииРаботники | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СписокДат.Сотрудник КАК Сотрудник, | Работники.ПодразделениеОрганизации.Наименование КАК ПодразделениеОрганизации, | Работники.Должность.Наименование КАК Должность, | Работники.ПодразделениеОрганизацииЗавершения.Наименование КАК ПодразделениеОрганизацииЗавершения, | Работники.ДолжностьЗавершения.Наименование КАК ДолжностьЗавершения, | Работники.ПериодЗавершения КАК ПериодЗавершения | ИЗ | (ВЫБРАТЬ | РаботникиВнутри.Сотрудник КАК Сотрудник, | МАКСИМУМ(РаботникиВнутри.Период) КАК ДатаПоследнегоИзменения | ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиВнутри | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСотрудники КАК КомандировкиОрганизаций | ПО РаботникиВнутри.Период <= КомандировкиОрганизаций.ДатаНачала | И РаботникиВнутри.Сотрудник = КомандировкиОрганизаций.Сотрудник | | СГРУППИРОВАТЬ ПО | РаботникиВнутри.Сотрудник) КАК СписокДат | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники | ПО СписокДат.ДатаПоследнегоИзменения = Работники.Период | И СписокДат.Сотрудник = Работники.Сотрудник) КАК Работники | ПО КомандировкиОрганизацииРаботники.Сотрудник = Работники.Сотрудник | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних( | &ДатаДокумента, | ФизЛицо В | (ВЫБРАТЬ | Сотрудники.Физлицо | ИЗ | ВТСотрудники КАК Сотрудники)) КАК ФИОФизЛиц | ПО КомандировкиОрганизацииРаботники.Сотрудник.Физлицо = ФИОФизЛиц.ФизЛицо | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних( | &ДатаДокумента, | ФизЛицо В | (ВЫБРАТЬ | Сотрудники.Физлицо | ИЗ | ВТСотрудники КАК Сотрудники)) КАК ПаспортныеДанныеФизЛицСрезПоследних | ПО КомандировкиОрганизацииРаботники.Сотрудник.Физлицо = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Иначе Возврат Неопределено; КонецЕсли; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросДляПечати() Функция Печать() Экспорт ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КомандировкиОрганизации_Т9"; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; // получаем данные для печати ВыборкаДляШапки = СформироватьЗапросДляПечати("ПоРеквизитамДокумента").Выбрать(); // Т= СформироватьЗапросДляПечати("ПоРеквизитамДокумента").Выгрузить(); // Т.ВыбратьСтроку(); ВыборкаРаботники = СформироватьЗапросДляПечати("ПоТабличнойЧастиДокумента").Выбрать(); // запоминаем области макета Макет = ПолучитьМакет("Макет"); ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка"); // Шапка документа ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал"); // Подвал документа ОбластьМакета = Макет.ПолучитьОбласть("Работник"); // строка работника // выводим данные о руководителях организации Если ВыборкаДляШапки.Следующий() Тогда ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапки); // Шапка документа. ОбластьМакетаШапка.Параметры.НазваниеОрганизации = СокрЛП(ОбластьМакетаШапка.Параметры.НазваниеОрганизации); ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапки); // Для подвала. ОбластьМакета.Параметры.Заполнить(ВыборкаДляШапки); // область работника ВыводитьДатуОзнакомленияСПриказом = ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной("глУчетнаяПолитикаПоПерсоналуОрганизации"), СсылкаНаОбъект.Организация, "ПроставлятьАвтоматическиДатуОзнакомленияВКадровыхПриказах"); Если Не ВыводитьДатуОзнакомленияСПриказом Тогда ОбластьМакетаПодвал.Параметры.ДатаДок = ФормированиеПечатныхФормЗК.ПустаяДатаВПечатнойФорме(); КонецЕсли; НомерДокДляПечати = ВыборкаДляШапки.НомерДок; КонецЕсли; НомерФормы = 0; ПечататьПостфикс = ВыборкаРаботники.Количество() > 1; // Начинаем формировать выходной документ Пока ВыборкаРаботники.Следующий() Цикл // Каждый приказ на отдельной странице. Если ТабДокумент.ВысотаТаблицы > 0 Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; // Шапка документа. Если ПечататьПостфикс Тогда НомерФормы = НомерФормы + 1; ОбластьМакетаШапка.Параметры.НомерДок = НомерДокДляПечати + "/" + НомерФормы КонецЕсли; ТабДокумент.Вывести(ОбластьМакетаШапка); // Данные по работнику. ОбластьМакета.Параметры.Заполнить(ВыборкаРаботники); РезультатСклонения = ""; Если УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной("глКомпонентаСклоненияФИО"), ВыборкаРаботники.Работник, 4,ВыборкаРаботники.ФизЛицоПол, РезультатСклонения) Тогда ОбластьМакета.Параметры.Работник = РезультатСклонения КонецЕсли; //уберем из табельного номера префикс ОбластьМакета.Параметры.ТабельныйНомер = ВыборкаРаботники.ТабельныйНомер; ОбластьМакета.Параметры.Продолжительность = ?(ЗначениеЗаполнено(ВыборкаРаботники.ДатаОкончания),Цел((ВыборкаРаботники.ДатаОкончания - ВыборкаРаботники.ДатаНачала + 1) / мДлинаСуток) + 1,""); ТабДокумент.Вывести(ОбластьМакета); Если Не ВыводитьДатуОзнакомленияСПриказом Тогда ОбластьМакетаПодвал.Параметры.ДатаДок = ФормированиеПечатныхФормЗК.ПустаяДатаВПечатнойФорме(); КонецЕсли; // Подвал документа. ТабДокумент.Вывести(ОбластьМакетаПодвал); КонецЦикла; // если не было ни одного работника - выводим пустой бланк Если ТабДокумент.ВысотаТаблицы = 0 Тогда ТабДокумент.Вывести(ОбластьМакетаШапка); ТабДокумент.Вывести(ОбластьМакета); ТабДокумент.Вывести(ОбластьМакетаПодвал); КонецЕсли; Возврат ТабДокумент; Конецфункции мДлинаСуток = 86400; выходит пустой документ. |
|||
1
Горогуля
30.11.15
✎
17:52
|
да
|
|||
2
Босечка
30.11.15
✎
17:54
|
Что да????
|
|||
3
Горогуля
30.11.15
✎
17:55
|
Можно вызывать функции во внешней печ. форме
|
|||
4
Casey1984
30.11.15
✎
17:58
|
можно
|
|||
5
Босечка
30.11.15
✎
17:58
|
А почему же у меня не заполняется шапка?
|
|||
6
Горогуля
30.11.15
✎
17:59
|
предлагаю сократить портянку и спросить конкретнее. после применения отладчика, разумеется
|
|||
7
piter3
30.11.15
✎
18:00
|
ДокументСсылка не заполнено.телепатов ищем?
|
|||
8
Босечка
30.11.15
✎
18:08
|
ДокументСсылка заполняется
Запрос.УстановитьПараметр("ДокументСсылка", СсылкаНаОбъект.Ссылка); |
|||
9
Босечка
30.11.15
✎
18:10
|
Но почему-то оно пустой. Я без функции попробовала, не заполняется тоже. СсылкаНаОбъект - реквизит обработки типа документ.КомандировкиОрганизаций.
|
|||
10
Casey1984
30.11.15
✎
18:15
|
(9) а запрос то выдает че?
|
|||
11
Горогуля
30.11.15
✎
18:15
|
(9) давай запрос что ли
|
|||
12
runoff_runoff
30.11.15
✎
18:16
|
надо СсылкаНаОбъект.Ссылка.Ссылка.Ссылка..
|
|||
13
Босечка
30.11.15
✎
18:17
|
Запрос.Текст =
"ВЫБРАТЬ | КомандировкиОрганизаций.Дата КАК ДатаДок, | КомандировкиОрганизаций.Номер КАК НомерДок, | КомандировкиОрганизаций.Организация.НаименованиеПолное КАК НазваниеОрганизации, | КомандировкиОрганизаций.Организация.КодПоОКПО КАК КодПоОКПО, | КомандировкиОрганизаций.СтранаНазначения, | КомандировкиОрганизаций.ОрганизацияНазначения, | КомандировкиОрганизаций.ОснованиеКомандировки, | ОтветственныеЛицаОрганизаций.Должность КАК ДолжностьРуководителя, | ОтветственныеЛицаОрганизаций.НаименованиеОтветственногоЛица КАК ФИОРуководителя |ИЗ | Документ.КомандировкиОрганизаций КАК КомандировкиОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОбОтветственномЛице КАК ОтветственныеЛицаОрганизаций | ПО (ИСТИНА) |ГДЕ | КомандировкиОрганизаций.Ссылка = &ДокументСсылка"; |
|||
14
Горогуля
30.11.15
✎
18:18
|
(13) ну допустим, данные тут вынимаются. дальше
|
|||
15
Casey1984
30.11.15
✎
18:19
|
(14) ну допустим, данные тут вынимаются - это еще не доказано)
|
|||
16
Горогуля
30.11.15
✎
18:20
|
(15) мы исходим из того, что вынимаются ;)
|
|||
17
Горогуля
30.11.15
✎
18:24
|
>ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапки);
от тут косяк |
|||
18
Горогуля
30.11.15
✎
18:24
|
(17) если исходить из предположения, что ТабДокумент.Вывести(ОбластьМакетаШапка) где-то есть
|
|||
19
Мыш
30.11.15
✎
18:25
|
(0) Выдрано с ИТС:
Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.1.73"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма(); ПараметрыРегистрации.Версия = "1.0.0.0"; ПараметрыРегистрации.Информация = "Информация о печатной форме"; // Определение объектов, к которым подключается эта обработка. ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг"); ПараметрыРегистрации.Назначение.Добавить("Документ.ПоступлениеТоваровУслуг"); // Добавление команды печати "Печатная форма 1". НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = НСтр("ru = 'Печатная форма 1 (внешняя печатная форма)'"); НоваяКоманда.Идентификатор = "ПечатнаяФорма1"; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); НоваяКоманда.Модификатор = "ПечатьMXL"; // Добавление команды печати "Печатная форма 2". НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = НСтр("ru = 'Печатная форма 2 (внешняя печатная форма)'"); НоваяКоманда.Идентификатор = "ПечатнаяФорма2"; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); НоваяКоманда.Модификатор = "ПечатьMXL"; Возврат ПараметрыРегистрации; КонецФункции Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ПечатнаяФорма1"); Если ПечатнаяФорма <> Неопределено Тогда ПечатнаяФорма.ТабличныйДокумент = СформироватьПечатнуюФорму1(МассивОбъектов, ОбъектыПечати); ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Печатная форма 1 - синоним макета (внешняя печатная форма)'"); КонецЕсли; ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ПечатнаяФорма2"); Если ПечатнаяФорма <> Неопределено Тогда ПечатнаяФорма.ТабличныйДокумент = СформироватьПечатнуюФорму2(МассивОбъектов, ОбъектыПечати); ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Печатная форма 2 - синоним макета (внешняя печатная форма)'"); КонецЕсли; КонецПроцедуры Функция СформироватьПечатнуюФорму1(МассивОбъектов, ОбъектыПечати) ТабличныйДокумент = Новый ТабличныйДокумент; СсылкаИсточник = МассивОбъектов[0]; Возврат ТабличныйДокумент; КонецФункции Функция СформироватьПечатнуюФорму2(МассивОбъектов, ОбъектыПечати) ТабличныйДокумент = Новый ТабличныйДокумент; СсылкаИсточник = МассивОбъектов[0]; Возврат ТабличныйДокумент; КонецФункции |
|||
20
Босечка
30.11.15
✎
18:36
|
Я поняла, не видит ссылкуна объект.
Сообщить(ЭтотОбъект.СсылкаНаОбъект.Ссылка); выдает пустое значение. |
|||
21
Casey1984
30.11.15
✎
18:41
|
(20) ЭтотОбъект - а где он у тебя в (0)?
|
|||
22
Босечка
30.11.15
✎
18:45
|
Я поняла свою ошибку надо выбирать документ.ссылка в реквизите, а я случайно выбрала документобъект....
все заработало!!!! Спасибо. |
|||
23
User_Agronom
30.11.15
✎
19:40
|
(20) ...Ссылкуна...
Круто и точно)) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |