Имя: Пароль:
1C
1С v8
Проверить, умещается ли группировка на страницу, СКД.
0 iogann1691
 
06.02.17
14:04
Добрый день уважаемые.
Нужна помощь, сделал отчет на СКД, выводятся группировки по работнику (таблица расчетов), нужно определить, умещается ли таблица по работнику на странице и сделать разрыв.
P.S таблицы могут быть разного размера и могут быть и 3 и 4 штуки на листе.
Прошу помочь, как можно это определить в ПриКомпоновкеРезультата.
Заранее благодарен.
1 iogann1691
 
06.02.17
16:11
ХЕЕЕЛПП!
2 shamannk
 
06.02.17
16:14
Напиши лучше зачем тебе это.
3 iogann1691
 
06.02.17
16:24
(2) у меня идет отчет по работникам, у каждого работника есть какие то движения, выводится примерно как расчетные листки, вот надо определить, влезла ли у меня табличка по работнику на страницу или перенести на следующую
4 iogann1691
 
06.02.17
16:25
(3) но отчет на СКД
5 shamannk
 
06.02.17
16:25
(3) Само не переносится чтоли?
6 shamannk
 
06.02.17
16:27
7 iogann1691
 
06.02.17
16:29
(6) курил статью, но тут разрыв на каждую таблицу, а мне нужно вывести столько таблиц, сколько поместится, их может может быть N-ное количество
8 Начинающий Юзер
 
06.02.17
16:34
В ПриКомпоновкеРезультата() делать свой вывод отчета. В процессе вывода контролировать влезания на лист (как это обычно делается в печатных формах)
9 iogann1691
 
06.02.17
16:36
(8) вот это то я и делаю, вот только не получается, отсюда прошу помощи, как можно проконтролировать, влазиет ли на лист?
10 Начинающий Юзер
 
06.02.17
16:40
(9) Методы ПроверитьВывод(), ПроверитьПрисоединение() + выводить в свой макет. Да, коряво, но точно будет работать
11 iogann1691
 
06.02.17
16:42
(10) попробовал так
    ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ДокументРезультат.АвтоМасштаб = Истина;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
        
    ПроцессорВывода.НачатьВывод();
    
    ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновкиДанных.Следующий();
    Пока НЕ ЭлементРезультатаКомпоновкиДанных = Неопределено Цикл
        ПроцессорВывода.ВывестиЭлемент(ЭлементРезультатаКомпоновкиДанных);
        
        Если НЕ ДокументРезультат.ПроверитьВывод(ДокументРезультат) Тогда
            Если ЭлементРезультатаКомпоновкиДанных.Макет = "Макет6" Тогда
                ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
            КонецЕсли;  
        КонецЕсли;
        
        ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновкиДанных.Следующий();
    КонецЦикла;
    
     //СлужебныйПроцессорВывода.ЗакончитьВывод();
    ПроцессорВывода.ЗакончитьВывод();
Но не работает, разрезает как попало, где накосячил?
12 iogann1691
 
06.02.17
16:43
(10) Макет 6, это моя отбивка
13 Начинающий Юзер
 
06.02.17
17:08
(12) Посмотри в типовых как сделан вывод печатных форм (ТОРГ-12 например), а сейчас ты ерунду написал.

И скорее всего придется делать свой макет, вывод через ПроцессорВывода не прокатит
14 Начинающий Юзер
 
06.02.17
17:16
Алгоритм вывода должен быть следующий:
1. Набираешь области, которые должны влезать на один лист.
2. Проверяешь через ПроверитьВывод()
3. Если в п.2 влазят на лист - выводишь области из п.1 в табличный документ, иначе - вставляешь разрыв страницы и переходишь на новый лист
15 iogann1691
 
07.02.17
15:33
(14) сделал следующим образом, вывел результат СКД в таб док, одновременно заполнил другой (вспомогательный табдок), определил умещается ли на лист и вывел разделитель в результате.
16 iogann1691
 
07.02.17
15:40
(14) всем спасибо
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший