Приветствую!
Сначала фабула: существует основная таблица, назовем ее "Клиенты", и связанная - пусть будет "Принятые решения". В "Принятые решения" может быть несколько записей, строк. В свое время мною при любезной помощи сотрудников КБ был разработан шаблон печати, при котором в шаблоне печати отображалось значение из поля только первой сверху строки.
Выглядит это так:
{assign var="t" value=""} {foreach from=$Принятые решения name=foo item=subtable name=Принятые решения} {assign var="t" value="`$t+1`"} {if $t eq '1'} {$Принятые решения.Решение} {/if} {/foreach}
И все прекрасно работает.
Однако мне понадобилось усложнить шаблон печати. Сделать так, чтобы, к примеру, при значении "Нет" отображалось бы "1", а при значении "Да" - "2". Казалось бы - что тут сложного?
Используем {if (бла бла) == 'Нет'}1{elseif (бла бла) == 'Да'}2{/if}, где вместо "бла бла" вышеуказанное вычисление.
Но вот беда - не срабатывает "бла бла"!!! Ни с такими скобками (), ни с такими {}, ни без.
Пишет Unexpected "{foreach"
Не могли бы сотрудники многоуважаемого КБ подсказать, где собака порылась? Возможно есть другие варианты решения вопроса?
Заранее спасибо,
Крокус
0
Сообщений в теме: 5
#3
Отправлено 17 Декабрь 2015 - 22:37
Мне казалось, что ТАК должно срабатывать, но не срабатывает:
{if ({assign var="t" value=""} {foreach from=$Принятые решения name=foo item=subtable name=Принятые решения} {assign var="t" value="`$t+1`"} {if $t eq '1'} {$Принятые решения.Решение} {/if} {/foreach}) == 'Нет'}1
{elseif ({assign var="t" value=""} {foreach from=$Принятые решения name=foo item=subtable name=Принятые решения} {assign var="t" value="`$t+1`"} {if $t eq '1'} {$Принятые решения.Решение} {/if} {/foreach}) == 'Да'}2
{/if}
{if ({assign var="t" value=""} {foreach from=$Принятые решения name=foo item=subtable name=Принятые решения} {assign var="t" value="`$t+1`"} {if $t eq '1'} {$Принятые решения.Решение} {/if} {/foreach}) == 'Нет'}1
{elseif ({assign var="t" value=""} {foreach from=$Принятые решения name=foo item=subtable name=Принятые решения} {assign var="t" value="`$t+1`"} {if $t eq '1'} {$Принятые решения.Решение} {/if} {/foreach}) == 'Да'}2
{/if}
#4
Отправлено 18 Декабрь 2015 - 09:26
У вас полная бессмыслица с точки зрения программирования. Я конечно понимаю, что вы хотели, но указанная конструкция не возвращает никаких значений, она только выводит переменную на экран, а для сравнения нужен именно результат. Следовательно, что тут нужно было сделать: 1) в изначальной конструкции, которую вам дали, вывод на печать заменить присвоением в переменную (через тот же assign например) 2) затем, в вашей конструкции с if для сравнения использовать уже переменную, как я в предыдущем сообщении описал.
#6
Отправлено 21 Декабрь 2015 - 04:22
Вот решение. Может кому пригодится:
{assign var="r" value=""}{assign var="t" value=""} {foreach from="{$Информация}" name="Информация" item=subtable} {assign var="t" value="`$t+1`"} {if $t eq '1'} {assign var="r" value="{$Информация.Принятые решения}"} {/if} {/foreach}
{if $r == 'Да'}Выводим ДА{elseif $r == 'Нет'}Выводим НЕТ{/if}
{assign var="r" value=""}{assign var="t" value=""} {foreach from="{$Информация}" name="Информация" item=subtable} {assign var="t" value="`$t+1`"} {if $t eq '1'} {assign var="r" value="{$Информация.Принятые решения}"} {/if} {/foreach}
{if $r == 'Да'}Выводим ДА{elseif $r == 'Нет'}Выводим НЕТ{/if}
Количество пользователей, читающих эту тему: 3
0 пользователей, 3 гостей, 0 анонимных