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

Форум по вопросам применения и программирования в Visio
Текущее время: 23 ноя 2017, 17:07

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Ссылка на другой шейп
СообщениеДобавлено: 29 ноя 2016, 13:50 
Не в сети

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

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

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

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

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 29 ноя 2016, 14:19 
Не в сети
Administrator

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 29 ноя 2016, 14:19 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 876
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 118

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


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
поиграю в экстрасенса…
Serega писал(а):
Мастер содержит два шейпа (sheet.1 и sheet.2)
мастер это всегда группа. т.е. два эти шейпа находятся внутри этой группы, когда оба шейпа одновременно вставляются на лист, каждый шейп получит новый ID. раз они вставлялись одновременно, то первый получит обновленный ID второго шейпа. и ссылка будет корректной.
а если по одному, то на странице возможно уже есть другой шейп с ID = 2, если у него нет свойства Prop.Property получим битую ссылку REF()
если нет, то возможны две ситуации: шейпа с таким номером нет или первый шейп получает такой номер


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 29 ноя 2016, 17:40 
Не в сети

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

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 29 ноя 2016, 18:18 
Не в сети
Administrator

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 29 ноя 2016, 19:07 
Не в сети

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

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 29 ноя 2016, 19:40 
Не в сети

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 29 ноя 2016, 19:47 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 876
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 118

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 29 ноя 2016, 19:53 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Изображение
тестил на визио 2010 !
1. Ctrl+C/Ctrl+V - ломается ссылка
2. Перетягивание при нажатом Ctrl - не ломается ссылка
3. Ctrl+D - не ломается ссылка
вроде уже про эти различия было где-то обсуждение
9rey писал(а):
попробуй =GUARD(Sheet.1!Width)
при Ctrl+C/Ctrl+V, та же фигня !


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 29 ноя 2016, 20:10 
Не в сети
Administrator

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

Events

EventDrop

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

 

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 29 ноя 2016, 21:18 
Не в сети

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

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 29 ноя 2016, 23:01 
Не в сети
Administrator

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 30 ноя 2016, 08:30 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
дык, когда оба шейпа находятся внутри мастера, например в документ-стенсиле. после вытаскивания мастера на лист. и всех вышеописанных трех видов все хорошо.
Surrogate в сообщении #3454 писал(а):
у меня win7 64, visio2010
1. если я выделил фигуру внутри группы не открывая окна внутрь группы, нажал копи/пасте. новая фигура будет вне группы и вместо формулы REF()
2. если я выделил фигуру внутри группы не открывая окна внутрь группы, нажал дупликате. новая фигура будет вне группы и формула сохраняется
я ж говорил была у нас тема про разницу между копипастой и дублированием !
откуда такое маниакальное стремление делать копию через Ctrl+C/Ctrl+V ?
Дополнено позднее:
9rey писал(а):
проверил на visio 2003, не ломается ссылка.
а у меня даже в 2003 ломается


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 30 ноя 2016, 10:19 
Не в сети
Administrator

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

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 30 ноя 2016, 12:32 
Не в сети

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

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

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

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 30 ноя 2016, 12:34 
Не в сети
Administrator

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 30 ноя 2016, 12:35 
Не в сети

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

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 30 ноя 2016, 12:38 
Не в сети

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

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Ссылка на другой шейп
СообщениеДобавлено: 30 ноя 2016, 12:39 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
чуть выше я давал ссылку на сообщение
Surrogate в сообщении #3454 писал(а):
у меня win7 64, visio2010
1. если я выделил фигуру внутри группы не открывая окна внутрь группы, нажал копи/пасте. новая фигура будет вне группы и вместо формулы REF()
2. если я выделил фигуру внутри группы не открывая окна внутрь группы, нажал дупликате. новая фигура будет вне группы и формула сохраняется
3. если я выделил фигуру внутри группы, находясь внутри окна группы, нажал копи/пасте. новая фигура будет внутри группы и вместо формулы REF()

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


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

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



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

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


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

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