|
Программная запись в PDF | ☑ | ||
---|---|---|---|---|
0
Vladislava-smile
05.08.15
✎
09:14
|
Сохраняю табдок в файл с расширением pdf. Сохраняет в 2-х экземплярах ...Понять почему не могу ((. Подскажите где рыть?
|
|||
1
Cube
05.08.15
✎
09:15
|
(0) "Подскажите где рыть?"
В своём коде. |
|||
2
ViSo76
05.08.15
✎
09:16
|
1. Руки примять не пробовал?
2. Штатные телепаты все в отпуске. |
|||
3
Cube
05.08.15
✎
09:16
|
(2) Пол - женский и фото есть...
|
|||
4
Peltzer
05.08.15
✎
09:18
|
В настройках печати табличного документа
|
|||
5
ViSo76
05.08.15
✎
09:18
|
Извиняюсь:
1. Ручёнки примять не пробовала? 2. К моему великому сожалению все штатные телепаты в отпуске, но если оставишь свой телефончик... ( шутка ) |
|||
6
Vladislava-smile
05.08.15
✎
09:23
|
Вот код:
ТабДок = Новый ТабличныйДокумент; ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктСверкиВзаиморасчетов_АктСверки"; Макет = ПолучитьМакет("АктСверкиСПечатями"); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьНачОстатки = Макет.ПолучитьОбласть("НачОстатки"); ОбластьОбороты = Макет.ПолучитьОбласть("Обороты"); ОбластьОборотыИтог = Макет.ПолучитьОбласть("ОборотыИтог"); ОбластьКонОстатки = Макет.ПолучитьОбласть("КонОстатки"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); НазваниеОрганизации = Организация.НаименованиеПолное; Если ПустаяСтрока(НазваниеОрганизации) Тогда НазваниеОрганизации = Организация; КонецЕсли; НаименованиеКонтрагента = Контрагент.НаименованиеПолное; Если ПустаяСтрока(НаименованиеКонтрагента) Тогда НаименованиеКонтрагента = Контрагент; КонецЕсли; ОбластьЗаголовок.Параметры.НазваниеОрганизации = НазваниеОрганизации; ОбластьЗаголовок.Параметры.НаименованиеКонтрагента = НаименованиеКонтрагента; ИмяПредставителяОрганизации = ПредставительОрганизации; ИмяПредсатвителяКонтрагента = ПредставительКонтрагента; Если ЗначениеЗаполнено(ПредставительОрганизации) Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОтветственныеЛицаОрганизацииСрезПоследних.Должность |ИЗ | РегистрСведений.ОтветственныеЛицаОрганизации.СрезПоследних( | &КонДата, | СтруктурнаяЕдиница = &Организация | И ФизическоеЛицо = &ФизическоеЛицо) КАК ОтветственныеЛицаОрганизацииСрезПоследних"; Запрос.УстановитьПараметр("Организация",Организация); Запрос.УстановитьПараметр("ФизическоеЛицо",ПредставительОрганизации); Запрос.УстановитьПараметр("КонДата",Дата); Рез = Запрос.Выполнить(); Если Рез.Пустой() тогда ДолжностьПредставителяОрганизации = ""; Иначе Выборка = Рез.Выбрать(); Выборка.Следующий(); ДолжностьПредставителяОрганизации = СокрЛП(Выборка.Должность); КонецЕсли; Иначе ДолжностьПредставителяОрганизации = ""; КонецЕсли; ДолжностьПредставителяКонтрагента = ?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента),"",СокрЛП(представительКонтрагента.Должность)); Если НЕ ЗначениеЗаполнено(ДатаНачала) Тогда Если ПоДаннымОрганизации.Количество()>0 Тогда ДатаНачалаПериода = ПоДаннымОрганизации[0].Дата; Иначе ДатаНачалаПериода = ДатаНачала; КонецЕсли; Иначе ДатаНачалаПериода = ДатаНачала; КонецЕсли; ТекстЗаголовка = "взаимных расчетов за период с " + Формат(ДатаНачалаПериода, "ДФ=dd.MM.yyyy") + " по " + Формат(ДатаОкончания, "ДФ=dd.MM.yyyy") + Символы.ПС + "между " + НазваниеОрганизации + Символы.ПС + "и " + НаименованиеКонтрагента; Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда ТекстЗаголовка = ТекстЗаголовка + Символы.ПС + "по договору " + СокрЛП(ДоговорКонтрагента); КонецЕсли; ОбластьЗаголовок.Параметры.ТекстЗаголовка = ТекстЗаголовка; //ДанныеПредставителяОрганизации = ДанныеФизЛица(Организация, ПредставительОрганизации, ДатаОкончания); //ФИОПредставителя = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Фамилия),"",ДанныеПредставителяОрганизации.Фамилия // + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Имя),""," "+ДанныеПредставителяОрганизации.Имя) // + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Отчество),""," "+ДанныеПредставителяОрганизации.Отчество)); ФИОПредставителя = "" + ПредставительОрганизации; СтрЗаголовокТаблица = "Мы, нижеподписавшиеся, " + ?(ДолжностьПредставителяОрганизации<>"",ДолжностьПредставителяОрганизации,"_____________________")+" " + НазваниеОрганизации + " " + ?(ФИОПредставителя<>"",ФИОПредставителя,"______________________________________") + ", с одной стороны, " + "и " + ?(ДолжностьПредставителяКонтрагента<>"",ДолжностьПредставителяКонтрагента,"_________________________") + " " + НаименованиеКонтрагента + " " + ?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента),"________________________________________",ПредставительКонтрагента) + ", с другой стороны, " + "составили настоящий акт сверки в том, что состояние взаимных расчетов по данным учета следующее:"; ОбластьЗаголовок.Параметры.СтрЗаголовокТаблица = СтрЗаголовокТаблица; ОбластьЗаголовок.Параметры.ВалютаДокумента = ВалютаДокумента; ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); ИтСуммаОборотДт = 0; ИтСуммаОборотКт = 0; ИтСуммаОборотДтКонтр = 0; ИтСуммаОборотКтКонтр = 0; НачОстДебет = ?(ОстатокНаНачало > 0, ОстатокНаНачало, 0); НачОстКредит = ?(ОстатокНаНачало < 0, -ОстатокНаНачало, 0); ОстатокНаКонец = ОстатокНаНачало + ПоДаннымОрганизации.Итог("Дебет") - ПоДаннымОрганизации.Итог("Кредит"); КонОстДебет = ?(ОстатокНаКонец > 0, ОстатокНаКонец, 0); КонОстКредит = ?(ОстатокНаКонец < 0, -ОстатокНаКонец, 0); ОстатокНаКонецК = -ОстатокНаНачало + ПоДаннымКонтрагента.Итог("Дебет") - ПоДаннымКонтрагента.Итог("Кредит"); КонОстДебетК = ?(ОстатокНаКонецК > 0, ОстатокНаКонецК, 0); КонОстКредитК = ?(ОстатокНаКонецК < 0, -ОстатокНаКонецК, 0); ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДт = НачОстДебет; ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКт = НачОстКредит; ТабДок.Вывести(ОбластьНачОстатки); ТабДок.НачатьАвтогруппировкуСтрок(); МаксИндекс = Макс(ПоДаннымОрганизации.Количество(), ПоДаннымКонтрагента.Количество()) - 1; Для Инд = 0 По МаксИндекс Цикл Если Инд < ПоДаннымОрганизации.Количество() Тогда СтрокаОрганизации = ПоДаннымОрганизации[Инд]; Регистратор = СтрокаОрганизации.Представление; СуммаОборотДт = СтрокаОрганизации.Дебет; СуммаОборотКт = СтрокаОрганизации.Кредит; ОбластьОбороты.Параметры.СуммаОборотДт = СуммаОборотДт; ОбластьОбороты.Параметры.СуммаОборотКт = СуммаОборотКт; ИтСуммаОборотДт = ИтСуммаОборотДт + СуммаОборотДт; ИтСуммаОборотКт = ИтСуммаОборотКт + СуммаОборотКт; ОбластьОбороты.Параметры.РегистраторПредставление = СтрокаОрганизации.Представление; ОбластьОбороты.Параметры.Регистратор = СтрокаОрганизации.ДокументРегистратор; ОбластьОбороты.Параметры.ДатаДокумента = Формат(СтрокаОрганизации.Дата,"ЧЦ=21; ЧДЦ=2; ДФ=dd.MM.yy"); Иначе ОбластьОбороты.Параметры.СуммаОборотДт = ""; ОбластьОбороты.Параметры.СуммаОборотКт = ""; ОбластьОбороты.Параметры.РегистраторПредставление = ""; ОбластьОбороты.Параметры.Регистратор = ""; ОбластьОбороты.Параметры.ДатаДокумента = ""; КонецЕсли; Если Инд < ПоДаннымКонтрагента.Количество() Тогда СтрокаОрганизации = ПоДаннымКонтрагента[Инд]; Регистратор = СтрокаОрганизации.Представление; СуммаОборотДт = СтрокаОрганизации.Дебет; СуммаОборотКт = СтрокаОрганизации.Кредит; ОбластьОбороты.Параметры.СуммаОборотДтКонтр = СуммаОборотДт; ОбластьОбороты.Параметры.СуммаОборотКтКонтр = СуммаОборотКт; ИтСуммаОборотДтКонтр = ИтСуммаОборотДтКонтр + СуммаОборотДт; ИтСуммаОборотКтКонтр = ИтСуммаОборотКтКонтр + СуммаОборотКт; ОбластьОбороты.Параметры.РегистраторПредставлениеКонтр = СтрокаОрганизации.Представление; ОбластьОбороты.Параметры.ДатаДокументаКонтр = Формат(СтрокаОрганизации.Дата,"ЧЦ=21; ЧДЦ=2; ДФ=dd.MM.yy"); Иначе ОбластьОбороты.Параметры.СуммаОборотДтКонтр = ""; ОбластьОбороты.Параметры.СуммаОборотКтКонтр = ""; ОбластьОбороты.Параметры.РегистраторПредставлениеКонтр = ""; ОбластьОбороты.Параметры.ДатаДокументаКонтр = ""; КонецЕсли; ТабДок.Вывести(ОбластьОбороты); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ОбластьОборотыИтог.Параметры.СуммаОборотДт = ИтСуммаОборотДт; ОбластьОборотыИтог.Параметры.СуммаОборотКт = ИтСуммаОборотКт; Если СверкаСогласована тогда ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтр = ИтСуммаОборотДтКонтр; ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтр = ИтСуммаОборотКтКонтр; КонецЕсли; ТабДок.Вывести(ОбластьОборотыИтог); ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДт = КонОстДебет; ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКт = КонОстКредит; Если СверкаСогласована тогда ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтр = КонОстДебетК; ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтр = КонОстКредитК; КонецЕсли; ТабДок.Вывести(ОбластьКонОстатки); // Результаты сверки Если ПоДаннымОрганизации.Количество() = 0 и ОстатокНаНачало = 0 Тогда РезультатыСверки = "<сверка не проведена>"; ИначеЕсли НЕ ЗначениеЗаполнено(ДатаОкончания) Тогда РезультатыСверки = "<не указана дата сверки>"; ИначеЕсли НЕ ЗначениеЗаполнено(Контрагент) Тогда РезультатыСверки = "<не указан контрагент>"; Иначе РезультатыСверки = "на " + Формат(ДатаОкончания, "ДФ=dd.MM.yyyy") + " задолженность "; Если ОстатокНаКонец > 0 Тогда РезультатыСверки = РезультатыСверки + "в пользу " + СокрЛП(НазваниеОрганизации) + " " + Формат(ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " " + строка(ВалютаДокумента); ИначеЕсли ОстатокНаКонец < 0 Тогда РезультатыСверки = РезультатыСверки + "в пользу " + СокрЛП(НаименованиеКонтрагента) + " " + Формат(-ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " " + строка(ВалютаДокумента); Иначе РезультатыСверки = РезультатыСверки + "отсутствует."; КонецЕсли; КонецЕсли; ОбластьПодвал.Параметры.РезультатыСверки = РезультатыСверки; Если СверкаСогласована тогда ОбластьПодвал.Параметры.ПоДаннымКонтрагента = "По данным " + СокрЛП(НаименованиеКонтрагента); Если ПоДаннымКонтрагента.Количество() = 0 и ОстатокНаНачало = 0 Тогда РезультатыСверки = "<сверка не проведена>"; ИначеЕсли НЕ ЗначениеЗаполнено(ДатаОкончания) Тогда РезультатыСверки = "<не указана дата сверки>"; ИначеЕсли НЕ ЗначениеЗаполнено(Контрагент) Тогда РезультатыСверки = "<не указан контрагент>"; Иначе РезультатыСверки = "на " + Формат(ДатаОкончания, "ДФ=dd.MM.yyyy") + " задолженность "; Если ОстатокНаКонецК < 0 Тогда РезультатыСверки = РезультатыСверки + "в пользу " + СокрЛП(НазваниеОрганизации) + " " + Формат(-ОстатокНаКонецК, "ЧЦ=21; ЧДЦ=2") + " " + строка(ВалютаДокумента); ИначеЕсли ОстатокНаКонецК > 0 Тогда РезультатыСверки = РезультатыСверки + "в пользу " + СокрЛП(НаименованиеКонтрагента) + " " + Формат(ОстатокНаКонецК, "ЧЦ=21; ЧДЦ=2") + " " + строка(ВалютаДокумента); Иначе РезультатыСверки = РезультатыСверки + "отсутствует."; КонецЕсли; КонецЕсли; ОбластьПодвал.Параметры.РезультатыСверкиК = РезультатыСверки; Если ОстатокНаКонец+ОстатокНаКонецК<>0 Тогда ИтогСверки = "В результате сверки выявлено расхождение информации о состоянии расчетов в размере "+Формат(?(ОстатокНаКонец+ОстатокНаКонецК>0,1,-1)*(ОстатокНаКонец+ОстатокНаКонецК), "ЧЦ=21; ЧДЦ=2") +" "+ Строка(ВалютаДокумента); ОбластьПодвал.Параметры.ИтогСверки = Символы.ПС+ ИтогСверки+Символы.ПС+" "; КонецЕсли; КонецЕсли; ОбластьПодвал.Параметры.НазваниеОрганизации = СокрЛП(НазваниеОрганизации); ОбластьПодвал.Параметры.НаименованиеКонтрагента = СокрЛП(НаименованиеКонтрагента); // ОбластьПодвал.Параметры.Должность = "________________"; ОбластьПодвал.Параметры.ДолжностьК ="________________"; Доверенность = СтрЗаменить(Доверенность, "Доверенность", "доверенности"); ОбластьПодвал.Параметры.Доверенность=Доверенность; ОбластьПодвал.Параметры.ФИОПредставителя = "("+ ОбщегоНазначения.ФамилияИнициалыФизЛица(ФИОПредставителя) +")"; ОбластьПодвал.Параметры.ФИОПредставителяК = "("+?(НЕ ЗначениеЗаполнено(ПредставительКонтрагента),"_______________________",ПредставительКонтрагента)+")"; // Печать организации Картинка = Организация.ИзображениеПечати.Получить(); Если ТипЗнч(Картинка) = Тип("Картинка") Тогда ОбластьПодвал.Рисунки.ПечатьОрганизации.Картинка = Картинка; Иначе ОбластьПодвал.Рисунки.Удалить(ОбластьПодвал.Рисунки.ПечатьОрганизации); КонецЕсли; // Печать подписи Руководитель=ПредставительОрганизации; Картинка = Руководитель.ИзображениеПодписи.Получить(); Если ТипЗнч(Картинка) = Тип("Картинка") Тогда ОбластьПодвал.Рисунки.ИзображениеПодписи.Картинка = Картинка; Иначе ОбластьПодвал.Рисунки.Удалить(ОбластьПодвал.Рисунки.ИзображениеПодписи); КонецЕсли; ТабДок.Вывести(ОбластьПодвал); ИмяФайла = "Акт сверки по "+СокрЛП(Организация)+" для контрагента "+СокрЛП(Контрагент)+".pdf"; СоздатьКаталог("C:\1C\tmp"); ПутьКФайлу = "C:\1C\tmp\" + Имяфайла; ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF); |
|||
7
Vladislava-smile
05.08.15
✎
09:24
|
Это, чтобы телепаты не напрягались ... )
|
|||
8
ДенисЧ
05.08.15
✎
09:24
|
ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктСверкиВзаиморасчетов_АктСверки";
Это попробуй убрать |
|||
9
Fedor-1971
05.08.15
✎
09:35
|
(6) попробуй ТабДок.КоличествоЭкземпляров=1;,
Если качество результирующего документа устраивает, то можно и так оставить. Для полностью корректного перевода в PDF лучше использовать PDF-принтер. |
|||
10
Vladislava-smile
05.08.15
✎
09:43
|
(9) а зачем? Он полностью корректно вроде сохраняет и если есть возможность сразу сохранять в pdf.
Спасибо, про экземпляры - помогло, то, что нужно ). |
|||
11
Vladislava-smile
05.08.15
✎
09:43
|
(8) - все кривится тогда ...
|
|||
12
Fedor-1971
05.08.15
✎
10:08
|
(10) Обрати внимание на выравнивание текста в ячейках таблицы (ПоШирине заменяется на ПоЛевомуКраю) и попробуй сделать длинную строку в ячейке, что-бы отработал автоматический перенос и оцени результат (скорее всего будет видна первая строка, а хвост иногда прячется - засада в высоте строки, глючит при конвертации, закономерность глюка не отловил).
Моё начальство не устроило качество создаваемого PDF пришлось сделать через BullZip PDF. (11) явно выстави нужные параметры ТабДок, а ИмяПараметовПечати оставь пользователям под их настройки |
|||
13
Vladislava-smile
05.08.15
✎
10:33
|
(12) - Спасибо, что так подробно, если возникнут какие-то проблемы, то воспользуюсь вашим методом. Автоматический перенос работает нормально.
|
|||
14
viraboy
05.08.15
✎
10:49
|
При сохранении в PDF используется виртуальный принтер. Соответственно количество копий будет скорее всего взято из настроек принтера по умолчанию
|
|||
15
sapphire
05.08.15
✎
11:00
|
(6) Проверьте в mxl-то правильно сохраняет? :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |