среда, 30 марта 2011 г.

Разработка карточек: как бороться с гуидами и прочими строковыми константами

Добрый день!


Эта заметка предназначена для тех, кто пишет код для работы с данными карточек DV с помощью объектной модели, предоставляемой платформой (сборка DocsVision.Platform.ObjectManager.dll).
Практически сразу разработчик сталкивается с необходимостью искать в документации или с помощью утилиты CardManager какие-то непонятные гуиды и прочие строковые константы, используемые в описании карточки. Естественно, эти строки оформляются как константы и т.д., но за актуальностью значений приходится следить, опечатки обнаруживаются только на этапе тестирования (а хотелось бы при компиляции).
Очевидно, с этими трудностями когда то столкнулись и разработчики DV и чтобы облегчить свое существование разработали инструмент, генерирующий удобную объектную модель для доступа к константам описания карточки. Этот инструмент можно использовать из командной строки или интегрировать в MS Visual Studio версии 8.0 - 10.0. После этого про гуиды можно больше не вспоминать!

Пример файла, сгенерированного с помощью этого инструмента можно найти в проекте, предоставляемом вместе с руководством разработчика (например, Samples\Cards\TestCardLib\Test\Constants\TestCard.cs)

Для запуска из командной строки надо воспользоваться командой
ConstGenerator.exe /i:YourCard.xml

Список параметров командной строки можно посмотреть запустив генератор с ключом /?:
ConstGenerator.exe /?

Для интеграции с MS VS надо зарегистрировать сборку с помощью команды regasm:
regasm ConstGeneratorTool.dll /codebase

После этого надо добавить в проект файл с описанием карточки и указать в поле CustomTool значение DVConstGenerator:


Генерация будет выполняться автоматически при сохранении файла с описанием карточки или по команде контекстного меню RunCustomTool :


Скачать генератор констант можно тут

PS. Эта тема уже освещалась в блоге: http://dvprofessionals.blogspot.com/2009/11/blog-post.html но, к сожалению, осталась незамеченной ...
Кроме того, в новой версии генератора констант добавлена регистрация в 10-й студии.

вторник, 22 марта 2011 г.

Проблемы с установкой патчей, преобразований

В консоли настройки DocsVision - Настройка клиентской части есть возможность для инсталляционных пакетов библиотек карточек указать msp-патчи (заплатки), которые могут содержать модифицированные компоненты библиотеки, либо mst-преобразования с измененными опциями инсталляции.
Данные заплатки и преобразования применяются при автоматической установке клиентских компонентов при обращении к стартовой странице сервера.

В некоторых случаях установка патчей и преобразований может не выполняться. Симптомы могут быть такие:
В случае патча - При установке клиента или запуске навигатора проскакивает запись «Ошибка загрузки; Лог установки патча при этом пустой.
В случае преобразований - В логе установки пакета нет никаких упоминаний о преобразовании; настройки, заданные в преобразовании, не применяются.

Причина проблемы может быть в том, что в IIS на сервере DocsVision не зарегистрированы соответствующие MIME-типы. Очень просто можно диагностировать проблему, сформировав URL к патчу или преобразованию и попробовав открыть его в браузере. Если они не закачиваются по URL, то такой MIME-тип не зарегистрирован. Пример URL:
http://server/docsvision/Setup/TakeOfficeClient/PatchPackage.msp

Как добавить MIME-types в IIS 6:
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/cd72c0dc-c5b8-42e4-96c2-b3c656f99ead.mspx?mfr=true

в IIS7:
http://technet.microsoft.com/en-us/library/cc725608%28WS.10%29.aspx

MIME-type для обоих расширений должен быть указан application/octet-stream.



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

.js
application/x-javascript

.css
text/css

пятница, 18 марта 2011 г.

DocsVision 4.5 проверен на совместимость с Internet Explorer 9

DocsVision 4.5 был протестирован на совместимость с Internet Explorer 9. Ошибок не обнаружено, и такая связка будет официально поддерживаться. Новость на сайте

пятница, 11 марта 2011 г.

Пояснение к возвращаемым значениям скрипта карточки на кнопку-функцию

Скрипт карточки на кнопку-функцию может вернуть набор значений, которые влияют на дальнейшую логику работы карточки. Об этом подробно написано в документации разработчика. Я же хочу немного прокомментировать данные значения. Пояснения актуальны для DocsVision 4.5, 4.5 SR1 и 4.5 SR2

1 - кнопка становится недоступной
- кнопка-функция блокируется, и становится серой

2 - обновить элементы управления карточки
- Данные из CardData карточки будут отображены в элементах управления формы. Во всех полях, за исключением полей на основной вкладке. На ней они останутся без изменения.

4 - установка режима “только чтение” для карточки
- карточка будет переведена в режим "Только чтение". Пользователь не сможет внести изменения в карточку

8 - закрытие карточки
- карточка будет закрыта. При этом если в ней были сделаны изменения, то пользователю будет отображен диалог с предложением сохранения изменений.
Так же будет вызвано событие "закрытие карточки"

16 — немедленное сохранение изменений
- данные из CardData карточки будут отправлены на сервер.

32 — установка флага изменения данных карточки
- при возврате данного значения карточка будет считать, что в неё внесены изменения. При закрытии вызовется соответствующий диалог.

64 — установка флага сохранения изменений
- карточка будет считать, что все изменения сохранены. Диалог при закрытии не будет отбражен. Значения 32 и 64 исключают друг друга.

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

4096 – загрузить номер в карточку (если он был изменен)
- карточка отобразит измененный номер. Т.к. данное поле находится на основной вкладке, то для того, чтобы состояние отобразилось нужен данный флаг