|   |   | 
| 
 | Программная запись в 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-то правильно сохраняет? :)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |