Имя: Пароль:
1C
1С v8
Печать документа точно по размеру страницы(чтобы реквизиты всегда были внизу)
0 kIR
 
11.06.13
10:35
Доброго времени суток!

Печатаем сопроводительные письма к документации и необходимо,чтобы независимо от текста письма,реквизиты всегда находились внизу.
Пытался эту проблему решить функцией "ПроверитьВывод" но она всегда выдает ложь,даже если в тексте мы печатаем 1 слово

вот текст обработки:

Процедура КнопкаВыполнитьНажатие(Кнопка)
   Печать();
КонецПроцедуры


Функция ПечатьСопрЛиста()
   
   ТабДок = Новый ТабличныйДокумент();
   ТабДок.АвтоМасштаб = Истина;
   Макет = ПолучитьМакет("СопроводительноеПисьмо");
   
   КоличествоСтраниц = 1;
   НомерСтраницы = 1;
   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   
   ШтрихКодЛого = ОбластьЗаголовок.Рисунки.ШтрихКодЛого.Объект;
//    ШтрихКодЛого.text = ФормированиеПечатныхФорм.СформироватьТекстДляШтрихкода(ЭтотОбъект, Неопределено, НомерСтраницы, КоличествоСтраниц);
   ШтрихКодЛого.alphabet = 25;
   
   ОбластьЗаголовок.Параметры.Контрагент = Контрагент;
   
   Если НЕ КонтактноеЛицо.Пустая() Тогда
       ОбластьЗаголовок.Параметры.КонтактноеЛицо = "" + КонтактноеЛицо.Должность + " " + КонтактноеЛицо;
   КонецЕсли;
   
   ОбластьЗаголовок.Параметры.ЗаголовокПисьма= ЗаголовокПисьма;
   ОбластьЗаголовок.Параметры.Дата = Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy");
   ТабДок.Вывести(ОбластьЗаголовок);
   
   ОбластьТекст = Макет.ПолучитьОбласть("Текст");
   ОбластьТекст.Параметры.текст = Текст;
   ТабДок.Вывести(ОбластьТекст);
   
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
       ОбластьПодвал.Параметры.ТипИП = "ИП";
       ОбластьПодвал.Параметры.ИП = "Кузнецов А.В.";
   ТабДок.Вывести(ОбластьПодвал);
   ОбластьРеквизиты = Макет.ПолучитьОбласть("Реквизиты");
   ОбластьРеквизиты.Параметры.НаименованиеОрганизации = Организация.НаименованиеПолное;
   ОбластьРеквизиты.Параметры.ИНН  = "ИНН " + Организация.ИНН;
   ОбластьРеквизиты.Параметры.ОГРН = "ОГРН " + Организация.ОГРН;
   ОбластьРеквизиты.Параметры.Банк = Организация.ОсновнойБанковскийСчет.Банк;
   ОбластьРеквизиты.Параметры.РСчет= "р/счет " + Организация.ОсновнойБанковскийСчет.НомерСчета
                                       + " БИК " + Организация.ОсновнойБанковскийСчет.Банк.Код;
   ОбластьРеквизиты.Параметры.КСчет= "к/счет " + Организация.ОсновнойБанковскийСчет.Банк.КоррСчет;    
   ТабДок.Вывести(ОбластьРеквизиты);


   массивСтрокСИтогом = Новый Массив;
   массивСтрокСИтогом.Очистить();
   массивСтрокСИтогом.Добавить(ОбластьЗаголовок);
   массивСтрокСИтогом.Добавить(ОбластьТекст);
   массивСтрокСИтогом.Добавить(ОбластьПодвал);
   массивСтрокСИтогом.Добавить(ОбластьРеквизиты);
   
   Вывод = ТабДок.ПроверитьВывод(массивСтрокСИтогом);
   Пока Вывод Цикл
       ОбластьРеквизиты = Макет.ПолучитьОбласть("Реквизиты");
       ОбластьРеквизиты.Очистить();
       
       ОбластьПустаяСтрока = Макет.ПолучитьОбласть("ПустаяСтрока");
       
       ТабДок.Вывести(ОбластьПустаяСтрока);
       ТабДок = ВывестиНизТабДокумента(ТабДок,Макет);
       
       массивСтрокСИтогом.Очистить();
       массивСтрокСИтогом.Добавить(ТабДок);

       Вывод = ТабДок.ПроверитьВывод(массивСтрокСИтогом);
       
   КонецЦикла;

   
   Возврат ТабДок;
   
КонецФункции


Функция ВывестиНизТабДокумента(ТабДок,Макет)
       
   ОбластьРеквизиты = Макет.ПолучитьОбласть("Реквизиты");
   ОбластьРеквизиты.Параметры.НаименованиеОрганизации = Организация.НаименованиеПолное;
   ОбластьРеквизиты.Параметры.ИНН  = "ИНН " + Организация.ИНН;
   ОбластьРеквизиты.Параметры.ОГРН = "ОГРН " + Организация.ОГРН;
   ОбластьРеквизиты.Параметры.Банк = Организация.ОсновнойБанковскийСчет.Банк;
   ОбластьРеквизиты.Параметры.РСчет= "р/счет " + Организация.ОсновнойБанковскийСчет.НомерСчета
                                       + " БИК " + Организация.ОсновнойБанковскийСчет.Банк.Код;
   ОбластьРеквизиты.Параметры.КСчет= "к/счет " + Организация.ОсновнойБанковскийСчет.Банк.КоррСчет;    
   ТабДок.Вывести(ОбластьРеквизиты);
   Возврат ТабДок;
КонецФункции    

Процедура Печать(ИзАвтоВыставления = Ложь) Экспорт
   
   ТабДок = ПечатьСопрЛиста();
   
   ТабДок.КоличествоЭкземпляров = 1;
   ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; ///
   ТабДок.РазмерСтраницы="A4"; // буква А должна быть английской
   ТабДок.АвтоМасштаб = Истина; // Вот сюда, пусть рассчитает масштаб заново :)
   
   
   ФормаПечати = ПолучитьОбщуюФорму("ПечатьДокументов",, Новый УникальныйИдентификатор);
   ФормаПечати.ОбъектПечати     = Неопределено;
   ФормаПечати.ПечатныйДокумент = ТабДок;
   ФормаПечати.Заголовок        = Заголовок;
   ФормаПечати.Защита           = УправлениеДопПравамиПользователей.ЗащитаТаблиц();
   ФормаПечати.Открыть();

КонецПроцедуры


Что сделать,чтобы все было красиво?спасибо
1 kIR
 
11.06.13
10:49
Извините за панику,Все реализовалось красивее

бла-бла-бла...
ОбластьРеквизиты = Макет.ПолучитьОбласть("Реквизиты");
   ОбластьРеквизиты.Параметры.НаименованиеОрганизации = Организация.НаименованиеПолное;
   ОбластьРеквизиты.Параметры.ИНН  = "ИНН " + Организация.ИНН;
   ОбластьРеквизиты.Параметры.ОГРН = "ОГРН " + Организация.ОГРН;
   ОбластьРеквизиты.Параметры.Банк = Организация.ОсновнойБанковскийСчет.Банк;
   ОбластьРеквизиты.Параметры.РСчет= "р/счет " + Организация.ОсновнойБанковскийСчет.НомерСчета
                                       + " БИК " + Организация.ОсновнойБанковскийСчет.Банк.Код;
   ОбластьРеквизиты.Параметры.КСчет= "к/счет " + Организация.ОсновнойБанковскийСчет.Банк.КоррСчет;    
   
   ОбластьПустаяСтрока = Макет.ПолучитьОбласть("ПУстаяСтрока");
   массивСтрокСИтогом = Новый Массив;
   массивСтрокСИтогом.Очистить();
   массивСтрокСИтогом.Добавить(ОбластьПустаяСтрока);
   массивСтрокСИтогом.Добавить(ОбластьРеквизиты);
   
   Пока ТабДок.ПроверитьВывод(массивСтрокСИтогом) Цикл              /// Далее следует простая проверка на возможность уместить массив из областей на листе.
   ТабДок.Вывести(ОбластьПустаяСтрока);    
   КонецЦикла;
   
   ТабДок.Вывести(ОбластьРеквизиты);
   
       
   Возврат ТабДок;
   
КонецФункции
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.