Вставка переменных в поля слияния

Вопросы, пожелания и предложения связанные с конструктором Руна
Ответить
skjold
Сообщения: 9
Зарегистрирован: 15 ноя 2016, 16:37

Вставка переменных в поля слияния

Сообщение skjold » 26 дек 2016, 13:27

Это больше неудобство, чем проблема, но я в данный момент использую в вордовском шаблоне печати формы связи поле { IF } (https://tinyurl.com/ztk8gcw, https://tinyurl.com/z5rwf33), работающее примерно как String() в Руне, но допускающее вложенность, и если в Ворде предварительно не включить отображение полей в раскрытом виде через Alt-F9, при просмотре шаблона Руна вообще не вставляет в них поля объекта. Возможно ли как-то это исправить?

Аватара пользователя
natalia.runa
Сообщения: 55
Зарегистрирован: 26 сен 2016, 18:35
Контактная информация:

Re: Вставка переменных в поля слияния

Сообщение natalia.runa » 26 дек 2016, 14:08

skjold, можете прикрепить пример проекта с использованием полей слияния?

skjold
Сообщения: 9
Зарегистрирован: 15 ноя 2016, 16:37

Re: Вставка переменных в поля слияния

Сообщение skjold » 26 дек 2016, 18:21

Я так сделал склонение словосочетания "рабочие дни" по правилам украинского языка в зависимости от цифры.

2.1. ВИКОНАВЕЦЬ зобов’язується надати послуги у строк [Строк виконання] { IF [стрДесятки днів] <> 1 { IF [стрОдиниці днів] > 0 { IF [стрОдиниці днів] = 1 "робочий день" { IF [стрОдиниці днів] <= 4 "робочих дня" "робочих днів" } } "робочих днів" } "робочих днів" } з дати оплати авансу по даному Договору.

Весь промежуток между 10 и 20 (одинадцать, двенадцать и т.д.), десятки (десять, двадцать и т.д.), и все числительные, заканчивающиеся на 5 и больше, всегда склоняются как "... робочих днів". В остальных случаях, если цифра заканчивается на единицу, будет "...один робочий день", если на 2,3,4 — будет "... робочих дня".

Аватара пользователя
natalia.runa
Сообщения: 55
Зарегистрирован: 26 сен 2016, 18:35
Контактная информация:

Re: Вставка переменных в поля слияния

Сообщение natalia.runa » 27 дек 2016, 11:16

Пока поддержка полей слияния в Руне не планируется. Попробуйте решить проблему с помощью макросов.

skjold
Сообщения: 9
Зарегистрирован: 15 ноя 2016, 16:37

Re: Вставка переменных в поля слияния

Сообщение skjold » 27 дек 2016, 17:15

Пробовал, насколько я понял макрос runa исполняется уже после того, как Руна осуществляет подстановку данных, поэтому переключать отображение полей слияния там оказалось бесполезно.
В принципе, саму проблему этого проекта можно было бы решить, расширив набор логических функций самой Руны, например добавив операторы сравнения и булеву логику в функцию String или в будущее поле Условие, но я не знаю, насколько это технически сложно.

В разделе "Функции шаблонов" онлайн-справки по Руне есть слова "Синтаксис задания функции в шаблоне: [Function(Поле объекта)]. Для некоторых из них допускаются вложенные условные операторы." Где именно допускается вложенность?..

Аватара пользователя
natalia.runa
Сообщения: 55
Зарегистрирован: 26 сен 2016, 18:35
Контактная информация:

Re: Вставка переменных в поля слияния

Сообщение natalia.runa » 27 дек 2016, 19:12

skjold писал(а):Пробовал, насколько я понял макрос runa исполняется уже после того, как Руна осуществляет подстановку данных...
Не обязательно использовать макрос runa, можно добавить в шаблон (dotm) свои макросы.
skjold писал(а):В разделе "Функции шаблонов" онлайн-справки по Руне есть слова "Синтаксис задания функции в шаблоне: [Function(Поле объекта)]. Для некоторых из них допускаются вложенные условные операторы." Где именно допускается вложенность?..
Имеются в виду вложенные условные операторы для функций String, Image и Del.

skjold
Сообщения: 9
Зарегистрирован: 15 ноя 2016, 16:37

Re: Вставка переменных в поля слияния

Сообщение skjold » 28 дек 2016, 13:28

Имеются в виду вложенные условные операторы для функций String, Image и Del.
А можно пример такого использования?..

Аватара пользователя
natalia.runa
Сообщения: 55
Зарегистрирован: 26 сен 2016, 18:35
Контактная информация:

Re: Вставка переменных в поля слияния

Сообщение natalia.runa » 28 дек 2016, 15:20

В объекте Клиент есть поле-переключатель Тип, значения: активный, неактивный.
В ресурсах две картинки: рис1 и рис2.
В шаблоне можно прописать [Image(Статус=активный?рис1:рис2)]
И подставится рисунок в зависимости от статуса. В данном случае функция Image содержит вложенный условный оператор ?

skjold
Сообщения: 9
Зарегистрирован: 15 ноя 2016, 16:37

Re: Вставка переменных в поля слияния

Сообщение skjold » 28 дек 2016, 16:14

А, понял.
Решил задачу путём создания двух простых макросов в шаблоне.

Код: Выделить всё

Sub AutoNew()
ActiveWindow.View.ShowFieldCodes = True
End Sub

Код: Выделить всё

Sub runa()
'
' runa Макрос
'
'
    ActiveWindow.View.ShowFieldCodes = True
    Selection.WholeStory
    Selection.Fields.Update
    Selection.Collapse Direction:=wdCollapseStart
    ActiveWindow.View.ShowFieldCodes = False
End Sub
Первый автоматически выполняется при создании нового документа из шаблона и показывает код полей Ворда, второй выполняется после заполнения полей Руной, обновляет все поля Ворда и скрывает их код, оставляя результат.

Аватара пользователя
natalia.runa
Сообщения: 55
Зарегистрирован: 26 сен 2016, 18:35
Контактная информация:

Re: Вставка переменных в поля слияния

Сообщение natalia.runa » 28 дек 2016, 18:53

Отлично. Спасибо, что поделились решением!

Ответить