ТабДок = неопределенно в УниверсальныеМеханизмы.НапечататьВнешнююФорму
Здравствуйте! Может кто подскажет, печатаю вешнюю печатную форму через
Но у меня возвращается ТабДок = Неопределенно и соответственно я не могу сохранить в PDF.
Я отладчиком прошла и получается в самой этой процедуре,когда ныряет в
Это обычное приложение.
ТабДок = УниверсальныеМеханизмы.НапечататьВнешнююФорму(Док, СтруктураПечатнаяФорма);
Но у меня возвращается ТабДок = Неопределенно и соответственно я не могу сохранить в PDF.
Я отладчиком прошла и получается в самой этой процедуре,когда ныряет в
ТабДокумент = Обработка.Печать();
он возвращает табдок = неопределенно, хотя отладчиком прохожу и все было нормально. С чем это связано и как мне получить мой табДок, чтобы его потом сохранить.
Это обычное приложение.
Найденные решения
(6) Так у вас Функция ничего не возращает, поэтому ТабДок = Неопределено
Замените процедуру СтандартнаяПроцедураПечать на функцию
+ Функцию печать замените на
Замените процедуру СтандартнаяПроцедураПечать на функцию
Функция СтандартнаяПроцедураПечать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, НепосредственнаяПечать = Ложь) Экспорт
// Получить экземпляр документа на печать
Если ИмяМакета = "Накладная" Тогда
ТабДокумент = ПечатьДокумента();
ИначеЕсли ИмяМакета = "УниверсальныйПередаточныйДокумент" тогда
ТабДокумент = ПечатьУниверсальногоПередаточногоДокумента();
ИначеЕсли ИмяМакета = "ТОРГ12" тогда
ТабДокумент = ПечатьТОРГ12();
ИначеЕсли ИмяМакета = "ТОРГ12_БезУслуг" тогда
ТабДокумент = ПечатьТОРГ12(Истина);
ИначеЕсли ИмяМакета = "Акт" Тогда
ТабДокумент = ПечатьАктаОбОказанииУслуг();
ИначеЕсли ИмяМакета = "1Т" или ИмяМакета = "_1Т" Тогда
ТабДокумент = ПечатьТТН();
ИначеЕсли ИмяМакета = "М15" Тогда
ТабДокумент = ПечатьМ15();
ИначеЕсли ИмяМакета = "СправкаРасчетВал" Тогда
// Справка-расчет формирования рублевой суммы документа в валюте
БухгалтерскийУчетРасчетовСКонтрагентами.НапечататьСправкуРасчетРублеваяСуммаДокументаВВалюте(Ссылка);
Возврат Неопределено;
КонецЕсли;
Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер,
ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект.ПолучитьОбъект()), НепосредственнаяПечать, Ссылка);
КонецФункции // Печать
Показать+ Функцию печать замените на
Функция Печать() Экспорт
//СЗК КОнстанта 17.05.2018 начало
ПроверкаНДС();
//СЗК КОнстанта 17.05.2018 конец
ПрисвоениеПеременных();
////////////////////////////////////////////////////////////////////////////////////
//Передаваемые параметры
ИмяМакета = "УниверсальныйПередаточныйДокумент";
КоличествоЭкземпляров = 1;
НаПринтер = Ложь;
НепосредственнаяПечать = Ложь;
////////////////////////////////////////////////////////////////////////////////////
Возврат СтандартнаяПроцедураПечать(ИмяМакета,КоличествоЭкземпляров,НаПринтер,НепосредственнаяПечать);
КонецФункции
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) да вот она и есть:
Сначала в модуле формы:
а потом в модуле объекта
Она до последнего возвращает нормально табличный документ, а уже когда возвращается в мою, то неопределенна(
Сначала в модуле формы:
Процедура КнопкаВыполнитьНажатие(Кнопка)
ТабДок = Печать();
УниверсальныеМеханизмы.НапечататьДокумент(ТабДок, 0, Ложь, ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект));
КонецПроцедуры
ТабДок = Печать();
УниверсальныеМеханизмы.НапечататьДокумент(ТабДок, 0, Ложь, ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект));
КонецПроцедуры
а потом в модуле объекта
Функция Печать() Экспорт
//СЗК КОнстанта 17.05.2018 начало
ПроверкаНДС();
//СЗК КОнстанта 17.05.2018 конец
ПрисвоениеПеременных();
////////////////////////////////////////////////////////////////////////////////////
//Передаваемые параметры
ИмяМакета = "УниверсальныйПередаточныйДокумент";
КоличествоЭкземпляров = 1;
НаПринтер = Ложь;
НепосредственнаяПечать = Ложь;
////////////////////////////////////////////////////////////////////////////////////
СтандартнаяПроцедураПечать(ИмяМакета,КоличествоЭкземпляров,НаПринтер,НепосредственнаяПечать);
КонецФункции
Показать//СЗК КОнстанта 17.05.2018 начало
ПроверкаНДС();
//СЗК КОнстанта 17.05.2018 конец
ПрисвоениеПеременных();
////////////////////////////////////////////////////////////
//Передаваемые параметры
ИмяМакета = "УниверсальныйПередаточныйДокумент";
КоличествоЭкземпляров = 1;
НаПринтер = Ложь;
НепосредственнаяПечать = Ложь;
////////////////////////////////////////////////////////////
СтандартнаяПроцедураПечать(ИмяМакета,КоличествоЭкземпляров,НаПринтер,НепосредственнаяПечать);
КонецФункции
Она до последнего возвращает нормально табличный документ, а уже когда возвращается в мою, то неопределенна(
(6) Так у вас Функция ничего не возращает, поэтому ТабДок = Неопределено
Замените процедуру СтандартнаяПроцедураПечать на функцию
+ Функцию печать замените на
Замените процедуру СтандартнаяПроцедураПечать на функцию
Функция СтандартнаяПроцедураПечать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, НепосредственнаяПечать = Ложь) Экспорт
// Получить экземпляр документа на печать
Если ИмяМакета = "Накладная" Тогда
ТабДокумент = ПечатьДокумента();
ИначеЕсли ИмяМакета = "УниверсальныйПередаточныйДокумент" тогда
ТабДокумент = ПечатьУниверсальногоПередаточногоДокумента();
ИначеЕсли ИмяМакета = "ТОРГ12" тогда
ТабДокумент = ПечатьТОРГ12();
ИначеЕсли ИмяМакета = "ТОРГ12_БезУслуг" тогда
ТабДокумент = ПечатьТОРГ12(Истина);
ИначеЕсли ИмяМакета = "Акт" Тогда
ТабДокумент = ПечатьАктаОбОказанииУслуг();
ИначеЕсли ИмяМакета = "1Т" или ИмяМакета = "_1Т" Тогда
ТабДокумент = ПечатьТТН();
ИначеЕсли ИмяМакета = "М15" Тогда
ТабДокумент = ПечатьМ15();
ИначеЕсли ИмяМакета = "СправкаРасчетВал" Тогда
// Справка-расчет формирования рублевой суммы документа в валюте
БухгалтерскийУчетРасчетовСКонтрагентами.НапечататьСправкуРасчетРублеваяСуммаДокументаВВалюте(Ссылка);
Возврат Неопределено;
КонецЕсли;
Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер,
ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект.ПолучитьОбъект()), НепосредственнаяПечать, Ссылка);
КонецФункции // Печать
Показать+ Функцию печать замените на
Функция Печать() Экспорт
//СЗК КОнстанта 17.05.2018 начало
ПроверкаНДС();
//СЗК КОнстанта 17.05.2018 конец
ПрисвоениеПеременных();
////////////////////////////////////////////////////////////////////////////////////
//Передаваемые параметры
ИмяМакета = "УниверсальныйПередаточныйДокумент";
КоличествоЭкземпляров = 1;
НаПринтер = Ложь;
НепосредственнаяПечать = Ложь;
////////////////////////////////////////////////////////////////////////////////////
Возврат СтандартнаяПроцедураПечать(ИмяМакета,КоличествоЭкземпляров,НаПринтер,НепосредственнаяПечать);
КонецФункции
Показать
Пример сохранения в pdf
Макет = ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ТабДок = Новый ТабличныйДокумент;
ОбластьШапка.Параметры.НомерДок = Номер;
ОбластьШапка.Параметры.ДатаДок = Формат(Дата, "DDMMMMYYYY");
ОбластьШапка.Параметры.Руководитель = Руководитель;
ТабДок.Вывести(ОбластьШапка);
ТабДок.Защита=Истина;
ВремФайл=ПолучитьИмяВременногоФайла("pdf");
ТабДок.Записать(ВремФайл,ТипФайлаТабличногоДокумента.PDF);
ЗапуститьПриложение(ВремФайл);
Показать
(9) А как можно преобразовать ? Я знаю,что есть , но у меня же нету табдок. Можно как-то сделать так, чтобы он у меня не выводился, а просто сформировал и сохранил?
УниверсальныеМеханизмы.НапечататьДокумент(ТабДок, 0, Ложь, ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект));
(10)
ТабДок у вас есть т.к. вы же его передаете в строку
которая печатает документ.
А вам нужно сохранить, пример ниже:
ТабДок у вас есть т.к. вы же его передаете в строку
УниверсальныеМеханизмы.НапечататьДокумент(ТабДок, 0, Ложь, ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект));
которая печатает документ.
А вам нужно сохранить, пример ниже:
ВремФайл=ПолучитьИмяВременногоФайла("pdf");
ТабДок.Записать(ВремФайл,ТипФайлаТабличногоДокумента.PDF);
ЗапуститьПриложение(ВремФайл);
(11)
Не работает, т.к. табДок = неопределено , то когда ныряет в эту процедуру, обрывает на начальном этапе.
УниверсальныеМеханизмы.НапечататьДокумент(ТабДок, 0, Ложь, ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект));
Не работает, т.к. табДок = неопределено , то когда ныряет в эту процедуру, обрывает на начальном этапе.
Процедура НапечататьДокумент(ПечДокумент, КоличествоЭкземпляров = 1, НаПринтер = Ложь, Заголовок = "", НепосредственнаяПечать = Ложь, Ссылка = Неопределено, ИмяМакета = "", Контрагент = Неопределено) Экспорт
Если ПечДокумент = Неопределено тогда
Возврат;
КонецЕсли;
// Получить необходимое количество копий
Если КоличествоЭкземпляров > 0 Тогда
ПечДокумент.КоличествоЭкземпляров = КоличествоЭкземпляров;
КонецЕсли;
Если НЕ ПечДокумент.АвтоМасштаб
И НЕ ЗначениеЗаполнено(ПечДокумент.ИмяПринтера) Тогда
ПечДокумент.АвтоМасштаб = Истина;
КонецЕсли;
Если НаПринтер Тогда
ПечДокумент.Напечатать(НепосредственнаяПечать = Истина);
Иначе
// Отобразить печатный документ на экране
//ФормаПечати = ПолучитьОбщуюФорму("ФормаПечати",, Новый УникальныйИдентификатор);
ФормаПечати = ПолучитьОбщуюФорму("ФормаПечати",, Заголовок + ИмяМакета + Ссылка);
ФормаПечати.Документ = Ссылка;
ФормаПечати.Заголовок = Заголовок;
ФормаПечати.ИмяМакета = ИмяМакета;
ФормаПечати.Контрагент = Контрагент;
ФормаПечати.ПечатныйДокумент = ПечДокумент;
ФормаПечати.Открыть();
КонецЕсли;
КонецПроцедуры // НапечататьДокумент()
Показать
(10) Процедура СтандартнаяПроцедураПечать надо сделать функцией и в конце этой функции поставить:
Возврат ТабДокумент;
В конце Функция Печать() исправить СтандартнаяПроцедураПечать на
ТабДок = СтандартнаяПроцедураПечать(ИмяМакета,КоличествоЭкземпляров,НаПринтер,НепосредственнаяПечать);
Возврат ТабДок;
Возврат ТабДокумент;
В конце Функция Печать() исправить СтандартнаяПроцедураПечать на
ТабДок = СтандартнаяПроцедураПечать(ИмяМакета,КоличествоЭкземпляров,НаПринтер,НепосредственнаяПечать);
Возврат ТабДок;
и она на экран выводиться. Но когда я пытаюсь её сохранить
[1C-CODE]Функция PDFСохранить(текДокумент,ТабДок)
СтруктураВозврата = Новый Структура;
печ_текДокумент = СокрЛП(Строка(текДокумент));
печ_текДокумент = СтрЗаменить(печ_текДокумент,".","_");
печ_текДокумент = СтрЗаменить(печ_текДокумент,":","_");
печ_текДокумент = СтрЗаменить(печ_текДокумент," ","_");
СтруктураВозврата.Вставить("Наименование",печ_текДокумент);
печ_текДокумент = печ_текДокумент + ".pdf";
СтруктураВозврата.Вставить("ИмяФайла",печ_текДокумент);
ПутьВременногоФайла = ПолучитьИмяВременногоФайла("pdf");
СтрокиПути = СтрЗаменить(ПутьВременногоФайла,"\",Символы.ПС);
ЗаменяемоеЗначение = СтрПолучитьСтроку(СтрокиПути,СтрЧислоСтрок(СтрокиПути));
ПутьВременногоФайла = СтрЗаменить(ПутьВременногоФайла,ЗаменяемоеЗначение,печ_текДокумент);
СтруктураВозврата.Вставить("Путь",ПутьВременногоФайла);
ТабДок.Записать(ПутьВременногоФайла,ТипФайлаТабличногоДокумента.PDF);
Возврат СтруктураВозврата;
КонецФункции
/CODE]
Выдается ошибка
{ВнешняяОбработка.ОтправкаУПДПоЭлектроннойПочте.Форма.Форма.Форма(177)}: Значение не является значением объектного типа (Записать)
ТабДок.Записать(ПутьВременногоФайла,ТипФайлаТабличногоДокумента.PDF);
тСтруктура = PDFСохранить(Док,ТабДок);
[1C-CODE]Функция PDFСохранить(текДокумент,ТабДок)
СтруктураВозврата = Новый Структура;
печ_текДокумент = СокрЛП(Строка(текДокумент));
печ_текДокумент = СтрЗаменить(печ_текДокумент,".","_");
печ_текДокумент = СтрЗаменить(печ_текДокумент,":","_");
печ_текДокумент = СтрЗаменить(печ_текДокумент," ","_");
СтруктураВозврата.Вставить("Наименование",печ_текДокумент);
печ_текДокумент = печ_текДокумент + ".pdf";
СтруктураВозврата.Вставить("ИмяФайла",печ_текДокумент);
ПутьВременногоФайла = ПолучитьИмяВременногоФайла("pdf");
СтрокиПути = СтрЗаменить(ПутьВременногоФайла,"\",Символы.ПС);
ЗаменяемоеЗначение = СтрПолучитьСтроку(СтрокиПути,СтрЧислоСтрок(СтрокиПути));
ПутьВременногоФайла = СтрЗаменить(ПутьВременногоФайла,ЗаменяемоеЗначение,печ_текДокумент);
СтруктураВозврата.Вставить("Путь",ПутьВременногоФайла);
ТабДок.Записать(ПутьВременногоФайла,ТипФайлаТабличногоДокумента.PDF);
Возврат СтруктураВозврата;
КонецФункции
/CODE]
Выдается ошибка
{ВнешняяОбработка.ОтправкаУПДПоЭлектроннойПочте.Форма.Форма.Форма(177)}: Значение не является значением объектного типа (Записать)
ТабДок.Записать(ПутьВременногоФайла,ТипФайлаТабличногоДокумента.PDF);
Да вышло)
Ещё вопрос как при обходе цикла мне добавить печатные формы во вложения:
Ещё вопрос как при обходе цикла мне добавить печатные формы во вложения:
Для Каждого ЭлементМассива из НайденныеСтроки Цикл
ВложенияПисьма = Новый Соответствие;
Если НЕ тТемаСообщения="" Тогда
тТемаСообщения = тТемаСообщения + "; ";
КонецЕсли;
Если ЗначениеЗаполнено(ЭлементМассива.Ссылка) Тогда
Док = ЭлементМассива.Ссылка;
ВПФ = ПолучитьПечатныеФормы(Док);
СоответствиеПечатныхФорм.Вставить(ВПФ[0].Значение.СсылкаНаВнешнююОбработку.Наименование,ВПФ[0].Значение);
ПечФ = ВПФ[0].Значение.СсылкаНаВнешнююОбработку.Наименование;
СтруктураПечатнаяФорма = СоответствиеПечатныхФорм[ПечФ];
ТабДок = НайтиВПФ(Док);
ИмяФайлаРеализация = Каталог+"\Реализация"+ЭлементМассива.Ссылка.Номер+Формат(ЭлементМассива.Ссылка.Дата,"ДФ=dd.MM.yyyy")+".pdf";
ТабДок.Записать(ИмяФайлаРеализация,ТипФайлаТабличногоДокумента.PDF);
СписокВложений.Добавить(Новый Структура("ИмяФайла", ИмяФайлаРеализация));
!!!!- вот тут проблема , получаем только последнюю, хотя их две в табличной части!!!!!!!!!!
ВложенияПисьма.Вставить("Реализация"+СокрЛП(ЭлементМассива.Ссылка.Номер)+СокрЛП(ЭлементМассива.Ссылка.Дата)+".pdf",Новый ДвоичныеДанные(ИмяФайлаРеализация));
тТемаСообщения = тТемаСообщения + "" + ТипЗНЧ(ЭлементМассива.Ссылка)+ " " + ОбщегоНазначения.ПолучитьНомерНаПечать(ЭлементМассива.Ссылка) + " от " +Формат(ЭлементМассива.Ссылка.Дата,"ДФ=dd.MM.yyyy");
ПараметрыПисьма.Вставить("Вложения", ВложенияПисьма );
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот