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


Шаблон печати

Шаблон печати

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

#1 Zver

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

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

Отправлено 14 Июнь 2012 - 10:38

Прошу помощи (разъяснения) в создании шаблона
Пример:
Есть 3 таблицы

Смета (Заказчик, площадь)
Материалы (Смета_ID, Наименование_ID, Кол-во)
Список_материалов (Наименование, Цена_закупки, Цена_продажи)

Создаю шаблон печати для таблицы Смета.
Как мне в шаблон вставить поле {Список_материалов.Цена_закупки} и {Список_материалов.Цена_продажи}?

#2 CbCoder

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

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

Отправлено 14 Июнь 2012 - 10:51

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

#3 Zver

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

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

Отправлено 14 Июнь 2012 - 11:00

... или придется использовать тег {php} smarty?

Т.е. можно исправить на утверждение :-)

Придется использовать тег {php} smarty!

Сообщение отредактировал Zver: 14 Июнь 2012 - 11:04


#4 Zver

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

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

Отправлено 14 Июнь 2012 - 11:26

Но вот незадача... Как же теперь узнать Наименование_ID если в него сохраняется Наименование?

#5 CbCoder

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

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

Отправлено 14 Июнь 2012 - 12:30

Просмотр сообщенияZver (14 Июнь 2012 - 11:26) писал:

Как же теперь узнать Наименование_ID если в него сохраняется Наименование?
? Что за "Наименование_ID"? Это имя поля такое?

#6 Zver

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

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

Отправлено 21 Июнь 2012 - 08:37

Новый вопрос, но все на тему шаблонов.
Задача: Необходимо напечатать реестр платежей.

Решение: Для этого создал шаблон печати (HTML)
Заголовок:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Счет</title>
<link rel="stylesheet" type="text/css" href="{$config.site_root}/forms/style.css">
<style>
ВЫРЕЗАНО
</style>
</head>
<body>
{assign var="total" value="0"}{assign var="count" value="0"}
<table style="border-collapse:collapse;">
<thead>
<tr><td>Сотрудник</td><td>Назначение платежа</td>
<td>Поставщик</td><td>Документ основание</td><td>Общая сумма</td><td>Дата оплаты</td></tr>
</thead><tbody>

Тело:
<tr>
<td>{$Sotrudnik}</td><td>{$Vid_pokupki_uslugi}</td>
<td>{$Nazvanie_prodavca_predostavlyayuschego_produkciyu_uslugu}</td>
<td>{$Obosnovyvayuschiy_dokument}</td><td class="s1">{$Obschaya_summa}</td>
<td>{$Vremya_oplaty|date_format:"%d.%m.%Y"}</td>
</tr>

Подвал:
</tbody></table>
<p><b>Итого {$count} платежей на сумму {$total}</b></p>
</body></html>

Проблема: Не могу понять как можно посчитать кол-во записей и итоговую сумму. Т.к. переменные (ИМХО) не переносятся м-у шаблонами.

#7 Zver

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

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

Отправлено 21 Июнь 2012 - 09:04

Только опубликовал пост, сразу же посетила идея. :-)))
Итак, привожу решение моей проблемы (может кому еще пригодится)

в шапке добавляем
{php}
// Объявляем глобальные переменные
global $total, $count;
$total = 0;
$count = 0;
{/php}

в теле
{php}
global $smarty, $total, $count;
$ss = $smarty->getTemplateVars('Obschaya_summa');
$total += $ss;
$count++;
{/php}

ну и в подвале
{php}
global $smarty, $total, $count;
$smarty->assign("total", $total);
$smarty->assign("count", $count);
{/php}


#8 CbCoder

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

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

Отправлено 21 Июнь 2012 - 09:43

Для вашей задачи никаких специальных переменных добавлять необходимости нет. Итоговая сумма уже есть в списке переменных (если в настройках поля включено "считать итоговую сумму"), количество записей тоже можно вывести через переменную "* Номер строки *" - в подвале она будет в точности равна количеству выбранных записей. Для того и создавался "подвал шаблона", чтобы выводить итоги, и необходимые переменные (такие часто используемые, как сумма и количество) уже предусмотрены самой программой.

#9 Zver

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

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

Отправлено 21 Июнь 2012 - 10:58

С итоговой суммой понял. Не понял что надо сделать что бы получить количество.

Сообщение отредактировал Zver: 21 Июнь 2012 - 11:10


#10 CbCoder

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

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

Отправлено 21 Июнь 2012 - 11:47

Просто вставьте в подвал переменную {$_NumberOfRecord}. Она есть в списке полей, в самом начале списка, по русски "* Номер строки *", но в подвал ее можно только скопировать или вручную прописать. Как я уже сказал, в подвале эта переменная будет выдавать последний номер, т.е. как раз количество выбранных записей.

#11 arsenal

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

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

Отправлено 13 Август 2012 - 07:54

Есть подчиненная таблица "Приложения к договору", которая выводится в шаблоне печати через цикл "foreach". Но проблема в том, что приложения могут создаваться в произвольном порядке, при этом включена опция "сортировать по полю "Номер приложения". Но при выводе на печать список приложений выводится в порядке их создания. Есть ли какой-то способ распечатывать их в правильном порядке?

#12 Гость_Roman_*

  • Гости

Отправлено 13 Август 2012 - 08:25

Думаю, на данный момент нет. Но это явно требует доработки.

#13 arsenal

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

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

Отправлено 31 Август 2012 - 16:53

Если вставить в шаблон печати подтаблицу, то она вставляется с циклом {foreach}. Но если скопировать сам цикл и вставить его без таблицы (нужно перебрать значения определенного поля подтаблицы и вывести его по ходу текста), то HTML-редактор отключается. В чем может быть дело?
Задача следующая. Есть шаблон договора и приложения к нему. Приложения сделаны как подтаблица к договору. Набор приложений может быть разный. По тексту договора должны быть фразы типа "Сроки выполнения работ определяются графиком работ в приложении №ХХ". Но приложения с графиком может и не быть или номер ХХ этого приложения может меняться. Поэтому хотел вставить в шаблон цикл, который бы перебирал приложения и, если есть такое приложения, то вставлял бы в текст эту фразу с соответствующим номером.

#14 CbCoder

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

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

Отправлено 01 Сентябрь 2012 - 11:52

Цитата

Но если скопировать сам цикл и вставить его без таблицы, то HTML-редактор отключается. В чем может быть дело?

Текущий HTML-редактор не поддерживает smarty-тэги.





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

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