Имя: Пароль:
1C
1С v8
v8: Как в табличном документе на каждой странице внизу вывести область
0 Zaika333
 
24.11.11
20:41
Здраствуйте, есть таб документ надо на каждой странице при выводе на печать внизу вывести област (табличку типо лист изм, ответст, и т.д.) , количество строк на странице сосчитать проктичести не возможно  они зависят от группировок в запросе, пробую  Таб.ПовторятьПриПечатиСтроки = Таб.Область("R7") ничего не выходить помогите пож-та))
1 KarpovDeniska
 
24.11.11
22:36
(0) колонтитулы тебя спасут
2 KarpovDeniska
 
24.11.11
22:39
3 Zaika333
 
24.11.11
22:49
Спасибо конечно но в колонтитулах у меня № листа из листов и дата, а мне надо поместить штампик из 3 строчек который потом будут заполнять ручками
4 KarpovDeniska
 
24.11.11
23:06
5 KarpovDeniska
 
24.11.11
23:07
(0) поиск не работает?
6 Zaika333
 
26.11.11
17:45
вот как у меня написано, но не работает кол-ты есть а подвала как не было так и нет что не так то?
ТабДокумент.ВерхнийКолонтитул.Выводить = Истина;
     ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 1;
     ТабДокумент.ВерхнийКолонтитул.ТекстСправа = "СТО 231-2010 Приложение П 070.124";
     ТабДокумент.НижнийКолонтитул.Выводить = Истина;
     ТабДокумент.НижнийКолонтитул.НачальнаяСтраница = 1;
     ТабДокумент.НижнийКолонтитул.ТекстСправа = "Лист [&НомерСтраницы] Листов [&СтраницВсего] ";
     ТабДокумент.НижнийКолонтитул.ТекстСлева =  "[&Дата]"+"       " + ОбъектНормирования;
     
     ТабДокумент.ПовторятьПриПечатиСтроки = ТабДокумент.Вывести(ОбластьМакетаПодвал);
   
   ТабДокумент.Показать();
7 kosts
 
26.11.11
18:25
(0) 1. Сделать все области одинаковой высоты. Соответственно можно расчитать, когда нужно выводить подвал.
2. Хитро использовать ПроверитьВывод. Проверку делать области состоящей из подвала и предыдущей строки. Если входит, то выводим строку, не входит выводим подвал и выводим горизонтальный разделитель.
8 Zaika333
 
26.11.11
19:21
написала так , но выходит только на последней странице(((((
 ТабДокумент.ВерхнийКолонтитул.Выводить = Истина;
     ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 1;
     ТабДокумент.ВерхнийКолонтитул.ТекстСправа = "СТО 231-2010 Приложение П 070.124";
     ТабДокумент.НижнийКолонтитул.Выводить = Истина;
     ТабДокумент.НижнийКолонтитул.НачальнаяСтраница = 1;
     ТабДокумент.НижнийКолонтитул.ТекстСправа = "Лист [&НомерСтраницы] Листов [&СтраницВсего] ";
     ТабДокумент.НижнийКолонтитул.ТекстСлева =  "[&Дата]"+"       " + ОбъектНормирования;
     
     //ТабДокумент.ПовторятьПриПечатиСтроки = ТабДокумент.Вывести(ОбластьМакетаПодвал);
     
     Если Не ТабДокумент.ПроверитьВывод(ТабДокумент) тогда
         ТабДокумент.Вывести(ОбластьМакетаПодвал);
         ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
     КонецЕсли;

     
   ТабДокумент.Показать();
9 kosts
 
26.11.11
19:48
(8) Нужно вставить не в конце, а в цикле вывода.
И примерно так
Если Не ТабДокумент.ПроверитьВывод(ОбластьСостоящаяИзПредыдущейСтрокиИПодвала) тогда
Иначе
КонецЕсли;
Тут нужно продумать, что бы наверное подвал был такой же высоты что и предыдущая область.
10 Zaika333
 
26.11.11
19:50
Да я тоже уже об этом подумала, но вот только как это сделать цикл то не один и области разные((
Макет =  ПолучитьМакет("Макет");
   
   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СпецНормы";

   // Зададим параметры макета по умолчанию
   ТабДокумент.ПолеСверху              = 10;
   ТабДокумент.ПолеСлева               = 20;
   ТабДокумент.ПолеСнизу               = 10;
   ТабДокумент.ПолеСправа              = 10;
   ТабДокумент.РазмерКолонтитулаСверху = 15;
   ТабДокумент.РазмерКолонтитулаСнизу  = 15;
   ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Ландшафт;

   ОбластьМакетаЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакетаРаздел = Макет.ПолучитьОбласть("Раздел");
   ОбластьМакетаГруппа = Макет.ПолучитьОбласть("Группа");
   ОбластьМакетаПодгруппа = Макет.ПолучитьОбласть("Подгруппа");
   ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьМакетаИтоги = Макет.ПолучитьОбласть("Итоги");
   ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
   ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
   //ОбластьМакетаСТО = Макет.ПолучитьОбласть("СТО"));

   ОбластьМакетаЗаголовок.Параметры.ЗаголовокТекст = "Ведомость специфицированных норм расхода на изделие " + ОбъектНормирования.Наименование;
   ТабДокумент.Вывести(ОбластьМакетаЗаголовок);
   
   ТабДокумент.Вывести(ОбластьМакетаШапка);
   
   
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ku_СоставИзделияСрезПоследних.КодШифратора.Раздел КАК Раздел,
       |    ku_СоставИзделияСрезПоследних.КодШифратора.Группа КАК Группа,
       |    ku_СоставИзделияСрезПоследних.КодШифратора.Подгруппа КАК Подгруппа,
       |    ku_СоставИзделияСрезПоследних.КодШифратора,
       |    ku_СоставИзделияСрезПоследних.Подразделение,
       |    СУММА(ku_СоставИзделияСрезПоследних.Количество) КАК Количество,
       |    СУММА(ku_СоставИзделияСрезПоследних.Норма1) КАК Норма1,
       |    СУММА(ku_СоставИзделияСрезПоследних.Норма2) КАК Норма2,
       |    СУММА(ku_СоставИзделияСрезПоследних.Норма3) КАК Норма3,
       |    СУММА(ku_СоставИзделияСрезПоследних.Вес) КАК Вес,
       |    СУММА(ku_СоставИзделияСрезПоследних.КИМ) КАК КИМ
       |ИЗ
       |    РегистрСведений.ku_СоставИзделия.СрезПоследних КАК ku_СоставИзделияСрезПоследних
       |ГДЕ
       |    ku_СоставИзделияСрезПоследних.ОбъектНормирования = &ОбъектНормирования
       |
       |СГРУППИРОВАТЬ ПО
       |    ku_СоставИзделияСрезПоследних.КодШифратора.Раздел,
       |    ku_СоставИзделияСрезПоследних.КодШифратора.Группа,
       |    ku_СоставИзделияСрезПоследних.КодШифратора.Подгруппа,
       |    ku_СоставИзделияСрезПоследних.КодШифратора,
       |    ku_СоставИзделияСрезПоследних.Подразделение
       |ИТОГИ ПО
       |    Раздел,
       |    Группа,
       |    Подгруппа
       |АВТОУПОРЯДОЧИВАНИЕ";

   Запрос.УстановитьПараметр("ОбъектНормирования", ОбъектНормирования);

   Результат = Запрос.Выполнить();

   ВыборкаКодШифратораРаздел = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

   Пока ВыборкаКодШифратораРаздел.Следующий() Цикл
       Если ВыборкаКодШифратораРаздел.Раздел <> NULL тогда
           // Вставить обработку выборки ВыборкаКодШифратораРаздел
           ОбластьМакетаРаздел.Параметры.Раздел = ВыборкаКодШифратораРаздел.Раздел.Наименование;
           ТабДокумент.Вывести(ОбластьМакетаРаздел);
           //
           Если Не ТабДокумент.ПроверитьВывод(ОбластьМакетаРаздел) тогда
               ТабДокумент.Вывести(ОбластьМакетаПодвал);
               ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
           КонецЕсли;

           //
       КонецЕсли;
       ВыборкаКодШифратораГруппа = ВыборкаКодШифратораРаздел.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

       Пока ВыборкаКодШифратораГруппа.Следующий() Цикл
           // Вставить обработку выборки ВыборкаКодШифратораГруппа
           Если ВыборкаКодШифратораГруппа.Группа <> NULL тогда
               ОбластьМакетаГруппа.Параметры.Группа          = ВыборкаКодШифратораГруппа.Группа.Наименование;
               ОбластьМакетаИтоги.Параметры.ИтогоГруппа1      = ВыборкаКодШифратораГруппа.Норма1;
               ОбластьМакетаИтоги.Параметры.ИтогоГруппа2     = ВыборкаКодШифратораГруппа.Норма2;
               ОбластьМакетаИтоги.Параметры.ИтогоГруппа3     = ВыборкаКодШифратораГруппа.Норма3;
               ОбластьМакетаИтоги.Параметры.ВсегоНаИзделияГр = ВыборкаКодШифратораГруппа.Количество;
               ОбластьМакетаИтоги.Параметры.ЧистВесГр        = ВыборкаКодШифратораГруппа.Вес;
               ОбластьМакетаИтоги.Параметры.КИМГр            = ВыборкаКодШифратораГруппа.КИМ;
               ТабДокумент.Вывести(ОбластьМакетаГруппа);
           Конецесли;
           ВыборкаКодШифратораПодгруппа = ВыборкаКодШифратораГруппа.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

           Пока ВыборкаКодШифратораПодгруппа.Следующий() Цикл
               // Вставить обработку выборки ВыборкаКодШифратораПодгруппа
               Если ВыборкаКодШифратораПодгруппа.Подгруппа <> NULL тогда
                   ОбластьМакетаПодгруппа.Параметры.Подгруппа           = ВыборкаКодШифратораПодгруппа.Подгруппа.Наименование;
                   ОбластьМакетаПодгруппа.Параметры.ИотогоПодгр1        = ВыборкаКодШифратораПодгруппа.Норма1;
                   ОбластьМакетаПодгруппа.Параметры.ИотогоПодгр2        = ВыборкаКодШифратораПодгруппа.Норма2;
                   ОбластьМакетаПодгруппа.Параметры.ИотогоПодгр3        = ВыборкаКодШифратораПодгруппа.Норма3;
                   ОбластьМакетаПодгруппа.Параметры.ВсегоНаИзделияПодгр = ВыборкаКодШифратораПодгруппа.Количество;
                   ОбластьМакетаПодгруппа.Параметры.ВесПодгр            = ВыборкаКодШифратораПодгруппа.Вес;
                   ОбластьМакетаПодгруппа.Параметры.КИМПодгр            = ВыборкаКодШифратораПодгруппа.КИМ;
                   ТабДокумент.Вывести(ОбластьМакетаПодгруппа);
                   ТабДокумент.Вывести(ОбластьМакетаИтоги);
               КонецЕсли;
               ВыборкаДетальныеЗаписи = ВыборкаКодШифратораПодгруппа.Выбрать();

               Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                   // Вставить обработку выборки ВыборкаДетальныеЗаписи
                   ОбластьМакетаСтрока.Параметры.Цех          = ВыборкаДетальныеЗаписи.Подразделение;
                   ОбластьМакетаСтрока.Параметры.Наименование = ВыборкаДетальныеЗаписи.КодШифратора.Наименование;
                   ОбластьМакетаСтрока.Параметры.ЕдИзм        = ВыборкаДетальныеЗаписи.КодШифратора.ЕдиницаИзмерения;
                   ОбластьМакетаСтрока.Параметры.Марка        = ВыборкаДетальныеЗаписи.КодШифратора.Марка;
                   ОбластьМакетаСтрока.Параметры.Шифр         = ВыборкаДетальныеЗаписи.КодШифратора.Код;
                   ОбластьМакетаСтрока.Параметры.ГОСТ         = ВыборкаДетальныеЗаписи.КодШифратора.ГОСТ;
                   ОбластьМакетаСтрока.Параметры.Размер       = ВыборкаДетальныеЗаписи.КодШифратора.Размер;
                   ОбластьМакетаСтрока.Параметры.Норма1       = ВыборкаДетальныеЗаписи.Норма1;
                   ОбластьМакетаСтрока.Параметры.Норма2       = ВыборкаДетальныеЗаписи.Норма2;
                   ОбластьМакетаСтрока.Параметры.Норма3       = ВыборкаДетальныеЗаписи.Норма3;
                   ОбластьМакетаСтрока.Параметры.Количество   = ВыборкаДетальныеЗаписи.Количество;
                   ОбластьМакетаСтрока.Параметры.Вес          = ВыборкаДетальныеЗаписи.Вес;
                   ОбластьМакетаСтрока.Параметры.КИМ          = ВыборкаДетальныеЗаписи.КИМ;
                   ТабДокумент.Вывести(ОбластьМакетаСтрока);

                   
               КонецЦикла;
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;
     
     ТабДокумент.Вывести(ОбластьМакетаПодвал);
           
     ТабДокумент.ВерхнийКолонтитул.Выводить = Истина;
     ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 1;
     ТабДокумент.ВерхнийКолонтитул.ТекстСправа = "СТО 231-2010 Приложение П 070.124";
     ТабДокумент.НижнийКолонтитул.Выводить = Истина;
     ТабДокумент.НижнийКолонтитул.НачальнаяСтраница = 1;
     ТабДокумент.НижнийКолонтитул.ТекстСправа = "Лист [&НомерСтраницы] Листов [&СтраницВсего] ";
     ТабДокумент.НижнийКолонтитул.ТекстСлева =  "[&Дата]"+"       " + ОбъектНормирования;
     
     //ТабДокумент.ПовторятьПриПечатиСтроки = ТабДокумент.Вывести(ОбластьМакетаПодвал);
     
     Если Не ТабДокумент.ПроверитьВывод(ОбластьМакетаПодвал) тогда
         ТабДокумент.Вывести(ОбластьМакетаПодвал);
         ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
     КонецЕсли;

     
   ТабДокумент.Показать();
11 Zaika333
 
26.11.11
19:52
(9) подскажите как захватить предыдущую строку?
12 Шапокляк
 
26.11.11
20:09
(11) а так не получится?
....
перед
                   ТабДокумент.Вывести(ОбластьМакетаСтрока);
добавить кусочек:

ТД=Новый ТабличныйДокумент;
ТД.Вывести(ОбластьМакетСтрока);
ТД.Вывести(ОбластьМакетПодвал);
Если Не ТабДокумент.ПроверитьВывод(ТД) Тогда
         ТабДокумент.Вывести(ОбластьМакетаПодвал);
         ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
13 Zaika333
 
26.11.11
20:26
пишет что Переменная не определена (ОбластьМакетСтрока)
                       ТД.Вывести(ТабДокумент.Вывести(<<?>>ОбластьМакетСтрока)); (Проверка: Толстый клиент (обычное приложение))
14 Zaika333
 
26.11.11
20:29
ой извините не заметила свою ошибку)), работает только последняя стока подвала уходит на след стр или просто со скакивает
15 Шапокляк
 
26.11.11
20:32
(14) да это мой ляп. Я бы тогда вот что сделала в (12)
вместо
ТД=Новый ТабличныйДокумент;
ТД.Вывести(ОбластьМакетСтрока);
ТД.Вывести(ОбластьМакетПодвал);

написать
ТД=Новый ТабличныйДокумент;
ТД.Вывести(ОбластьМакетСтрока);
ТД.Вывести(ОбластьМакетСтрока);//2 строчки проверять, короче
ТД.Вывести(ОбластьМакетПодвал);
16 Шапокляк
 
26.11.11
20:33
ОбластьМакетАСтрока, сорри
17 Zaika333
 
26.11.11
20:42
Спасибо Вы лучшая, получается))) а то я тут два дня уже парюсь!))
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший