Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 21 сен 2017, 01:56

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Ссылка на ShapeData страницы
СообщениеДобавлено: 03 май 2017, 16:34 
Не в сети

Зарегистрирован: 24 авг 2016, 22:21
Сообщений: 13
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Добрый день, уважаемые форумчане.

Имеется многостраничный документ.
Для первой странице созданы несколько значений ShapeData (Prop.Row_1, Prop.Row_2 и тд).
Необходимо для шейпов, размещенных на разных страницах, менять их свойства в зависимости от значений ShapeData первой страницы.
Если дело касается шейпов первой страницы, то работает ThePage!Prop.Row_1 и ThePage!Prop.Row_2
Но возникает проблема с шейпами на других страницах.
Pages[имя первой страницы]!Prop.Row_1 выдает ошибку "Неправильная формула"

Если ссылаться на ShapeData каких-то шейпов, то все работает. Пример: Pages[имя первой страницы]!Sheet.101!Prop.Row_1 (на примере шейпа Sheet.101)

Но трудность именно с ссылкой на шейпдата страницы.
Прошу помощи.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 03 май 2017, 18:06 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 899
Очков репутации: 100576

Добавить очки репутацииУменьшить очки репутации
=Pages[Page-1]!ThePage!Prop.Prop1
или
=Pages[Page-1]!ThePage!Prop.Row_1, если строки не именованные
Кстати, если написать
=Pages[Page-1]!Sheet.0!Prop.Row_1, то оно само переименуется на ThePage. Потому как ThePage - это считай тоже шейп, но нулевой.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 04 май 2017, 09:39 
Не в сети

Зарегистрирован: 24 авг 2016, 22:21
Сообщений: 13
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Спасибо. Все работает. Фиг догадаешься


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 12:20 
Не в сети

Зарегистрирован: 24 авг 2016, 22:21
Сообщений: 13
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Заметил следующее...
Если шейп, свойства которого зависели от shapedata первой страницы, скопировать и вставить на какую-то страницу, то зачастую вместо формулы =Pages[Page-1]!ThePage!Prop.Row_1 появляется REF() и столь необходимые качества шейпа теряются.
В чем дело, подскажите, пожалуйста?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 12:29 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
на другую страницу в том же документе ?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 12:36 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 899
Очков репутации: 100576

Добавить очки репутацииУменьшить очки репутации
Visio умный :)
При копировании шейпов он модифицирует формулы, пытаясь сохранить все зависимости. Например, если в группе первый шейп ссылался на второй, то после копирования уже в новой группе такая связка сохранится, но имена шейпов будут уже совсем другими. Это ведь новые шейпы. То есть ссылкам пытаются придать "относительный" характер.
Но иногда (кстати, не часто) такой алгоритм промахивается.
В Вашем случае скорее всего Visio пытался перенаправить ссылку на другую страницу. Но на той странице нужного свойства не оказалось. Появилось REF() - это как признак невозможной ссылки.
-----
Если у Вас шейпы с нескольких страниц должны ссылаться на один источник (например, на первую страницу), то корректнее было бы ставить ссылку не на свойства страницы, а на свойства документа. Такую ссылку Visio не исказил бы.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 13:18 
Не в сети

Зарегистрирован: 24 авг 2016, 22:21
Сообщений: 13
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Спасибо за ответ.
Да, все шейпы в документе, на всех страницах, ссылаются на несколько ShapeData первого листа. Почему именно на свойства листа? Дело в том, что мне постоянно нужно менять значения этих свойств, что удобно делать через окошко "Данные фигуры", которое я вытащил, и при выборе первого листа я сразу вижу все его свойства и могу их менять. Как отобразить свойства Всего документа, чтобы было удобно их редактировать пользователям не в ShapeSheet, я не знаю.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 13:29 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
is308 писал(а):
Как отобразить свойства Всего документа, чтобы было удобно их редактировать пользователям не в ShapeSheet, я не знаю.
1. можно сделать шейп с ShapeData, которые будут транслироваться в свойства документа. тема где рассматривался подобный вариант - Трафарет оформление РД по ГОСТ Р 21.1101-2013 v.3
vin в сообщении #7429 писал(а):
Фигура "Общие данные" используется как зеркало и корректировщик общих данных документа.

2. создать макрос который будет содержать форму для ввода/коррекции данных.
я не большой любитель использования пользовательских форм. обычно ограничиваюсь формой парой-тройкой кнопок, плюс один-два чекбокса или радиобатона.
Хотелось еще делать сортировку для введенных значений в комбобокс не из списка
мои художества


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 13:56 
Не в сети

Зарегистрирован: 24 авг 2016, 22:21
Сообщений: 13
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
1. можно сделать шейп с ShapeData, которые будут транслироваться в свойства документа.

Согласен, мой пример с ШейпДата страницы1 - это по сути это же метод.
Я сейчас так и сделал после ваших подсказок. Шейпдата страницы 1 передаются в User-defined Cells документа, а по всему документы разбросаны шейпы, в которых вставлены текстовые поля с формулой TheDoc!User.Row_х (где х - номер того или иного свойства)

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


Последний раз редактировалось is308 07 июн 2017, 14:05, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 13:57 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 899
Очков репутации: 100576

Добавить очки репутацииУменьшить очки репутации
В документе делаем такие же ShapeData, как и в первой странице и ссылаемся на первую страницу.
А все остальные шейпы пусть ссылаются на документ.
Тогда редактировать можно так же, как сейчас (в окошке данных первой страницы). А транслироваться они будут через документ.
Только создать ShapeData в документе придется вручную через ShapeSheet. Но это же только один раз.


Вложения:
rr01002.jpg
rr01002.jpg [ 11.14 Кб | Просмотров: 131 ]
rr01001.jpg
rr01001.jpg [ 21.99 Кб | Просмотров: 129 ]
rr01000.jpg
rr01000.jpg [ 15.82 Кб | Просмотров: 129 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 14:03 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
is308 писал(а):
Я не программист, поэтому прошу прощения, если вопросы уж совсем нубские. Просто по работе (инженер-электротехник) приходится сталкиваться с визио
та же фигня, но я связист Изображение
Tumanov писал(а):
А транслироваться они будут через документ.
Изображение
последняя картинка меня смущает !!!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 14:14 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 899
Очков репутации: 100576

Добавить очки репутацииУменьшить очки репутации
А что смущает?
Это документ ссылается на страницу.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 14:18 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
ссылка на ячейку на странице ! чревато ошибкой #318
Ошибка №318 (Error 318). Самая безобидная ошибка, появляется в определенных случаях, когда перемещение данных, из документа (TheDoc) до фигуры (TheSheet), осуществляется через промежуточные ячейки. Лечится простым удалением «пятого колеса», т.е. этих самых промежуточных ячеек на страницах (ThePage).
Изображение

лучше в ячейке TheDoc хранить значение ячейки Pages[Page-1]!ThePage!Prop.Row_1, а не ссылку на нее !


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 14:31 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 899
Очков репутации: 100576

Добавить очки репутацииУменьшить очки репутации
И опять не понял, что не нравится.
Формулы ведь одинаковые. Только у меня строка именованная.
Или эти "определенные случаи" связаны с локальными именами?
-------------------------------
Посмотрел первоисточник.
Там упоминается другой случай. Когда передача идет через страницу. Документ - страница - шейп.
У нас же - наоборот. Страница - Документ - шейп.
В первом случае в середине стоит нестабильный (множественный) элемент. Страниц много.
Но документ уникален. Так что в нашем случае вроде все нормально.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 14:39 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Surrogate в ветке Работа над ошибками: Error318 писал(а):
Разбирая свои старые работы нашел документы из которых нельзя ничего скопировать, вылезает ошибка 318
Изображение
Ошибка возникает тогда, когда в TheDoc есть формулы содержащие в себе ссылки на ячейки со страниц документа. Например Pages[Page-1]!sheet.1!prop.row_1
когда-то я имел не осторожность использовать в шаблоне которым пользовалось 12 человек в отделе формулы типа Pages[Page-1]!sheet.1!prop.row_1 !
была масса документов создана. была головная боль с копированием из и в такие документы почти пол-года. пока не пришел к нам на работу Digitall, он объяснил в чем косяк
Дополнено позднее: У меня было Pages[Page-1]!sheet.1!prop.row_1, а у вас Pages[Page-1]!ThePage!prop.row_1 ! возможно я перестраховываюсь Изображение
но тогда был реальный геморой ! Изображение


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 14:45 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 899
Очков репутации: 100576

Добавить очки репутацииУменьшить очки репутации
Цитата:
Pages[Page-1]!sheet.1!prop.row_1

Конкретно эта ссылка не на страницу, а на размещенный на ней шейп.
Это действительно более опасная ссылка.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 14:54 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
в документе были фигуры на базе мастер-шейпов, в которых использовалась такая ссылка. при попытке вставки в другой документ вылетала ошибка.
если попытаться вставить такой шейп в документ, в котором нет страницы с таким именем или когда есть проблема с "локальными именами" могут возникнуть проблемы. поэтому для себя я решил:
в TheDoc никаких ссылок ни на ячейки на страницах, ни на шейпы. Только значения

для меня такой вариант ссылки послужил миной замедленного действия, поэтому я никому не посоветую их использовать !


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 16:39 
Не в сети

Зарегистрирован: 24 авг 2016, 22:21
Сообщений: 13
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Поймал ошибку 318.
Почитал этот форум и не понимаю, каким образом в моем случае SETF решит проблему?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 16:42 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
SETF будет всякий раз при необходимости загонять в ячейку TheDoc значение хранящееся в ячейке Pages[Page-1]!ThePage!prop.row_1. А не ссылку на эту ячейку !!!
как вариант можно еще использовать
9rey в сообщении #6550 писал(а):
Surrogate
можно же через SETATREF: в Prop.Row_1 вписать SETATREF(TheDoc!User.ololo)
тогда ячейки Prop.Row_1, TheDoc.User.ololo свяжутся

просто в ячейке Pages[Page-1]!ThePage!prop.row_1 вбить формулу

ShapeData: Value

Prop.Row_1

=SETATREF(TheDoc!User.Row_1)

 


Изображение


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на ShapeData страницы
СообщениеДобавлено: 07 июн 2017, 16:58 
Не в сети

Зарегистрирован: 24 авг 2016, 22:21
Сообщений: 13
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Если я вас правильно понял, то незначительно усложняется работа юзера.

Сейчас я вбиваю на первом листе в окошко "Данные фигуры" значения и они сразу появляются в нужных мне шейпах на всех листах.

Вы предлагаете написать макрос, в котором при его запуске будет выполняться SETF("TheDoc!User.Row_1", Pages[Page-1]!ThPage!Prop.Row_1), в результате чего в TheDoc!User.Row_1 будет занесено значение, которое я вбил в окошко "Данных фигуры", а оттуда уже по всем шейпам.
Тогда юзер должен будет запускать макрос при каждой правке значения ШейпДата на пером листе?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB