Имя: Пароль:
1C
1С v8
Отчет на скд. "Висящие" подписи
0 raytan
 
09.01.15
09:57
Есть работающий отчет на скд. Осталось настройка допилить всякие красивости. Не могу найти решение, чтобы избавится от "висящих" подписей. Т.е. подвал отрывается от основной таблицы. Пробовал в макете в СКД воспользоваться флагом "ВместеСоСледующим", почему то не получилось.
Ища информацию столкнулся с такой, что это уже реализовано ТОРГ-12.
1 zhig75
 
09.01.15
10:38
(0)Я нихрена не понял!
2 Chameleon1980
 
09.01.15
11:27
...подвал отрывается от основной таблицы...
сами макет не доделывали/переделывали?
3 djekting
 
09.01.15
11:31
скрин ласкаво просимо!
4 Chameleon1980
 
09.01.15
11:48
(3) + не помешает, а то я чет тоже не догнал что у кого оторвалось :)
5 raytan
 
09.01.15
12:05
Попробую лучше объяснить. Есть основная таблица, где выводятся данные: номенклатура, количество, цены и т.п. А ниже вывожу должность и место для подписи. Вот подписи при печати, если не хватает места на листе, выводятся на следующей странице. Нужно чтобы наследующую страницу переносилась последняя строчка с таблицы и итоги.
6 Chameleon1980
 
09.01.15
12:11
во как все повернулось
7 Hans
 
09.01.15
12:14
(5) помоему без написания кода этого сделать нельзя.
8 Chameleon1980
 
09.01.15
12:19
присоединяюсь.
и наверное с помощью (вроде бы):

ТабличныйДокумент (SpreadsheetDocument)
ПроверитьВывод (CheckPut)
9 raytan
 
09.01.15
12:22
код писать не страшно :)) Вопрос, что именно писать и где. Скорее всего надо постобработка табличного документа. Как ее сделать ? И что именно там смотреть?
На СКД отчет полностью рабочий, опять же макет настроен.
Я пробовал копать в сторону процессоравывода, но там непонятно как определить, что я сейчас вывожу. Вот такая засада
10 Chameleon1980
 
09.01.15
12:26
подписи где то же выводите
еще раз повторю - смотрите в сторону метода ПроверитьВывод (CheckPut)для табличного документа.


ТабличныйДокумент (SpreadsheetDocument)
ПроверитьВывод (CheckPut)
Синтаксис:

ПроверитьВывод(<Таблицы>)
Параметры:

<Таблицы> (обязательный)

Тип: Массив; ТабличныйДокумент.
Массив из проверяемых таблиц или табличный документ.
Возвращаемое значение:

Тип: Булево.
Истина - умещаются; Ложь - в противном случае.
Описание:

Проверяет, умещаются ли переданные табличные документы на страницу при печати.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

При возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение.
Пример:

Т.Добавить(ШапкаДокумента);
Т.Добавить(СтрокаДокумента);
Т.Добавить(ПодвалДокумента);
Если Не ТабДок.ПроверитьВывод(Т) Тогда
    Сообщить("Документ не умещается на страницу!");
КонецЕсли;
11 raytan
 
09.01.15
12:29
(8) Неплохо. Но сразу же  появился вопрос. А если таблица будет на 3 листа ? Тогда получается будет выдавать ЛОЖЬ, а на самом деле на последнем листе вполне все может помещаться ?
12 SeraFim
 
09.01.15
12:32
(5)в ЗУПе такой вариант везде используется
13 Chameleon1980
 
09.01.15
12:33
тока про типовые хотел намекнуть
смотрим, думаем, учимся
14 Chameleon1980
 
09.01.15
12:34
начинаем с глобального поиска ПроверитьВывод
хмм. наверное
15 SeraFim
 
09.01.15
12:34
(12) ай нет, поторопился. Печатные формы так делаются, но без СКД =)
16 Chameleon1980
 
09.01.15
12:36
для скд применимо имхо - только покумекать нужно
17 Chameleon1980
 
09.01.15
12:38
может кусок поможет (печать торг12 из ут10_3):

        Если Ном = 1 Тогда // первая срока
            
            ОбластьЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
            ТабДокумент.Вывести(ОбластьЗаголовокТаблицы);
            
        Иначе
            
            МассивВыводимыхОбластей.Очистить();
            МассивВыводимыхОбластей.Добавить(ОбластьМакета);
            МассивВыводимыхОбластей.Добавить(ОбластьИтоговПоСтранице);
            Если Ном = КоличествоСтрок Тогда
                МассивВыводимыхОбластей.Добавить(ОбластьВсего);
                МассивВыводимыхОбластей.Добавить(ОбластьПодвала);
            КонецЕсли;        
            
            Если Ном <> 1 И НЕ ТабДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
                
                ОбластьИтоговПоСтранице.Параметры.ИтогМассаБруттоПоСтранице = ИтогоМассаБруттоНаСтранице;
                ОбластьИтоговПоСтранице.Параметры.ИтогМестПоСтранице        = ИтогоМестНаСтранице;
                ОбластьИтоговПоСтранице.Параметры.ИтогКоличествоПоСтранице  = ИтогоКоличествоНаСтранице;
                ОбластьИтоговПоСтранице.Параметры.ИтогСуммыПоСтранице       = ИтогоСуммаНаСтранице;
                ОбластьИтоговПоСтранице.Параметры.ИтогНДСПоСтранице         = ИтогоНДСНаСтранице;
                ОбластьИтоговПоСтранице.Параметры.ИтогСуммыСНДСПоСтранице   = ИтогоСуммаСНДСНаСтранице;
                
                ТабДокумент.Вывести(ОбластьИтоговПоСтранице);
                
                // очистим итоги по странице
                ИтогоМассаБруттоНаСтранице = 0;
                ИтогоМестНаСтранице        = 0;
                ИтогоКоличествоНаСтранице  = 0;
                ИтогоСуммаНаСтранице       = 0;
                ИтогоНДСНаСтранице         = 0;
                ИтогоСуммаСНДСНаСтранице   = 0;
                
                НомерСтраницы = НомерСтраницы + 1;
                ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                ОбластьЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
                ТабДокумент.Вывести(ОбластьЗаголовокТаблицы);
                
            КонецЕсли;
            
        КонецЕсли;
18 raytan
 
09.01.15
12:39
Тогда еще вопрос. Получается мне надо переопределять метод "ПриКомпоновкеРезультата" и там пользоваться не процессоромвывода, а как то получать мои области из макета и выводить их?
19 Chameleon1980
 
09.01.15
12:50
блин. гугл потерялся?

http://1cskd.ru/2010/07/programmnyj-vyvod-otcheta/
http://www.cyberforum.ru/1c-standard/thread1211216.html

ну и подобные

я так понимаю изначально код писали не вы?

раз у вас с подписями отчет - вероятно, он уже программно выводится. Может для начала в код этого отчета глянем?
20 Chameleon1980
 
09.01.15
12:51
для какой конфы отчет?
дайте его уже посмотреть, если не секретный?
выложьте куда-нибудь
21 raytan
 
09.01.15
13:03
Все писал я. Он выводится не программно. Пока что во всяком случае. Эти ссылки я видел.
Мне не совсем понятно как тут http://1cskd.ru/2010/07/programmnyj-vyvod-otcheta/ прикрутить ПроверитьВывод() Если бы я создавал ручками запрос, получал таблицузначений и уже в цикле загонял ее в табдок, то я бы, используя метод ПроверитьВывод, мог бы вовремя вставить РазделительСтраниц (или как точно он называется). Но как прикрутить его к процессоруВывода мне не понятно.

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

ПроцессорВывода.НачатьВывод();
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Пока ЭлементРезультата <> Неопределено Цикл
        ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
ЭлементРезультата = ПроцессорКомпоновки.Следующий();    КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();

ВЭлементеРезультата я не вижу, что я выожу (((


Конфигурация разрабатывается самостоятельно.
22 raytan
 
09.01.15
13:11
Очень благодарен, что тратите свое время и пытаетесь помочь мне с моей задачкой. В любом случае спасибо :)
23 raytan
 
21.01.15
10:07
Возможно кому то будет полезно. Нашел решение своей проблемы. Постобработка табличного документа, еще до метода Показать().


ИмяОбласти = Результат.НайтиТекст("Итого").Имя;//Ищу подвал
ЧислоР = Сред(ИмяОбласти ,2, Найти(ИмяОбласти, "C")-2); //Из ИмяОбласти получаю номер строки
.....
ОбластьЯчеек = Результат.Область(ИмяСтроки); //Где ИмяСтроки представлено в формате "Rномерстрокиначало:Rномерстрокиконец"
ОбластьЯчеек.ВместеСоСледующим = Истина;