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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Вопросы синхронизации между схемой и внешним источником данных
СообщениеДобавлено: 25 апр 2013, 20:48 
Не в сети
Administrator

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Временный простой ?
СообщениеДобавлено: 25 апр 2013, 21:30 
Не в сети
Ветеран

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Временный простой ?
СообщениеДобавлено: 25 апр 2013, 23:07 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3177
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Tumanov писал(а):
Постольку поскольку с шейпами мы далеко не продвинулись, движок пока не сильно специализирован.
Я то думал, что от шейпов в движке мало чего зависит. ведь можно пойти двумя путями:
1. запихивать программно данные в каждый конкретный шейп внутри группового шейпа например типа 6
2. запихивать программно все данные в групповой шейп, а конкретные шейпы будут средствами шейпшита считывать свои значения с shapedata или с user-defined cells
9rey писал(а):
можно сделать двустороннюю передачу данных и туда и обратно. тогда можно синхронизировать изменения между несколькими чертежами на нескольких машинах. организовать многопользовательскую работу и тп.
во втором случае это точно недостижимо


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Временный простой ?
СообщениеДобавлено: 26 апр 2013, 06:48 
Не в сети
Ветеран

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

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

что недостижимо то? реализовать обмен между визио и эксель в двустороннем режиме можно в любом формате. достаточно выбрать форму хранения данных в визио. шейпы тут дело десятое. я просто пример предложил, как вариант развития.


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

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


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

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

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


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3177
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
я с утра не проснулся еще, поэтому задал такой вопрос :)
наверно User предпочтительнее ! в каждой ячейке два поля Value и Prompt
Изображение
пришлось добавить ячейку User.Text, т.к. при попытке написать формулу в
Events->TheText
TheText=SETF("User.Data.Prompt",SHAPETEXT(TheText)),
выдает ошибку 310 и ругается на циклическую ссылку
TheText=SETF("User.data.Prompt",User.text),
тоже ругается на циклическую ссылку, но работает :)

А сначала я хотел все в TheDoc!User данные хранить. но данных будет немерено в здании могут быть десятки щитов, в каждом щите до 36 групп. в каждой группе до 20 параметров !


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Временный простой ?
СообщениеДобавлено: 26 апр 2013, 12:11 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
что-то я не понял суть этой конструкции с TheText
зачем вообще использовать Events?
SHAPETEXT(TheText) в ячейке user УЖЕ выполняет все что надо. ты меняешь текст в шейпе, и он сразу появляется в ячейке user


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Временный простой ?
СообщениеДобавлено: 26 апр 2013, 12:20 
Не в сети
Administrator

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

так я хотел реализовать "обратную связь" :)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Временный простой ?
СообщениеДобавлено: 26 апр 2013, 12:44 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
а не проще тогда в ячейку events.thetext прописать runmacro или callthis и вызывать процедуру обновления данных в эксель, как только пользователь изменит данные руками?
и не городить огород


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Временный простой ?
СообщениеДобавлено: 26 апр 2013, 12:56 
Не в сети
Administrator

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


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

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

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


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

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


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

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

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


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

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


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

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

Добавить очки репутацииУменьшить очки репутации
во, так с этим Document_ShapeExitedTextEdit мой вариант превращается вообще в элементарщину.
никаких User секций. просто тупо принимаешь из экселя в шейповый текст. по Document_ShapeExitedTextEdit отсылаешь обратно в эксель
даже скучно


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

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Может Геннадий предложит свой вариант или найдем компромисс

Да в принципе, практиковаться можно на любых вариантах... Вдруг что-то интересное получится :)
Лично мне вариант с отслеживанием события редактирования шейпа не нравится. Но это не должно никого останавливать.
Если проанализировать уже имеющиеся решения, то чаще всего по двойному щелчку на шейпе выскакивает специальная форма. По кнопке ОК данные с формы уходят в базу и отображаются в шейпе. Почему?
1. Так проще.
2. Шейп чаще всего отображает несколько полей из базы. Например, идентификатор, название, какую-нибудь характеристику. Щелкать для редактирования по внутренним полям группы - довольно некрасиво. Обычно их стараются скрыть от прямого редактирования.
3. Если результат редактирования сразу уходит в базу, то могут быть неприятности при случайном щелчке. Промазал, попал не в тот шейп - оно уже в базу улетело. Надо как-то возвращать... А при работе через форму всегда есть ОК и Cancel.
Скорее всего есть и другие веские аргументы, это только первое, что пришло в голову.
Но, опять же повторяю, в принципе всегда могут неожиданно появиться интересные оригинальные решения...
-----------
По поводу хранения данных.
Хранение желательно делать так, чтобы порция данных улетала вместе с шейпом, к которому она относится. Если все данные засунуть в какую-нибудь группу, а через некоторое время удалится один из входящих шейпов, потребляющий эти данные, нужно думать, что делать с обрубленными связями. А так - шейп удалился и данные с ним.
Или вторая крайность - все данные засовывать в документ. По второй схеме, например, работает аддон моделирования базы.


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

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

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

Еще я за то, чтобы можно было редактировать через окошко Custom Properties (Shape Data Window). Удобно же - выделил фигуру и увидел все ее параметры в этом окне. и при желании чтобы пользователь мог изменять там данные. Нельзя пренебрегать интерфейсом визио...


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

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Хранение желательно делать так, чтобы порция данных улетала вместе с шейпом, к которому она относится. Если все данные засунуть в какую-нибудь группу, а через некоторое время удалится один из входящих шейпов, потребляющий эти данные, нужно думать, что делать с обрубленными связями. А так - шейп удалился и данные с ним.
Или вторая крайность - все данные засовывать в документ. По второй схеме, например, работает аддон моделирования базы.


Я за то чтобы хранилось все на шейпе. шейп - запись (группа записей).


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3177
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Я согласен с аргументами за shape data. Действительно не стоит менять текст каждого шейпа. а проще менять свойства shape data группового шейпа. а текст дочерних шейпов будет брать эти значения
Изображение
Изображение
на этой форме Shape Data (Custom Properties) есть кнопки OK и Cancel.
Изменения произойдут после нажатия ОК
Такую форму лучше как-то заблокировать. Возможно случайное изменение параметров
 
Групповому шейпу можно через Ctrl+F9 добавить поле Fields.Value. Это поле сделать невидимым, оно будет составным
Fields.Value
= Prop.Tok&Prop.Faza&Prop.Py

Если хоть одно из полей изменится, то это событие мы отработаем с помощью Document_ShapeExitedTextEdit


Раз мы заговорили про синхронизацию данных! Есть еще одна проблема, для нас входной информацией являлась таблица предоставленная snake100771. Я вспомнил эти его слова
snake100771 писал(а):
snake100771 писал(а):

!
т.е. нам придется решать задачу максимально равномерного распределения нагрузки по фазам в Визио!
Кода распределения по фазам в эксель у нас тоже нет!


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

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



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

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


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

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