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

Форум по вопросам применения и программирования в Visio
Текущее время: 25 ноя 2017, 09:20

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Одинаковые формулы в двух шейпах - разное поведение
СообщениеДобавлено: 26 сен 2016, 01:38 
Не в сети
Бывалый

Зарегистрирован: 11 июн 2015, 10:49
Сообщений: 110
Использую Visio c: 2001
Отрасль: Автоматизация инженерных систем
Должность: Вольный Птиц
Уровнь квалификации: Нуб forever
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Два шейпа с одинковыми формулами.
Верхний работает, нижний нет.
Пробовал хренову кучу раз. То получается работающий, то не работающий.
Второе чаще. Закономерности не смог уловить.
Единственное, что заметил - если из двух нижних User ячеек объединить формулы в одну, то
будет почти всегда выдавать ошибку #Value, кроме случая, когда первый элемент не одинаковый во всех трех списках.
Как-то иначе можно реализовать средствами ShapeSheet, что б при смене списка в Value ставилось значение первого элемента выбраного списка?
Вложение:
123.JPG
123.JPG [ 259.76 Кб | Просмотров: 320 ]


Файл с шейпами -
Вложение:
2.vsd [28 Кб]
Скачиваний: 20


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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Одинаковые формулы в двух шейпах - разное поведение
СообщениеДобавлено: 26 сен 2016, 03:22 
Не в сети
Бывалый

Зарегистрирован: 11 июн 2015, 10:49
Сообщений: 110
Использую Visio c: 2001
Отрасль: Автоматизация инженерных систем
Должность: Вольный Птиц
Уровнь квалификации: Нуб forever
Очков репутации: 1

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

Vytos писал(а):
реализовать средствами ShapeSheet, что б при смене списка в Value ставилось значение первого элемента выбраного списка?

Поясню. На примере работающего первого шейпа.
В Prop два списка. Первый - Prop.Выбор - статичный.
Второй - Prop.Список - динамический. Подставляется из User.Список-XX в зависимости от выбора в первом.
Когда меняешь выбор в Prop.Выбор, и, соответственно, меняется состав Prop.Список - Prop.Список.Value должен принимать значение первого элемента текущего набора в Prop.Список.
По умолчанию, если, допустим, Prop.Выбор сейчас "А" и в Prop.Список выбрать второй элемент, то при переключении Prop.Выбор на "Б" или "В" значение Prop.Список.Value останется вторым элементом нового списка. А должно принимать значение первого при смене списков.

Surrogate писал(а):
если есть рабочий вариант, зачем нужен второй

Затем, что таких шейпов разных надо делать энное количество. Причем во всех будет не два списка - статический и динамический, как тут, а по несколько динамических, зависящих друг от друга.
А еще при кидании работающего шейпа в стенсил и последующем вытаскивании оттуда на поляну, вытащенный - уже не работает! :wall:

P.S. А на предыдущую тему в этом же разделе нет соображений? :oops:


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
ага, стало немного понятнее!
В визио, лучше всего добавлять проверку условия для выполнения действия с SETF.
Цитата:
IF(0=0,SETF(GetRef(Prop.Список.Format),"User.Список_"&Prop.Выбор)+SETF("Prop.Список.Value",User.Def),-1)

если у тебя в сейкции user-defined cells в нескольких строках написаны команды SETF, то действия могут происходить в произвольном прядке. поэтому лучше их упорядочить!
Vytos писал(а):
Причем во всех будет не два списка - статический и динамический, как тут, а по несколько динамических, зависящих друг от друга.
это надо (по)думать!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Одинаковые формулы в двух шейпах - разное поведение
СообщениеДобавлено: 26 сен 2016, 09:27 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 433
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Есть разница в двух шейпах. Не пойму правда почему.
Первый шейп
Изображение

Второй шейп
Изображение


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

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

Добавить очки репутацииУменьшить очки репутации
Кажется здесь напрашивается функция Dependson. Это только мне кажется?


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 433
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
От чего она будет зависить?


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

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

Добавить очки репутацииУменьшить очки репутации
Задача - строго выставить последовательность.
При установке Value она должна зависеть от Format. И т.д.
User.Coil_SetList=SETF(GetRef(Prop.Coil.Format),"User.Coil_"&Prop.Type)+DEPENDSON(Prop.Type)
User.Coil_SetDef=SETF("Prop.Coil.Value",User.Def)+DEPENDSON(User.Coil_SetList)
---------------------------
Может формулы и не точно написал... Но по смыслу - функция заставит Setf исполняться только после того, как изменится ячейка с аргументом Dependson. Привяжет к событию изменения этой ячейки.


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

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


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

Зарегистрирован: 11 июн 2015, 10:49
Сообщений: 110
Использую Visio c: 2001
Отрасль: Автоматизация инженерных систем
Должность: Вольный Птиц
Уровнь квалификации: Нуб forever
Очков репутации: 1

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

Цитата:
IF(0=0,SETF(GetRef(Prop.Список.Format),"User.Список_"&Prop.Выбор)+SETF("Prop.Список.Value",User.Def),-1)

Этот замут и делается для того, чтобы уйти от IF-ов. С ними все понятно и просто, и все работает. Просто их может оказаться до нескольких штук вложеных друг в друга.
Shishok писал(а):
Есть разница в двух шейпах. Не пойму правда почему

Потому, что в первом как раз все отработало, как надо - обновился список и в Value упало значение первого элемента, а во втором шейпе осталась формула.
Tumanov писал(а):
Задача - строго выставить последовательность.
При установке Value она должна зависеть от Format. И т.д.
User.Coil_SetList=SETF(GetRef(Prop.Coil.Format),"User.Coil_"&Prop.Type)+DEPENDSON(Prop.Type)
User.Coil_SetDef=SETF("Prop.Coil.Value",User.Def)+DEPENDSON(User.Coil_SetList)
---------------------------
Может формулы и не точно написал... Но по смыслу - функция заставит Setf исполняться только после того, как изменится ячейка с аргументом Dependson. Привяжет к событию изменения этой ячейки.

Ага... Тогда может User.Coil_SetDef=SETF("Prop.Coil.Value",User.Def)+DEPENDSON(Prop.Coil.Format)?
Изменился Prop.Coil.Format - отработало то, что до плюса написано? Правильно я понимаю?
Вернусь домой ночером, попробую.

Вообще структура должна быть примерно такая. Только полей выбора больше, и некоторые динамические будут зависеть не от выбора в "главном" статическом, а от выбора в других динамических. Но суть та же остается. Нарисовал только ячейки со списками в секции User, для простоты, что б не забивать схему.
Вложение:
2.jpg
2.jpg [ 61.37 Кб | Просмотров: 220 ]


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

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Ага... Тогда может User.Coil_SetDef=SETF("Prop.Coil.Value",User.Def)+DEPENDSON(Prop.Coil.Format)?

Может быть.
Я просто эти две строчки уже попробовал. Вроде все работает нормально. Но это же не единственный вариант.
Цитата:
User.Coil_SetDef=SETF("Prop.Coil.Value",User.Def)+DEPENDSON(Prop.Coil.Format)?
Изменился Prop.Coil.Format - отработало то, что до плюса написано? Правильно я понимаю?

Совершенно верно.


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

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


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

Зарегистрирован: 11 июн 2015, 10:49
Сообщений: 110
Использую Visio c: 2001
Отрасль: Автоматизация инженерных систем
Должность: Вольный Птиц
Уровнь квалификации: Нуб forever
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Вроде все работает нормально.

А все же любопытно, почему один шейп работает, а второй нет, с теми исходными формулами...
Высмотрел кое-что из "особенностей"...

Работает всегда, если первый элемент списков из User не одинаков во всех.

Очень интересная особенность:
Если вместо
Код:
SETF("Prop.Coil.Value",User.Def)
INDEX(0,Prop.Coil.Format)

прописать в одной ячейке
Код:
SETF("Prop.Coil.Value",INDEX(0,Prop.Coil.Format))


Если первый элемент представляет из себя цифры и букву, используемую для обозначения расстояний/размеров (например, 22f, 1d, 2345мм), то эта гада считает, что там именно футы, дюймы, миллиметры, а не набор произвольных символов, и преобразует их, ставя в Value "1 д", а не "1d", меняя английскую "d" на нашу "д".
Если после цифр идет буква, не обозначающая размерность, то результатом выполнения формулы будет "#Value".
Если идут буквы, или буквыцифры - проглатывает нормально.

В отдельной же строке
Код:
INDEX(0,Prop.Coil.Format)
всегда обрабатывает первый элемент корректно, как набор символов "как есть", не преобразуя и не плюясь ошибками.

Пирожки с котятами.


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

Зарегистрирован: 11 июн 2015, 10:49
Сообщений: 110
Использую Visio c: 2001
Отрасль: Автоматизация инженерных систем
Должность: Вольный Птиц
Уровнь квалификации: Нуб forever
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
IMHO может и можно сделать все вышеописанное в shapesheet, но мега-геморройно !

3-4-5 десятков ячеек в User. Мини база данных :) Не так геморройно, если выборки буду работать, как задумано.
А как проще? Связь с внешними данными не предлагать.


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

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
если выборки буду работать, как задумано

А через год кто-то попытается добавить новый шейп... И начнется...


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Vytos писал(а):
INDEX(0,Prop.Coil.Format)
думаю отсюда все траблы. раньше (я столкнулся с этим в 2010) в фиксированных и переменных списках когда в ячейке ShapeData (CustomProperties) меняешь значение, то в ячейке именно оно и остается. теперь ставится подобного вида формула! ее подставляет само ядро визио
Vytos писал(а):
А как проще?
программно в VBA! может не проще, но надежнее


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

Зарегистрирован: 11 июн 2015, 10:49
Сообщений: 110
Использую Visio c: 2001
Отрасль: Автоматизация инженерных систем
Должность: Вольный Птиц
Уровнь квалификации: Нуб forever
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Цитата:
если выборки буду работать, как задумано

А через год кто-то попытается добавить новый шейп... И начнется...

Этот кто-то будет никто, кроме меня :)
Новый шейп буду делать, глядя на старый, по образу и подобию, если забыть к тому времени успею.


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

Зарегистрирован: 11 июн 2015, 10:49
Сообщений: 110
Использую Visio c: 2001
Отрасль: Автоматизация инженерных систем
Должность: Вольный Птиц
Уровнь квалификации: Нуб forever
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
программно в VBA! может не проще, но надежнее

А макрос можно встроить в шейп? Чтоб он был именно в шейпе, а не в документе?


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

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


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

Зарегистрирован: 11 июн 2015, 10:49
Сообщений: 110
Использую Visio c: 2001
Отрасль: Автоматизация инженерных систем
Должность: Вольный Птиц
Уровнь квалификации: Нуб forever
Очков репутации: 1

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

Шейп должен жить в стенсиле и быть вещью в себе, готовой к употреблению, без таскания за собой внешних хвостов.
Создаешь новый документ, редактируешь существующий, созданный неизвестно кем и когда - кинул из стенсила на страницу, не думая, и всё.


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

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



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

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


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

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