Перейти к содержимому


Как в RTF вывести позиции счета?


Сообщений в теме: 9

#1 aolin

    Активный участник

  • Пользователи
  • PipPipPip
  • 41 сообщений

Отправлено 24 Ноябрь 2010 - 01:31

Здравствуйте.
Как заполнить шаблон RTF чтобы в нем выводилось несколько позиций счета (несколько строк), как в html версии стандартного щаблона счета?
Как организовать цикл и где все это нужно сделать?
Спасибо.

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 24 Ноябрь 2010 - 09:53

К сожалению мы пока не нашли приемлимого способа организации цикла в RTF шаблонах. Для вывода нескольких позиций из подтаблиц необходимо воспользоваться html шаблоном.

#3 jazvenko

    Активный участник

  • Пользователи
  • PipPipPip
  • 224 сообщений

Отправлено 24 Ноябрь 2010 - 14:23

Сделайте вывод в PDF или конвертацию HTML в PDF. Очень не удобно пользоваться HTML. Во первых отображение/печать в разных браузерах, Во вторых печать сразу нескольких документов, несколькими листами невозможна так как постоянно листы съезжают и печатаются неправильно.

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 24 Ноябрь 2010 - 14:33

В принципе ничто не мешает вам сохранить документ html и затем самостоятельно перевести его в нужный формат.

#5 aolin

    Активный участник

  • Пользователи
  • PipPipPip
  • 41 сообщений

Отправлено 24 Ноябрь 2010 - 22:29

есть мысль но не знаю как реализовать:
1. Получаем список позиций счета - таблица (№ п/п, наименование, ед.изм., кол-во, цена, стоимость и т.д.)
2. Создаются переменные-массивы содержащие информацию по каждому столбцу
$num (все позиции столбца №), $name (все позиции столбца наименование) и т.д. ИЛИ
(что ускорит работу) переменные содержащие информацию по столбцу в одной строке (строковой переменной) с символами перехода на новую строку (для RTF файла) между значениями примерно так
$str1 = "1"+переход+"2"+переход+ и т.д.
$str2 = "Молоток"+переход+"Кувалда"+ и т.д.
переход - служебный символ перехода курсора на новую строку
3. А уже эти созданные нами переменные прописать в шаблон RTF где они будут отображаться в соответствующих столбцах таблицы.
Можно ли реализовать? И как это сделать?

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 25 Ноябрь 2010 - 11:16

Чуть выше я уже писал что в RTF пока не реализована поддержка подтаблиц, т.к. нет механизма организации циклов. Поэтому позиции счета (произвольное число строк) вы не вставите. Все переменные вставляемые в RTF документ, должны быть полями вашей таблицы.

#7 aolin

    Активный участник

  • Пользователи
  • PipPipPip
  • 41 сообщений

Отправлено 25 Ноябрь 2010 - 22:57

А цикл организовывается до RTF. Как я это вижу:
Создаем таблицу для хранения результатов (Все переменные вставляемые в RTF документ, должны быть полями вашей таблицы.)
Итак Есть шесть строк (условно) в счете. Внутри Клиента организовать цикл можно?
Помещаем в первое поле нашей таблицы все значения с номерами позиций через символ переноса курсора на новую строку.
На выходе наша таблица будет содержать одну строку, поля которой будут заполнены так:
поле Номер(1"//n"2"//n"3"//n"4"//n"5"//n"6"//n") (простите за мой французский - с языками программирования постоку-поскоку) ведь если это поле поместить в переменную, а переменную в РТФ в таблицу которую мы заблаговременно создали в нем, то получится (мне кажется должно сработать :)) что цифры будут располагаться на разных строках (что нам и нужно), в соседний столбец - переменную содержащую значения второго столбца через служебный символ переноса и т.д.
Должно получится что то в РТФ наподобие:
1/n | Молоток/n |
2/n | Дюбель/n |
3/n | Трос/n |
4/n | ....... и т.д.
5/n |
6 |
А сивол переноса, который мы заблаговременно вставили, В РТФ перенесет каждое следующее значение на новую строку ...
Может получится? :))))
P/S/ в выходной табличке /n - символ переноса каретки (условно).

#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 26 Ноябрь 2010 - 11:06

Да в том то и дело что не получится у Вас так. При выводе нескольких полей, особенно если у вас не просто выводятся значения, а скажем внутри таблицы (что вы собственно и хотите), вам необходимо будет вставить и закодировать дополнительную информацию в формате RTF. В принципе если вы готовы самостоятельно изучить этот формат и написать соответствующее вычисляемое поле - то конечно на здоровье. Но это не вариант для большиства обычных пользователей.

#9 kok

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 15 Февраль 2011 - 12:18

Всё больше склоняюсь к использованию RTF (DOC) формата для отчётов (печатных форм), осталось только реализовать в нём циклы и таблицы.
Вот средство для этого: PHPRtfLite is an API enabling developers to create rtf documents with php. PHPRtfLite is designed on OOP principles. http://sourceforge.n...rojects/phprtf/
phprtf

А кстати, в ODF или DOC шаблонах печати можно создавать циклы и таблицы?
*Свободный программер.

#10 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Февраль 2011 - 12:23

Просмотр сообщенияkok (15.2.2011, 12:18) писал:

А кстати, в ODF или DOC шаблонах печати можно создавать циклы и таблицы?
Нет, циклы реализованы только для шаблонов формата "текст" и "html", т.к. они пишутся на Smarty.

За ссылку спасибо, ознакомимся.





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных