Форум пользователей Visio
http://visio.getbb.ru/

Ссылка на другой шейп
http://visio.getbb.ru/viewtopic.php?f=5&t=1055
Страница 1 из 3

Автор:  Serega [ 29 ноя 2016, 13:50 ]
Заголовок сообщения:  Ссылка на другой шейп

Добрый день.

Ситуация (visio 2007):
Мастер содержит два шейпа (sheet.1 и sheet.2), причём текст первого содержит что-то вроде "=Sheet.2!Prop.Property", т.е. отображает значение одного из свойств второго шейпа.

Когда выкладываем оба этих шейпа на лист, ссылка остается корректной. А вот если создать копию первого шейпа, то в ней на месте ссылки оказывается надпись REF(), т.е. ссылка на второй шейп теряется.

У меня вопрос – можно ли как-то задать ссылку на другой шейп так, чтобы она не терялась при создании копии?

Спасибо (извините, если не в тот раздел :roll: )

Автор:  Surrogate [ 29 ноя 2016, 14:19 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Что-то эта тема в НСК в последнее время очень популярна, на днях вспоминали
Данные конкретной фигуры как общее поле для вставки.
Гость писал(а):
извините, если не в тот раздел
ага, этой теме место в разделе ShapeSheet

Автор:  9rey [ 29 ноя 2016, 14:19 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Гость писал(а):
А вот если создать копию первого шейпа
при этом sheet.2 тоже на листе?

Автор:  Surrogate [ 29 ноя 2016, 16:12 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

поиграю в экстрасенса…
Serega писал(а):
Мастер содержит два шейпа (sheet.1 и sheet.2)
мастер это всегда группа. т.е. два эти шейпа находятся внутри этой группы, когда оба шейпа одновременно вставляются на лист, каждый шейп получит новый ID. раз они вставлялись одновременно, то первый получит обновленный ID второго шейпа. и ссылка будет корректной.
а если по одному, то на странице возможно уже есть другой шейп с ID = 2, если у него нет свойства Prop.Property получим битую ссылку REF()
если нет, то возможны две ситуации: шейпа с таким номером нет или первый шейп получает такой номер

Автор:  Serega [ 29 ноя 2016, 17:40 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Surrogate писал(а):
два эти шейпа находятся внутри этой группы, когда оба шейпа одновременно вставляются на лист, каждый шейп получит новый ID. раз они вставлялись одновременно, то первый получит обновленный ID второго шейпа. и ссылка будет корректной.

Да, всё так.
Понятно, что если вставить только один из этих шейпов, то ссылаться ему будет некуда.
Но вопрос-то – почему если мы делаем копию первого шейпа (уже скинутого на лист, в котором уже забито "новое имя" sheet.2), то вместо этого "нового имени" в копии мы получаем REF.

Автор:  Surrogate [ 29 ноя 2016, 18:18 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Serega писал(а):
почему если мы делаем копию первого шейпа (уже скинутого на лист, в котором уже забито "новое имя" sheet.2), то вместо этого "нового имени" в копии мы получаем REF
зачем так сложно ?
каким образом получается это "вбитое имя"?

Автор:  Serega [ 29 ноя 2016, 19:07 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Surrogate писал(а):
зачем так сложно ?
каким образом получается это "вбитое имя"?

Не "вбитое имя", а "новое имя", которое генерирует visio, когда мы кидаем шейпы из мастера на лист.
В смысле "сложно"?
А как "просто"?
Мне и хотелось бы услышать, как это сделать просто (копировать шейп с сохранением ссылок в полях этого шейпа).

Автор:  Serega [ 29 ноя 2016, 19:40 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Сейчас посмотрел, что даже без использования мастера ситуация аналогичная, что уж вообще странно.
Действовал так:
1. Создал sheet.1 (просто квадрат)
2. Создал sheet.2
3. Текст sheet.2 установил Настраиваемая формула -> =Sheet.1!Width
4. Создал копию sheet.2
5. В копии вместо нужной формулы – =REF().
Как сделать правильно?

Автор:  9rey [ 29 ноя 2016, 19:47 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

проверил на visio 2003, не ломается ссылка.
ну попробуй =GUARD(Sheet.1!Width)

Автор:  Surrogate [ 29 ноя 2016, 19:53 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Изображение
тестил на визио 2010 !
1. Ctrl+C/Ctrl+V - ломается ссылка
2. Перетягивание при нажатом Ctrl - не ломается ссылка
3. Ctrl+D - не ломается ссылка
вроде уже про эти различия было где-то обсуждение
9rey писал(а):
попробуй =GUARD(Sheet.1!Width)
при Ctrl+C/Ctrl+V, та же фигня !

Автор:  Surrogate [ 29 ноя 2016, 20:10 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

сделал так: в секции Events, в ячейке EventDrop написал формулу

Events

EventDrop

SETF(GetRef(Fields.Value),"=Sheet.1!Width")

 

теперь при дропе этого шейпа в поле Fields.Value будет формула заново генериться !

Автор:  Serega [ 29 ноя 2016, 21:18 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Surrogate писал(а):
1. Ctrl+C/Ctrl+V - ломается ссылка
2. Перетягивание при нажатом Ctrl - не ломается ссылка
3. Ctrl+D - не ломается ссылка

Вот за это спасибо (поражаюсь конечно создателям visio).
Но вот в случае, когда исходные два шейпа создаются в мастере, ссылка ломается при любом копировании :wall:
Прописать формулу жестко SETF(GetRef(Fields.Value),"=Sheet.1!Width") нельзя, так как мы не знаем, какое имя будет у шейпа на листе. А если передавать ссылкой, она ломается :(

Автор:  Tumanov [ 29 ноя 2016, 23:01 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Ну вот интересно...
Ведь видно же, что не лезет это в Visio. Значит требуют от него чего-то неправильного. Так все равно ищут, как выправить кривой путь.
---
Стало интересно, а зачем нужна такая ссылка? Может можно придумать другое, более технологичное решение.
Serega, Вы не могли бы пояснить поподробнее, какая роль отводится такой ссылке. И что это за шейпы (по смыслу).
Может их удобнее было бы сгруппировать. Или передавать значение через что-то еще, более стабильное...

Автор:  Surrogate [ 30 ноя 2016, 08:30 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

дык, когда оба шейпа находятся внутри мастера, например в документ-стенсиле. после вытаскивания мастера на лист. и всех вышеописанных трех видов все хорошо.
Surrogate в сообщении #3454 писал(а):
у меня win7 64, visio2010
1. если я выделил фигуру внутри группы не открывая окна внутрь группы, нажал копи/пасте. новая фигура будет вне группы и вместо формулы REF()
2. если я выделил фигуру внутри группы не открывая окна внутрь группы, нажал дупликате. новая фигура будет вне группы и формула сохраняется
я ж говорил была у нас тема про разницу между копипастой и дублированием !
откуда такое маниакальное стремление делать копию через Ctrl+C/Ctrl+V?
Дополнено позднее:
9rey писал(а):
проверил на visio 2003, не ломается ссылка.
а у меня даже в 2003 ломается

Автор:  Tumanov [ 30 ноя 2016, 10:19 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Цитата:
когда оба шейпа находятся внутри мастера ... все хорошо.

Правильно. Потому что оба находятся в замкнутой среде и эта среда не разрушается.
В ситуации, когда на странице шейп дублируется, то тоже все хорошо. Среда - страница. Среда не разрушается. Появляется новый шейп, который может использовать ссылки на имеющиеся шейпы.
А вот в случае Ctrl+C шейп изымается из среды и попадает в буфер. Его можно вставить и на другую страницу и в другой документ. Естественно, обрывки связей становятся ненужными и удаляются.
----------
Поэтому и получается, что связь формулами между шейпами правомерна тогда, когда шейпы неразлучны. Например, в пределах группы. Или в пределах страницы. В остальных случаях она может ИНОГДА работать, но требовать этого постоянно - просто несерьезно.

Автор:  Serega [ 30 ноя 2016, 12:32 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Surrogate писал(а):
2. если я выделил фигуру внутри группы не открывая окна внутрь группы, нажал дупликате. новая фигура будет вне группы и формула сохраняется
я ж говорил была у нас тема про разницу между копипастой и дублированием !

Может я что-то не так понял, но у меня и через Ctrl+D связь рушится.
Tumanov писал(а):
Естественно, обрывки связей становятся ненужными и удаляются.

Вот вообще не естественно. Это то же самое, если бы в Excel при копипасте столбца слетали все формулы.

Вот, к примеру, фигура из микрософтовского примера. (3-фазный контакт)
Изображение
Размеры кружков определяются через ссылки, дублируем его (Ctrl+D), и теряем ссылки в копии

Автор:  Surrogate [ 30 ноя 2016, 12:34 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Serega писал(а):
Размеры кружков определяются через ссылки, дублируем его (Ctrl+D), и теряем ссылки в копии
стоп, с этого момента поподробнее: дублируем что и каким образом ?

Автор:  Serega [ 30 ноя 2016, 12:35 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Tumanov писал(а):
Стало интересно, а зачем нужна такая ссылка? Может можно придумать другое, более технологичное решение.
Serega, Вы не могли бы пояснить поподробнее, какая роль отводится такой ссылке. И что это за шейпы (по смыслу).
Может их удобнее было бы сгруппировать. Или передавать значение через что-то еще, более стабильное...

Ну вот как пример выше, если я хочу сделать не 3 контакта, а 4. Или 144.

Автор:  Serega [ 30 ноя 2016, 12:38 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

Surrogate писал(а):
Serega писал(а):
Размеры кружков определяются через ссылки, дублируем его (Ctrl+D), и теряем ссылки в копии
стоп, с этого момента поподробнее: дублируем что и каким образом ?

На скриншоте выделен один из контактов в группе 3-фазного контакта. Вот в этом моменте и жмем Ctrl+D, создается копия этого контакта, но ссылка Sheet.1!Height в поле Width у него теряется

Автор:  Surrogate [ 30 ноя 2016, 12:39 ]
Заголовок сообщения:  Re: Ссылка на другой шейп

чуть выше я давал ссылку на сообщение
Surrogate в сообщении #3454 писал(а):
у меня win7 64, visio2010
1. если я выделил фигуру внутри группы не открывая окна внутрь группы, нажал копи/пасте. новая фигура будет вне группы и вместо формулы REF()
2. если я выделил фигуру внутри группы не открывая окна внутрь группы, нажал дупликате. новая фигура будет вне группы и формула сохраняется
3. если я выделил фигуру внутри группы, находясь внутри окна группы, нажал копи/пасте. новая фигура будет внутри группы и вместо формулы REF()

4. если я выделил фигуру внутри группы, находясь внутри окна группы, нажал копи/пасте дупликате. новая фигура будет внутри группы и формула сохраняется
в сообщении перечислялись нюансы. как в данном случае сделал ты - находясь вне группы ?

Страница 1 из 3 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/