Имя: Пароль:
1C
1С v8
Печать документа
0 BuHHu_l7yx
 
05.10.11
10:44
Всем добрый день!
Прошу помощи в разъяснении, как работает метод ПроверитьПрисоединение у табличного документа.
1 BuHHu_l7yx
 
05.10.11
10:47
извиняюсь, случайно нажал на ctrl-enter

Пытаюсь вывести на печать многострочный документ с большим количеством колонок. Необходима проверка на то, чтобы документ помещался по ширине, если нет - разбивать страницы по ширине.
Ниже привожу код.
ОбластьШапкаНоменклатура.Параметры.ДатаЗаявки = Дата;
   ТД.Вывести(ОбластьШапкаНоменклатура);
   СпК = СписокКонтрагентов.Получить();
   //массив вывода
   МассивВыводимыхОбластей = Новый Массив;
   //вывод шапки
   Для Сч=0 По СпК.Количество()-1 Цикл
       ОбластьШапкаКонтрагент.Параметры.Контрагент = СпК.Получить(Сч).Значение;
       МассивВыводимыхОбластей.Очистить();
       МассивВыводимыхОбластей.Добавить(ОбластьШапкаКонтрагент);
       МассивВыводимыхОбластей.Добавить(ОбластьШапкаИтВ);
       Если НЕ ТД.ПроверитьПрисоединение(МассивВыводимыхОбластей) Тогда
           ТД.Присоединить(ОбластьШапкаИтВ);
           ТД.ВывестиВертикальныйРазделительСтраниц();
           ТД.Присоединить(ОбластьШапкаНоменклатура);
       КонецЕсли;
       ТД.Присоединить(ОбластьШапкаКонтрагент);
   КонецЦикла;    
   ТД.Присоединить(ОбластьШапкаИтВ);
   
   //итого по странице верт
   //инициализация
   Массив = Новый Массив(ТаблицаЗаявки.Количество());
   Для Сч=0 По Массив.Количество()-1 Цикл
       Массив[Сч] = 0;
   КонецЦикла;
   
   Для Каждого Стр Из ТаблицаЗаявки Цикл
       ОбластьСтрокаНоменклатура.Параметры.Номенклатура = Стр.Номенклатура;
       ТД.Вывести(ОбластьСтрокаНоменклатура);
       
       Для Каждого Знч Из СпК Цикл
           Если Знч.Значение = Справочники.Контрагенты.БелыйЯр Тогда
               ИмяКолонки = "БелыйЯр";
           Иначе
               ИмяКолонки = "Колонка_"+Знч.Значение.Код;
           КонецЕсли;    
           
           МассивВыводимыхОбластей.Очистить();
           МассивВыводимыхОбластей.Добавить(ОбластьСтрокаИтВ);
           МассивВыводимыхОбластей.Добавить(ОбластьСтрокаКонтрагент);
           Если НЕ ТД.ПроверитьПрисоединение(МассивВыводимыхОбластей) Тогда
               ОбластьСтрокаИтВ.Параметры.ИтогоВ = Массив[ТаблицаЗаявки.Индекс(Стр)];
               ТД.Присоединить(ОбластьСтрокаИтВ);
               ТД.ВывестиВертикальныйРазделительСтраниц();
               ТД.Присоединить(ОбластьСтрокаНоменклатура);
               Массив[ТаблицаЗаявки.Индекс(Стр)] = 0;
               
           КонецЕсли;    
           ОбластьСтрокаКонтрагент.Параметры.Количество = Стр[ИмяКолонки];
           ТД.Присоединить(ОбластьСтрокаКонтрагент);
           Массив[ТаблицаЗаявки.Индекс(Стр)] = Массив[ТаблицаЗаявки.Индекс(Стр)]+Стр[ИмяКолонки];
           
       КонецЦикла;    
   КонецЦикла;
   ОбластьСтрокаИтВ.Параметры.ИтогоВ = Массив[ТаблицаЗаявки.Индекс(Стр)];
   ТД.Присоединить(ОбластьСтрокаИтВ);
   ТД.Показать();

шапка выводится нормально, а вот строки криво. подскажите, в чем неправ. Заранее спасибо!
2 BuHHu_l7yx
 
05.10.11
11:32
up
3 BuHHu_l7yx
 
05.10.11
12:21
ап
4 BuHHu_l7yx
 
05.10.11
12:46
может неясно вопрос задал:
вот в этом куске кода
ОбластьШапкаНоменклатура.Параметры.ДатаЗаявки = Дата;
   ТД.Вывести(ОбластьШапкаНоменклатура);
   СпК = СписокКонтрагентов.Получить();
   //массив вывода
   МассивВыводимыхОбластей = Новый Массив;
   //вывод шапки
   Для Сч=0 По СпК.Количество()-1 Цикл
       ОбластьШапкаКонтрагент.Параметры.Контрагент = СпК.Получить(Сч).Значение;
       МассивВыводимыхОбластей.Очистить();
       МассивВыводимыхОбластей.Добавить(ОбластьШапкаКонтрагент);
       МассивВыводимыхОбластей.Добавить(ОбластьШапкаИтВ);
       Если НЕ ТД.ПроверитьПрисоединение(МассивВыводимыхОбластей) Тогда
           ТД.Присоединить(ОбластьШапкаИтВ);
           ТД.ВывестиВертикальныйРазделительСтраниц();
           ТД.Присоединить(ОбластьШапкаНоменклатура);
       КонецЕсли;
       ТД.Присоединить(ОбластьШапкаКонтрагент);
   КонецЦикла;    
   ТД.Присоединить(ОбластьШапкаИтВ);
все работает замечательно, происходит проверка на то,что влазит или нет очередная колонка по ширине и,если не влазит, вставляется разделитель вертикальный и присоединяется 1я колонка.
а вот в этом куске кода
Для Каждого Стр Из ТаблицаЗаявки Цикл
       ОбластьСтрокаНоменклатура.Параметры.Номенклатура = Стр.Номенклатура;
       ТД.Вывести(ОбластьСтрокаНоменклатура);
       
       Для Каждого Знч Из СпК Цикл
           Если Знч.Значение = Справочники.Контрагенты.БелыйЯр Тогда
               ИмяКолонки = "БелыйЯр";
           Иначе
               ИмяКолонки = "Колонка_"+Знч.Значение.Код;
           КонецЕсли;    
           
           МассивВыводимыхОбластей.Очистить();
           МассивВыводимыхОбластей.Добавить(ОбластьСтрокаИтВ);
           МассивВыводимыхОбластей.Добавить(ОбластьСтрокаКонтрагент);
           Если НЕ ТД.ПроверитьПрисоединение(МассивВыводимыхОбластей) Тогда
               ОбластьСтрокаИтВ.Параметры.ИтогоВ = Массив[ТаблицаЗаявки.Индекс(Стр)];
               ТД.Присоединить(ОбластьСтрокаИтВ);
               ТД.ВывестиВертикальныйРазделительСтраниц();
               ТД.Присоединить(ОбластьСтрокаНоменклатура);
               Массив[ТаблицаЗаявки.Индекс(Стр)] = 0;
               
           КонецЕсли;    
           ОбластьСтрокаКонтрагент.Параметры.Количество = Стр[ИмяКолонки];
           ТД.Присоединить(ОбластьСтрокаКонтрагент);
           Массив[ТаблицаЗаявки.Индекс(Стр)] = Массив[ТаблицаЗаявки.Индекс(Стр)]+Стр[ИмяКолонки];
           
       КонецЦикла;    
   КонецЦикла;
   ОбластьСтрокаИтВ.Параметры.ИтогоВ = Массив[ТаблицаЗаявки.Индекс(Стр)];
   ТД.Присоединить(ОбластьСтрокаИтВ);

та же самая проверка не отрабатывает корректно и все колонки выводятся подряд так,как будто все влазят по ширине листа.Хотя на самом деле это не так. Если кто сталкивался с подобным выводом на печать, подскажите, как сделать проверку.
5 BuHHu_l7yx
 
05.10.11
13:28
неужели никто никогда не печатал столь широкие документы?((
6 BuHHu_l7yx
 
05.10.11
14:42
ап
7 BuHHu_l7yx
 
06.10.11
07:57
up
8 BuHHu_l7yx
 
06.10.11
13:55
последний ап
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший