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

Форум по вопросам применения и программирования в Visio
Текущее время: 29 мар 2024, 11:25

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


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


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Файл открыт только для чтения
СообщениеДобавлено: 16 июн 2022, 10:51 
Не в сети
Постоянный участник
Аватара пользователя

Зарегистрирован: 13 авг 2020, 04:53
Сообщений: 87
Использую Visio c: 2000
Уровнь квалификации: начальный
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
fixer6 писал(а):
Файл прилагаю.
моя история…
у меня сообщение вылезает при подгрузке трафарета, когда перевожу в режим редактирования сообщение больше не возникает.
НО у меня это сообщение никак не мешает работе надстройки нумерация шейпов!!!
fixer6 писал(а):
что думаете про "болезнь" прооперированного пациента?
я отключил события автоматизации (Файл -> Параметры -> Дополнительно -> Отключить события автоматизации). Перестало вылетать это сообщение


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

Благодарю всех кто участвовал. Поищу по наводке свой "гадкий код" точнее "недружественный" к аддону Нумерация фигур . Проверочный триггер найден теперь разобраться почему он удерживает файл в режиме только чтение.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Файл открыт только для чтения
СообщениеДобавлено: 16 июн 2022, 10:58 
Не в сети
Постоянный участник
Аватара пользователя

Зарегистрирован: 13 авг 2020, 04:53
Сообщений: 87
Использую Visio c: 2000
Уровнь квалификации: начальный
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
В соответствии с
https://docs.microsoft.com/ru-ru/office ... codesvisio
EventCode='2' = DocumentOpened

Получается, что в список событий документа (данный трафарет) было добавлено требование:
При открытии документа вызвать SN (это скорее всего Shape Numbering) с аргументом /shape_num=2
И этот вызов приводит к ошибке.
Что-то мне не верится, что такую ситуацию создал Аддон. Больше похоже на то, что трафарет создан на основе трафарета из какого-то другого проекта. А в том проекте программист порезвился и добавил соответствующий Event в EventList документа трафарета. Ну, нужно было это ему зачем-то.
Я так думаю.

Нет. Трафарет с собственными мастерами сделан с нуля без заимствований у кого то. Благодарю за разбор потрохов куда копать свой "гадкий код"


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Файл открыт только для чтения
СообщениеДобавлено: 16 июн 2022, 11:04 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Tumanov писал(а):
Что-то мне не верится, что такую ситуацию создал Аддон. Больше похоже на то, что трафарет создан на основе трафарета из какого-то другого проекта.
создаем чистый документ в формате vsdx, смотрим архив в папке visio документ document.xml в конце документа нет тэга <EventList>.
Запускаем в чистом документе интересующую нас надстройку - в результате получаем <EventList>.
Tumanov писал(а):
А в том проекте программист порезвился и добавил соответствующий Event в EventList документа трафарета.
Для меня загадка как это попало в трафарет (vss/vssx/vssm), если аддон это EventList в документ добавляет ?
Дополнено позднее: Оказывается этот аддон можно и внутри трафарета запустить - открыв для редактирования один из элементов (master shape) трафарета

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


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

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

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

Вот, похоже, и причина.
Случайный запуск аддона не в том документе и трафарет становится зараженным. А после этого он уже сам требует запуска аддона при открытии документа (трафарета). Но так как трафарет всегда открывается по умолчанию только для чтения, то это приводит к сообщению об ошибке.
Цитата:
куда копать свой "гадкий код"

Кстати, а в своем коде случайно нет программного запуска Аддона? А то ведь такую ситуацию можно и программно сотворить. Если постараться.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Файл открыт только для чтения
СообщениеДобавлено: 16 июн 2022, 11:22 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
fixer6 писал(а):
Поищу по наводке свой "гадкий код" точнее "недружественный" к аддону Нумерация фигур .
Не надо искать "черную кошку" "гадкий код", скорее всего в вашем коде никакого криминала нет :mrgreen:
есть два пути:
gtfox в сообщении #17110 писал(а):
Сохранил как XML и удалил в конце
в вашем случае можно сохранить ваш трафарет в современном формате vssx/vssm, и проблемный трафарет открывать с помощью архиватора IZArc и отредактировать там файл document.xml
Почему этот архиватор:
у вас Visio более свежий чем версия 2013, поэтому нет возможности сохранить в формат vdx (xml) средствами Visio. значит вам придется работать с новыми форматами. только этот архиватор [из известных мне] позволяет открывать архив с возможностью сохранения исправленного содержимого, позволяя избежать распаковки/перепаковки архива.
Surrogate в сообщении #17112 писал(а):
я отключил события автоматизации
это способ номер два. отключение событий автоматизации на этот аддон не влияет [у меня по крайней мере]. но может влиять на работу с фигурами типа стен/окон/дверей - в случае необходимости можно включить эти события (когда не будет необходимости применять аддон нумерации шейпов)

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


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

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
в вашем случае можно сохранить ваш трафарет в современном формате vssx/vssm, и проблемный трафарет открывать с помощью архиватора IZArc и отредактировать там файл...

В принципе, можно скорректировать и непосредственно vss. Программно. У нас ведь есть программный доступ к документу, в том числе и трафарету, в том числе и к его EventList.
Только нужнго помнить 2 вещи:
1. Несмотря на то, что в XML мы видим только одно событие, на самом деле их в этом списке много, но остальные наследуются, поэтому в XML их не видно.
2. Аддон при открытии трафарета натыкается на ошибку и это будет мешать коррекции. То есть на время коррекции его надо отключить.
В итоге ремонт vss выполняется в следующей последовательности:
1. Отключаем события автоматизации
2. Выполняем макрос
Код:
Sub ttt()
    Dim doc As Visio.Document
    Set doc = Application.Documents.OpenEx("c:\\Temp\-3 - Copy.vss", visOpenDocked + visOpenRW)
    Debug.Print doc.EventList.Count
    For i = doc.EventList.Count To 1 Step -1
        Debug.Print Mid(doc.EventList(i).TargetArgs, 2, 10)
        If Mid(doc.EventList(i).TargetArgs, 2, 10) = "/shape_num" Then
            doc.EventList(i).Delete
        End If
    Next
    doc.Save
    doc.Close
End Sub

3. Включаем события автоматизации.
После этого трафарет "-3 - Copy.vss" будет работать нормально до тех пор, пока его кто-нибудь опять не испортит.


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

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



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

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


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

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