1

Тема: {STYLEREF Название} при отсутствии названия выдает ошибку

Что нужно:
Код поля, который бы при наличии в документе текста стиля "Название", показывал "Yes" в поле.
При отсутствии - показывал "No".

Пробовал по разному:

{IF{{STYLEREF Название}<>""} "Yes" "No"}

при отсутствии текста со стилем "Название", выдает ошибку
те, что ниже - не работают sad

{IF{ERROR({STYLEREF Название})} "No" "Yes"}

{IF{DEFINED({STYLEREF Название})} "Yes" "No"}

2

Re: {STYLEREF Название} при отсутствии названия выдает ошибку

Уточняющий вопрос: с какой целью или для чего нужет такой код? Может быть проще закрыть шаблон (точнее стили шаблона) от изменения? Тогда в документе будут только те стили, которые есть в шаблоне и новые не смогут быть внедрены или же старые не смогут быть удалены.

3

Re: {STYLEREF Название} при отсутствии названия выдает ошибку

Можно, конечно
{ IF { QUOTE { STYLEREF "Название объекта" } } = "Ошибка! Текст указанного стиля в документе отсутствует." "No" "Yes" }

Лучше день потерять — потом за пять минут долететь!

4

Re: {STYLEREF Название} при отсутствии названия выдает ошибку

viter.alex

Громадное спасибо!
Я перебрал все найденные в енете операторы формул, а вот решение с текстом ошибки мне даже в голову не пришло.

admin
Хочу сделать универсальный колонтитул.
Название  |  Заголовок_раздела

На первой странице раздела он не будет показывать название раздела.
Если Название или Заголовок_раздела отсутствуют, то не будет их показывать.

А стили по любому мне придется защищать.
Обнаружил недокументированный способ защиты стиля. Если поместить в ContentControl текст, отформатированный этим стилем, задать СС защиту от изменения, то стиль изменить невозможно smile

5

Re: {STYLEREF Название} при отсутствии названия выдает ошибку

viter.alex

А как определить, что один из 2-х стилей в тексте отсутствует?
Сделать типа такое (оставил только первые буквы операторов для читабельности):

{ IF { {Q { S "Стиль 1" }}="Ошибка..." OR {Q { S "Стиль 2" }}="Ошибка..." } "No" "Yes" }

Т.е. конструкцию по типу If "Ошибка1" Or "Ошибка2" Then...

То что я попробовал ниже - не работает

{ IF { =OR({Q { S "Стиль 1" }}="Ошибка..." {Q { S "Стиль 2" }}="Ошибка...")} "No" "Yes" }

6

Re: {STYLEREF Название} при отсутствии названия выдает ошибку

Вот 2 варианта кода, оба не работают. Не могу понять, что неправильно?

{ IF { =OR({ COMPARE { STYLEREF “Название” } = "Ошибка! Текст указанного стиля в документе отсутствует." }, { COMPARE { STYLEREF “Заголовок 1” } = "Ошибка! Текст указанного стиля в документе отсутствует.")} "No" "Yes" }

{ IF { =OR({ QUOTE { STYLEREF “Название” } } = "Ошибка! Текст указанного стиля в документе отсутствует." }, { QUOTE { STYLEREF “Заголовок 1” } } = "Ошибка! Текст указанного стиля в документе отсутствует.")} "No" "Yes" }

7

Re: {STYLEREF Название} при отсутствии названия выдает ошибку

Логические операции можно заменить на арифметические. Это полезно, если используется много условий. У меня получилось вот так:
{ IF { = SUM({ IF { QUOTE { STYLEREF "Название объекта" } } = "Ошибка! Текст указанного стиля в документе отсутствует." 0 1};{ IF { QUOTE { STYLEREF "Заголовок 1" } } = "Ошибка! Текст указанного стиля в документе
отсутствует." 0 1 }) } = 0 "Стили неопределены" "Один из стилей определён"}

Лучше день потерять — потом за пять минут долететь!

8

Re: {STYLEREF Название} при отсутствии названия выдает ошибку

viter.alex, спасибо, вы всегда предлагаете не очевидные для меня решения. Тем они ценней.

Опробовал - работает.

Вылез новый момент.
Если указанным стилем отформатирован текст в ContentControl, то в поле виден не "текст СС" а "<текст СС>", т.е. он обрамлен символами стрелок. Есть ли возможность показать его без обрамляющих "<" и ">" ? Как это можно реализовать?

Отредактировано rizalut (17.01.2010 20:54:48)

9

Re: {STYLEREF Название} при отсутствии названия выдает ошибку

Решил так: текст ContentControl'а заключил в закладку, а поле поменял с STYLEREF на REF.