Имя: Пароль:
1C
1С v8
Использование метода "Вставить область".
,
0 Iceman_2008
 
01.01.12
17:37
Добрый вечер уважаемые знатоки 1С. Задался задачей сделать групповую печать Торг-12 не путем цикличного вывода областей, а за счет получения табличных документов и с использованием метода "Вставить область". Но вот затык получился. Получаешь область, вставляешь область из табличного документа с вертикальным смещением, а сдвига не происходит. Предлагаю кусок кода:

ВремОбласть = НоваяСтрока.ВремТаблица.Область(1,1,ТабДокумент.ВысотаТаблицы,ТабДокумент.ШиринаТаблицы);
                   НоваяСтрока.ВремТаблица.ВставитьОбласть(Табдокумент.Область(1,1,ТабДокумент.ВысотаТаблицы,ТабДокумент.ШиринаТаблицы),ВремОбласть,ТипСмещенияТабличногоДокумента.ПоВертикали);
                   НоваяСтрока.ВремТаблица.ВывестиГоризонтальныйРазделительСтраниц();

если кто сталкивался с проблемой, поделитесь что я не правильно делаю
1 Amiralnar
 
01.01.12
17:39
У меня сдвигалось. Как-то, я уже не помню.
А какую проблему вы решаете?
2 Amiralnar
 
01.01.12
17:40
К стати, попробуйте убрать правую и нижнюю границу:
...ВставитьОбласть(Табдокумент.Область(1,1,1,1...
3 Iceman_2008
 
01.01.12
17:44
ну я просто делаю групповую печать разных печатных форм, могу полный кусок модуля показать
4 Iceman_2008
 
01.01.12
17:44
пробовал одну внешнюю печатную форму, все нормально, но там расположение портрет а не ландшафт как у торг-12
5 Amiralnar
 
01.01.12
17:45
Для каких целей делается групповая печать в табдок? Почему не выводить на принтер?
6 Iceman_2008
 
01.01.12
17:50
ну привычка, всегда просматривать то что сформировалось
7 Iceman_2008
 
01.01.12
17:51
вся процедура так выглядит:
ТабПечФорм = Новый ТаблицаЗначений;
   ТабПечФорм.Колонки.Добавить("ПечатнаяФорма");
   ТабПечФорм.Колонки.Добавить("ВремТаблица");
   ОтборПоВиду = Новый Структура;
   Для Каждого СтрокаДокумента ИЗ ПечатныеФормы Цикл
       ОтборПоВиду.Вставить("ВидДокумента",СтрокаДокумента.ВидДокумента);
       НайденныеСтроки = ТабДокументов.НайтиСтроки(ОтборПоВиду);
       Если НайденныеСтроки.Количество() <> 0 Тогда
           НоваяСтрока = ТабПечФорм.Добавить();
           НоваяСтрока.ПечатнаяФорма = СтрокаДокумента.ПечатнаяФорма;
           НоваяСтрока.ВремТаблица = Новый ТабличныйДокумент;    
           Счетчик = 0;
           Для Каждого НайденнаяСтрока ИЗ НайденныеСтроки Цикл
               Счетчик = Счетчик +1;ТабДокумент = Новый ТабличныйДокумент;
               Если ТипЗнч(СтрокаДокумента.ПечатнаяФорма) = Тип("Строка") Тогда
                   КлючУникальности = НайденнаяСтрока.Ссылка.ПолучитьОбъект();
                   КлючУникальности.Печать(?(ТипЗнч(СтрокаДокумента.ПечатнаяФорма) = Тип("Строка"),СокрЛП(СтрокаДокумента.ПечатнаяФорма),СтрокаДокумента.ПечатнаяФорма),СтрокаДокумента.КоличествоЭкземпляров,Ложь);
                   ТабДокумент = КлючУникальности.ТекТабДокумент;
               Иначе
                   Расшифровка = Новый Структура;
                   Расшифровка.Вставить("ВидПечатнойФормы", СтрокаДокумента.ПечатнаяФорма.ВидОбработки);
                   Расшифровка.Вставить("ЗаменяемаяПечатнаяФорма", Неопределено);
                   Расшифровка.Вставить("НомерСтроки", 1);
                   Расшифровка.Вставить("СсылкаНаВнешнююОбработку",СтрокаДокумента.ПечатнаяФорма);
                   ТабДокумент = УниверсальныеМеханизмы.НапечататьВнешнююФорму(НайденнаяСтрока.Ссылка, Расшифровка);
                   ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
               КонецЕсли;
               ТабДокумент.Скрыть();
               Если Счетчик = 1 Тогда
                   НоваяСтрока.ВремТаблица = ТабДокумент;
               Иначе
                   //ВремОбласть = НоваяСтрока.ВремТаблица.Область(1,1,НоваяСтрока.ВремТаблица.ВысотаТаблицы,НоваяСтрока.ВремТаблица.ШиринаТаблицы);
                   ВремОбласть = НоваяСтрока.ВремТаблица.Область(1,1,ТабДокумент.ВысотаТаблицы,ТабДокумент.ШиринаТаблицы);
                   НоваяСтрока.ВремТаблица.ВставитьОбласть(Табдокумент.Область(1,1,ТабДокумент.ВысотаТаблицы,ТабДокумент.ШиринаТаблицы),ВремОбласть,ТипСмещенияТабличногоДокумента.ПоВертикали);
                   НоваяСтрока.ВремТаблица.ВывестиГоризонтальныйРазделительСтраниц();
               КонецЕсли;
           КонецЦикла;    
           НоваяСтрока.ВремТаблица.ОтображатьЗаголовки = Ложь;
           НоваяСтрока.ВремТаблица.ОтображатьСетку = Ложь;
       КонецЕсли;
   КонецЦикла;    
   
   Для Каждого СтрокаТаблицы ИЗ ТабПечФорм Цикл
       Если ТипЗнч(СтрокаТаблицы.ПечатнаяФорма) = Тип("Строка") Тогда
           СтрокаТаблицы.ВремТаблица.Показать(СокрЛП(СтрокаТаблицы.ПечатнаяФорма));
       Иначе    
           СтрокаТаблицы.ВремТаблица.Показать(СокрЛП(СтрокаТаблицы.ПечатнаяФорма.Наименование));
       КонецЕсли;
   КонецЦикла;
Программист всегда исправляет последнюю ошибку.