Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Постраничный вывод отчета (число прочтений - 8102 )
Александр C
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 09. Февраля 2015
Постраничный вывод отчета
09. Февраля 2015 :: 11:41
Печать  
Добрый день! В отчете (ТТН с приложением) необходимо, чтобы в конце страницы содержалась некоторая область, которая бы сообщала информацию "Итого по странице": Количество, Стоимость, Сумма НДС. Как это можно реализовать с помощью ВК FormEx? т.к. стандартными средствами 1с 7.7 при автоматической высоте строки невозможно узнать границу страницы...


Вот как я пытаюсь делать: ВК FormEx подключил. Через Сервис.ВысотаСтрокиТаблицы(Таб, ном, 1) могу определить где низ страницы, но тут проблема метод работает только для таблиц, которые уже выведены на экран методом Показать(). Хорошо. Пытаюсь спрятать таблицу Сервис.ПрятатьТаблицу(Таб,1); чтоб вывести в нужном месте свою секцию и перевести весь остальной кусок на следующую страницу Таб.ВывестиСекцию("Подвал"); Таб.НоваяСтраница(); ну и по концовке показываю таблицу Сервис.ПрятатьТаблицу(Таб,0); Но у меня разделитель в нужном месте а "Подвал" появляется в конце таблицы, а не перед разделителем… что я неправильно делаю?
« Последняя редакция: 10. Февраля 2015 :: 08:43 - Александр C »  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Постраничный вывод отчета
Ответ #1 - 10. Февраля 2015 :: 10:24
Печать  
штатно, можно в колонтитуле написать Страница #P из #Q
  
Наверх
 
IP записан
 
Александр C
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 09. Февраля 2015
Re: Постраничный вывод отчета
Ответ #2 - 10. Февраля 2015 :: 11:06
Печать  
Вопрос о другом, не о колонтитуле!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Постраничный вывод отчета
Ответ #3 - 10. Февраля 2015 :: 11:19
Печать  
формексом, делай так :
Код
Выбрать все
Функция ВысотаСекции(Секция) Экспорт
    Перем Строк, Высота, н;

    ВремТаб.Очистить();
    ВремТаб.ИсходнаяТаблица(ИмяФормы);
    ВремТаб.ВывестиСекцию(Секция);

    Строк = ВремТаб.ВысотаТаблицы();
    Высота = 0;
    Для н = 1 По Строк Цикл
	  Высота = Высота + оСервис.ВысотаСтрокиТаблицы(ВремТаб, н, 1);
    КонецЦикла;

    Возврат Высота * 1.03;
КонецФункции

где:
оСервис = СоздатьОбъект("Сервис");
©Sadovnikov 



  
Наверх
 
IP записан
 
Александр C
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 09. Февраля 2015
Re: Постраничный вывод отчета
Ответ #4 - 10. Февраля 2015 :: 11:33
Печать  
Опять не то о чём я спрашиваю  Печаль. То что Вы мне предложили возвращает общую высоту таблицы в миллиметрах. А мне надо вставлять в конце каждого листа промежуточные итоги по странице.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Постраничный вывод отчета
Ответ #5 - 10. Февраля 2015 :: 12:09
Печать  
И ?

Меряешь высоту выводимой секции, далее в цикле вывода смотришь, если влазиет на страницу +1, выводишь, если не влазиет - выводишь подвал... всё собственно

ЗЫ: высота секции определяется во временной Таблице, если че..
а в результирующую выводится по-условию на высоту.
  
Наверх
 
IP записан
 
Александр C
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 09. Февраля 2015
Re: Постраничный вывод отчета
Ответ #6 - 10. Февраля 2015 :: 12:19
Печать  
Об этой проблеме я и писал изначально в вопросе. Сервис.ВысотаСтрокиТаблицы(Таб, ном, 1) работает только после метода Таб.Показать(); Далее прячу таблицу и иду в низ таблицы чтоб вывести там свой "Подвал": Таб.ВывестиСекцию("Подвал"); и тут весь косяк в том, что этот подвал выводится в конце таблицы, а не в конце листа...
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Постраничный вывод отчета
Ответ #7 - 10. Февраля 2015 :: 12:27
Печать  
Мне на этот случай formex не подошел, переделал все печатные формы по аналогии с http://yoksel.net.ru/GotovyeReshenija/1S/TiS/TORG12 замедление на выкрутасы тут не существенно, все равно принтер печатает медленнее...

Резмер секции в йокселе считаю так:
Код
Выбрать все
Функция   ВысотаСекции(Секция)
	Перем ТабДок,Ширина,Высота;
	ТабДок = СоздатьОбъект ("ТабличныйДокумент");
	ТабДок.ЗагрузитьИзТаблицы(Секция);
	ТабДок.Область().РассчитатьРазмеры(Ширина,Высота);
	Возврат Высота;
КонецФункции
 



Хинт: макет печатной формы должен быть чуть больше чем при печати со 100% масштабом, иначе придется коэффициент масштабирования по вычислению высоты прикручивать.

upd: во влажаении счет-фактура на йокселе (коментарии по поводу ширины внутри обработки).
  

SF2012.zip ( 19 KB | Загрузки )
Наверх
www  
IP записан
 
Александр C
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 09. Февраля 2015
Re: Постраничный вывод отчета
Ответ #8 - 10. Февраля 2015 :: 12:46
Печать  
Djelf, спасибо, буду разбираться. Можешь dll-ку Yoksel выложить?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Постраничный вывод отчета
Ответ #9 - 10. Февраля 2015 :: 12:56
Печать  
На офф-сайте http://yoksel.net.ru/Hotfixes
Либо моя версия (во вложении), соответствует последеней, но добавлено чтение Excel 95 и две плюшки в ПараметрыПечати - ИмяДокумента и РежимПечатиКопий (0 - по-умолчанию, 1 - дуплекс).
  

SpreadSheet.zip ( 1513 KB | Загрузки )
Наверх
www  
IP записан
 
Александр C
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 09. Февраля 2015
Re: Постраничный вывод отчета
Ответ #10 - 10. Февраля 2015 :: 13:06
Печать  
Djelf, благодарю Вас! И если не затруднит можете написать код с комментариями  простого примера, как с помощью Yoksel в таблице
     Таб = СоздатьОбъект("Таблица");
     Таб.ИсходнаяТаблица("Пробник");
     Для н=1 По 200 Цикл
           Таб.ВывестиСекцию("Шапка");
     КонецЦикла;
в конце каждого листа выводить "Подвал"?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Постраничный вывод отчета
Ответ #11 - 10. Февраля 2015 :: 13:12
Печать  
Djelf писал(а) 10. Февраля 2015 :: 12:56:
добавлено чтение Excel 95


чегой-то 95 не читает, или там должен быть еще метод какой ?

ЗЫ:

Цитата:
Невозможно открыть файл: Неверный формат файла (Не найден поток "Workbook". Возможно, файл не является книгой Excel или книга Excel сохранена в устаревшем формате)



Работает однако, в каталоге с базой валялась еще одна библиотека..
за 95-спасибо!
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Постраничный вывод отчета
Ответ #12 - 10. Февраля 2015 :: 15:45
Печать  
Цитата:
за 95-спасибо!

4 годика уже патчу http://infostart.ru/public/75881/ (там без плющек для параметров печати лежит, да и патч то на 10 строк по этим плюшкам, что там выкладывать?).
ole доделывать не стал - импорт картинок не интересен, а вот импорт заказов из той же 1с 7.7 все еще актуален.

Цитата:
как с помощью Yoksel в таблице
в конце каждого листа выводить "Подвал"?

Ищи в обработке комментарий "Проверка необходимости новой страницы"
Ты плохо посмотрел обработку. Я даю фейковые значения для подвала, а потом измеряю высоту фейкового подвала!
Если подвал будет разным по высоте при выводе каждой страницы, что маловероятно, надо это учесть и как то переизмерять.
Потом "Шапка"+"Строки"+"Подвал" и откат вывода строки при переборе высоты.

Закомментируй все строки что с твоей конфигурацией не дружат и посмотри на результат.




  
Наверх
www  
IP записан
 
Александр C
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 09. Февраля 2015
Re: Постраничный вывод отчета
Ответ #13 - 11. Февраля 2015 :: 21:44
Печать  
Djelf, спасибо еще раз, разобрался!  Улыбка
  
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: Постраничный вывод отчета
Ответ #14 - 13. Ноября 2015 :: 06:03
Печать  
to Djelf:
с данной dll-кой SpreadSheet.dll
Появляется ошибка
Поле агрегатного объекта не обнаружено (РежимПечатиКопий)

Может версия не та? Выложите пожалуйста версию с данным параметром
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать