Имя: Пароль:
1C
1С v8
Как вывести шаблон в отчет?
0 Мисти
 
28.11.12
16:46
Всегда пользовалась только параметрами, с шаблонами у меня как-то не заладилось.
ОбластьМакета = Макет.ПолучитьОбласть("Подвал|Основа");    
ОбластьМакета.МояСумма=МояСумма;
ТабДокумент.Вывести(ОбластьМакета);
А теперь нужно, наверное, в шаблон!
Там хитрость такая - рассчитывается куча значений одновременно, а выводится только часть, которая отмечена галками при формировании - соответственно эти значения=переменные Заранее прописаны в таблице по колонкам и выводятся только те колонки, которым соответствуют галки.
В 7 это так:
       Таб.ВывестиСекцию("Подвал2|Основа");
       Для К = 1 По 14 Цикл
           Если СписокКолонок.Пометка(К) = 1 Тогда
               Стр = "Подвал2|Кол_"+К;
               Таб.ПрисоединитьСекцию(Стр);
           КонецЕсли;
       КонецЦикла;
1 Coldboy
 
28.11.12
16:47
скорее всего не хватает ОбластьМакета.Параметры.ВашПараметра = Нужное значение.
2 Мисти
 
28.11.12
16:47
А мне, с моим способом заполнять параметры - придется всё расписывать отдельно.
Думаю, что как раз если шаблон - то получится, что заполнять отдельно каждый реквизит не надо.
3 Coldboy
 
28.11.12
16:48
если в области есть ваш параметр, которую вы получаете. а щас у вас ошибка валится да?
4 Мисти
 
28.11.12
16:49
(1) Я это во 2 строчке написала, только с ошибкой
ОбластьМакета.Параметры.МояСумма=МояСумма;
Я так умею, но не хочу!
С шаблоном - как быть?
5 Coldboy
 
28.11.12
16:49
а стоп у вас шаблон. ну тоже самое через параметры. тока смотрите параметр в шаблоне должен биться по такому принципу:
"Текст шаблона с [Параметром]"
6 Coldboy
 
28.11.12
16:50
Аналогично тока в тексте шаблона параметр надо брать в [] такие скобки, чтобы брать значения. пробуйте.
7 Мисти
 
28.11.12
16:50
А чтобы не заполнять, а оно "как бы само" - как в 7, можно?
8 Мисти
 
28.11.12
16:51
(6) Это ценная мысль! А я просто целиком стала всё определять в модуле, а в таблице - только параметры оставила.
9 Coldboy
 
28.11.12
16:52
(7) кого не заполнять, попробуйте как я описал, ячейку шаблон сделайте, с параметром, а кодом автоматически его забивайте данными свой параметр в шаблоне.
10 Мисти
 
28.11.12
16:55
У меня рассчитано 30 разных значений (кол_1, кол_2 и т.д.), которые распределены некоторым образом по 14 колонкам.
В 7 печать выглядит
  Таб.ВывестиСекцию("Подвал2|Основа");
       Для К = 1 По 14 Цикл
           Если СписокКолонок.Пометка(К) = 1 Тогда
               Стр = "Подвал2|Кол_"+К;
               Таб.ПрисоединитьСекцию(Стр);
           КонецЕсли;
       КонецЦикла;
Вот так.
Если колонка выводится - то и отлично, значения уже в ней есть, а мне придется писать для каждой из 14 колонок отдельное заполнение.
11 Мисти
 
28.11.12
16:56
Какая-то еще есть процедура "заполнить", но я не очень понимаю, как она работает.
12 Мисти
 
28.11.12
16:57
К=0;
Пока Выборка.Следующий() Цикл
   К = К+1;
   ОбластьМакета = Макет.ПолучитьОбласть("Строка");
   ОбластьМакета.Параметры.Заполнить(Выборка);
   ОбластьМакета.Параметры.НомерСтроки = К;
   ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Нашла! Понятно, как работает, но непонятно, как использовать.
13 Мисти
 
28.11.12
17:00
Если у меня в ТЗ - все 30 колонок - я могу написать
ОбластьМакета.Параметры.Заполнить(ТЗ) и у меня заполняться только те 3 параметра, которые есть в колонке и в ТЗ.
Да?
14 Wobland
 
28.11.12
17:00
(13) да
15 Мисти
 
28.11.12
17:02
Уря! И обошлось без фото.
16 Coldboy
 
28.11.12
17:05
(15) всмысле?  а зачем 30 колонок, а заполнять тока 3?)
Можно тупо сделать так, если вдруг криво будет.
Для каждого строкаТЗ из ТЗ Цикл
ОбластьМакета.Параметры.Параметр1 = СтрокаТЗ.Кол1;
ОбластьМакета.Параметры.Параметр2 = СтрокаТЗ.Кол2;
ОбластьМакета.Параметры.Параметр3 = СтрокаТЗ.Кол3;
КонецЦикла;
17 Мисти
 
28.11.12
17:08
Тупо я знаю, хотелось красиво!
18 samozvanec
 
28.11.12
17:13
ОбластьМакета.Параметры.Заполнить(строкаТЗ); не предлагать?
19 samozvanec
 
28.11.12
17:14
(18) поторопился...
20 Мисти
 
28.11.12
17:53
(18) Спасибо!
21 Wobland
 
28.11.12
18:13
(20) спасибо на рабочий стол не положишь
22 Мисти
 
28.11.12
19:13
ВнешняяОбработка.ОтчетПоОбъекту.МодульОбъекта(183)}: Ошибка при вызове метода контекста (Заполнить)
               ОбластьМакета.Параметры.Заполнить(ТЗ);
по причине:
Несоответствие типов (параметр номер '1')

Ругается!
23 Wobland
 
28.11.12
19:14
(22) безобразие какое!
24 Wobland
 
28.11.12
19:14
какая из 2000 строк ТЗ имеется в виду?
25 Мисти
 
28.11.12
19:15
Так по моим понятиям, параметра№1 там и вовсе может не быть.
26 Wobland
 
28.11.12
19:15
(25) смени понятия и фото
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший