стр. 1
(всего 10)

СОДЕРЖАНИЕ

>>

АНДРЕЙ МИХАЙЛОВ




ПРЕДПРИЯТИЕ
7.7/8.0
СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ

ПРИМЕНЕНИЕ
ТЕХНОЛОГИЙ OLE, COM,
I ActiveX


ИСПОЛЬЗОВАНИЕ
СКРИПТОВ WSH И WMI


ИМЕНЕНИЕ ADO
SQL-DMO ПРИ РАБОТЕ
БАЗАМИ ДАННЫХ


ПОЛЬЗОВАНИЕ
TJVE DIRECTORY
RVICE INTERFACES
Андрей Михайлов




1C:
ПРЕДПРИЯТИЕ
7.7/8.0
СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ




Санкт-Петербург
«БХВ-Петербург»
2005
УДК 681.3.06
ББК 32.973.26-018.2
М69

Михайлов А. В.
М69 1С:Предприятие 7.7/8.0: системное программирование. — СПб.:
БХВ-Петербург, 2005. — 336 с.: ил.
ISBN 5-94157-536-Х
Содержится информация, предназначенная для практического применения
скрытых возможностей операционной системы и разнообразных СОМ-объектов при
разработке собственных информационных систем на платформе "1С:Предприятие"
версий 7.7 и 8.0. Рассмотрены особенности использования объектов ActiveX, ад-
министрирования Windows средствами WMI и WSH, взаимодействия с базами
данных посредством интерфейсов ADO и SQL-DMO, применения технологии
OLE Automation и др. при работе в среде "1C:Предприятие". Материал сопровож-
дается большим количеством наглядных и подробно прокомментированных при-
меров, полные тексты которых приведены на компакт-диске.

Для программистов


УДК 681.3.06
ББК 32.973.26-018.2


Группа подготовки издания:
Главный редактор Екатерина Кондукова
Зам. гл. редактора Игорь Шишигин
Зав. редакцией Григорий Добин
Редактор Владимир Красильников
Компьютерная верстка Натальи Караваевой
Корректор Зинаида Дмитриева
Дизайн серии Инны Тачиной
Оформление обложки Игоря Цырульникова
Зав. производством Николай Тверских


Лицензия ИД № 02429 от 24.07.00. Подписано в печать 20.12.04.
Формат 70x100'/». Печать офсетная. Усл. печ. л. 27,09.
Тираж 4000 экз. Заказ № 722
"БХВ-Петербург", 190005, Санкт-Петербург, Измайловский пр., 29.
Санитарно-эпидемиологическое заключение на продукцию
№ 77.99.02.953.Д.006421.11.04 от 11.11.2004 г. выдано Федеральной службой
по надзору в сфере защиты прав потребителей и благополучия человека.
Отпечатано с готовых диапозитивов
в ГУЛ "Типография "Наука"
199034, Санкт-Петербург, 9 линия, 12



ISBN 5-94157-536-Х с Михайлов А. в., 2005
О Оформление, издательство "БХВ-Петербург", 2005
Содержание


Введение 9
Зачем нужна эта книга 9
Структура книги 9
Программные требования 11
Описание сопроводительного CD-ROM 12
Источники информации 12

Глава 1. Применение технологий СОМ и ActiveX 13
Технологии СОМ и ActiveX 13
Работа с объектом Internet Explorer 15
Определение текущего разрешения экрана 15
'.
Анализ HTML-страниц ...16
Работа с POST-запросами в HTML-формах 17
Работа с объектом "Microsoft Winsock" 20
Определение IP-адреса локального компьютера 21
Определение IP-адреса удаленного компьютера 21
Создание штрихкодов с использованием ActiveX ActiveBarCode ..* 22
Использование ActiveX Windows Media Player 24
Использование помощников Microsoft Agent 26
Понятие MS Agent 26
Практическое применение MS Agent 27
Интерактивное взаимодействие с MS Agent 36
Создание HTML-редактора 45
Регулярные выражения 52

Глава 2. Администрирование Windows средствами WMI 59
Понятие WMI 59
Доступ к объектам WMI 61
Сбор данных об аппаратном составе 67
Работа с программным обеспечением 69
Содержание

Получение списка установленного программного обеспечения 70
Удаление программного обеспечения 71
Работа со службами и процессами 71
Получение списка сервисов 73
Установка приоритета процесса. 73
Завершение процесса 74
Запуск и приостановка выполнения сервиса 74
Работа с операционной системой 75
Определение информации об ОС 76
Выключение компьютера 76
Определение разрешения экрана 77
Список элементов автозагрузки 77
Активизация копии Windows XP/Server 2003 77
Просмотр учетных записей и доменов 78
Определение домена компьютера 78
Определение роли компьютера 79
Определение имени текущего пользователя 80
Определение локальных групп компьютера 80
Определение списка пользователей и групп 81
Работа с системной датой и временем 82
Определение даты и времени '. 82
Определение временной зоны 82
Работа с журналами событий 83
Получение информации о журнале событий 84
Копирование и очистка журнала 84
Просмотр записей журнала 85
Работа с файлами и папками 85
Переименование файлов 86
Поиск всех файлов по расширению 86
Открытие общего доступа к папке 87
Работа с принтерами 87
Добавление нового сетевого принтера 88
Установка принтера по умолчанию 89
Работа с заданиями планировщика 89
Просмотр заданий в планировщике 90
Создание заданий 90
Работа с системным реестром 91
Чтение значений ключей реестра 92
Создание нового раздела 92
Создание нового параметра 93
Работа с сетью 93
Отключение сетевого соединения 93
Определение MAC- и IP-адресов 94
Использование команды Ping 94
Содержание

Вставка текста и объектов в документ и форматирование текста 149
Перемещение курсора по тексту 151
Создание таблиц 153
Обращение к свойствам документа 154
Выгрузка метаданных в MS Word 155
Динамическое создание и выполнение макросов MS Word 159
Проверка орфографии текстов в MS Word 161
Работа с Microsoft Excel 164
Запуск MS Excel, создание и открытие рабочих книг 164
Сохранение, печать и закрытие рабочих книг MS Excel 165
Обращение к листам и ячейкам 166
Создание диаграмм 168
Выгрузка метаданных в MS Excel 169
Создание сводных таблиц MS Excel 173
Работа с Microsoft PowerPoint : 176
Запуск MS PowerPoint и открытие презентаций ..176
Сохранение, печать и закрытие презентаций 177
Демонстрация слайдов 179
v
Работа с Adobe Photoshop 181

Глава 5. Использование ADO 185
Понятие ADO 185
Соединение с источником данных 187
Выполнение SQL-запросов и хранимых процедур 192
Обращение к результатам запроса 198
Работа со структурой базы данных (ADOX) 202
Чтение структуры базы данных... 203
Создание баз данных и их объектов 206
Удаление объектов базы данных 208
Доступ к данным Microsoft Excel через OLE DB 209
Доступ к данным Microsoft Project через OLE DB 214

Глава 6. Использование SQL-DMO 227
Понятие SQL-DMO 227
Получение списка доступных серверов 228
Перечисление спецификаций баз данных 229
Получение списка таблиц и спецификаций полей 230
Получение списка представлений ..233
Получение списка хранимых процедур 233
Изменение структуры баз данных 234
Создание и удаление баз данных 234
Создание и удаление таблиц и их полей 236
Содержание

Глава 3. Использование скриптов WSH 97
Что такое WSH 97
Объектная модель WSH 97
Запуск произвольного VB-скрипта (VBS) 98
Выполнение операций с файловой системой 100
Получение сведений о дисках , 100
Получение сведений о папках и файлах 102
Проверка существования определенного диска, каталога или файла 104
Копирование файлов и папок 104
Перемещение файлов и папок 105
Удаление файлов и папок 105
Создание папок 105
Работа с текстовыми файлами 106
Получение списка всех доступных дисков, папок и файлов 108
Чтение свойств МРЗ-файлов 109
Специальные папки 112
Работа с ярлыками Windows 114
Создание ярлыков для файлов 114
Копирование, перемещение и удаление ярлыков 115
Создание ярлыков для URL-адресов 116
Работа с системным реестром Windows 116
Понятие реестра 116
Запись, чтение и удаление ветвей реестра 117
Работа с сетевыми ресурсами 119
Получение информации о сетевой идентификации 119
Работа с сетевыми дисками 120
Работа с сетевыми принтерами 121
Управление программами : 122
Управление калькулятором 125
Управление Microsoft Word 125
Запуск встроенного калькулятора 126
Закрытие окна сообщений в системе "1С:Предприятие" 126

Глава 4. Использование OLE Automation 129
Понятие OLE Automation 129
Использование системы "1С:Предприятие" в качестве
OLE Automation сервера 130
Использование OLE Automation сервера в версии 7.7 131
Использование OLE Automation сервера в версии 8.0 135
Использование СОМ-соединения в версии 8.0... 143
Работа с Microsoft Word 146
Создание и открытие документов MS Word 147
Сохранение, печать и закрытие документов 147
Содержание

Создание SQL-скриптов 246
Выполнение SQL-запросов 248
Резервирование и восстановление базы данных 251
Настройка ограничений доступа к данным 253


Глава 7. Команды управления Windows, использующие ruiuU132 261
Понятие rund!132 261
Запуск элементов панели управления 262
Запуск мастеров 269
Работа с сетью Интернет 271
Установка и удаление принтера 272
Прочие команды 276


Глава 8. Интернет-технологии 281
Работа с электронной почтой 281
Использование команды mailto 281
Использование интерфейса MAPI 282
Использование компоненты V7Plus.dll 286
Использование компоненты Rom-Mail.dll 289
Использование объекта Почта 295
Использование объекта ИнтернетПочта 298
Работа с протоколом FTP 303
Использование программы ftp.exe 303
Использование объекта FTPCoeduneme 310


Глава 9. Использование Active Directory Service Interfaces 313
Понятие ADSI 313
Формирование дерева объектов WinNT Provider 314
Вывод списка всех доменов локальной сети 317
Вывод списка пользователей группы 318
Создание и удаление пользователей 318
Создание и удаление групп пользователей 319
Манипулирование с учетными записями 320
Вывод информации о компьютере и пользователе 321


Приложение. Описание прилагаемого компакт-диска 329

Предметный указатель 333
ОАО «ТЕХНОЛОГИИ УСПЕХА»

ФУНДАМЕНТ™




НАДОЕЛИ ПРОГРАММЫ-ПОЛУФАБРИКАТЫ?

Поставщики корпоративных информационных систем предлагают Вам «почти
готовые» системы «быстрого приготовления». Вам уже надоело сражаться
с «почти готовностью» к настоящей работе? Давайте оставим работу с полу-
фабрикатами программистам. Вам нужен действительно готовый продукт,
созданный именно для Вас.

ОАО «Технологии Успеха» спе-
циализируется на проектах разра-
ботки и внедрения заказных инфор-
мационных систем на платформе
«1С:Предприятие 7.7/8.0». Это озна-
чает, что каждое Ваше требование
будет учтено и реализовано точно
в срок. Мы гарантируем Вам посто-
янную полную готовность системы
к работе независимо от количества
Ваших пожеланий по ее усовершен-
ствованию.

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


Наши телефоны: в Москве — (095) 975-0442;
в Великом Новгороде — (8162) 112-120
Адрес для связи: info@tehuspeh.ru
Наш сайт в Интернете: www.tehuspeh.ru


ые программные продукты
Введение


Зачем нужна эта книга
Предметом изучения в данной книге является широкий спектр вопросов по
профессиональному программированию в системе "1C:Предприятие" вер-
сий 7.7 и 8.0, а также использование скрытых и неочевидных возможностей
данной системы.
Книга представляет собой практическое руководство, предназначенное для
программистов, разработчиков и администраторов системы "1С:Предприятие".
В ней рассматриваются следующие темы: работа с технологиями ActiveX,
COM, WMI и WSH; OLE Automation; интеграция с базами данных через ин-
терфейсы ADO и SQL-DMO; работа с Интернетом, электронной почтой и FTP;
интеграция с внешними приложениями и многое другое.
Главная цель книги — дать читателю основы понимания того, что возмож-
ности системы "1C:Предприятие" не ограничиваются решением задач для
автоматизации документооборота. В этой связи особо подчеркивается, что
в системе "1С:Предприятие" можно использовать абсолютно разные техно-
логии программирования, которые активно используются программистами
в других средах и языках программирования.
Книга не является традиционным учебником по программированию в среде
"1С:Предприятие". Она сосредотачивает внимание читателя на неявных,
скрытых, но не менее важных ее возможностях, а также возможностях опе-
рационной системы и разнообразных СОМ-объектов.
В книге содержится большое количество примеров, демонстрирующих вари-
анты использования различных приемов и технологий программирования.
Причем примеры рассматриваются для обеих версий системы (7.7 и 8.0).


Структура книги
Глава 1 "Применение технологий СОМ и ActiveX". В этой главе обсуждаются
основы технологий СОМ и ActiveX. Здесь можно найти краткий обзор их воз-
можностей, а также получить всю необходимую информацию по использованию
Введение

этих технологий. Материал этой главы будет особенно полезен начинающим
разработчикам, которые пока еще не работали с СОМ и ActiveX.
Теоретическая часть главы подкрепляется большим количеством примеров
использования данных технологий. В частности, рассматриваются приемы
работы с Internet Explorer, Microsoft Winsock, ActiveBarCode, Windows Media
Player ActiveX, Microsoft Agent и многие другие.
Глава 2 "Администрирование Windows средствами WMI". В этой главе рас-
сматривается, каким образом возможно автоматизировать службу систем-
ного администратора средствами Windows Management Instrumentation (WMI).
В этой связи показывается, как выполнять различные операции с учетными
записями пользователей; доменами; операционной системой; файлами; сис-
темным реестром; оборудованием, входящим в локальную вычислительную
сеть. Кроме этого, здесь также можно будет узнать о дополнительных функ-
циях, включенных в интерфейс WMI.
Глава 3 "Использование скриптов WSH". Данная глава посвящена рассмотре-
нию возможностей стандартного компонента операционной системы
Windows Script Host (WSH). В связи с этим, в ней подробно рассмотрена
объектная модель WSH, с помощью которой можно работать с файловой
системой, системным реестром, специальными папками и ярлыками Windows,
ресурсами локальной сети, а также запускать процессы и контролировать
ход их выполнения.
Если даже читатель уже знаком с интерфейсом WSH, рекомендуется прочи-
тать данную главу, чтобы выяснить все возможности интерфейса и закре-
пить знания на подробно разобранных примерах.
Глава 4 "Использование OLE Automation". Глава посвящена практическому
использованию технологии OLE Automation. В ней приводится обзор самых
популярных OLE-серверов, таких как Microsoft Word, Excel, PowerPoint и
Adobe Photoshop. Помимо этого рассматриваются возможности использова-
ния системы "1С:Предприятие" версий 7.7 и 8.0 в качестве OLE Automation
сервера, а также приемы работы с СОМ-соединением в версии 8.0.
Помимо практической части в главе раскрываются понятия OLE-объекта, кон-
тейнера приложения, сервера приложения и другие основополагающие термины
и принципы обработки данных с помощью технологии OLE Automation.
Глава 5 "Использование ADO". Эта глава книги раскрывает вопросы интегра-
ции разрабатываемых конфигураций с произвольными базами данных при
помощи технологии Microsoft ActiveX Data Objects (ADO).
В ней рассматривается объектная модель интерфейса ADO, используемая
для соединения с источником данных для организации их чтения, добавле-
ния, удаления и модификации.
Помимо ADO в главе содержится описание технологии ADO Extensions
for Data Definition and Security (ADOX), которая представляет собой набор
Введение 11

объектов, позволяющих манипулировать метаданными в базах данных и
управлять объектами, отвечающими за безопасность системы.
Глава 6. "Использование SQL-DMO". Здесь описывается еще одна технология
доступа к базам данных Microsoft SQL Server с помощью технологии SQL
Distributed Management Objects (SQL-DMO).
В ней приводятся примеры манипуляции с базами данных Microsoft SQL
Server, таблицами, представлениями, хранимыми процедурами и SQL-
запросами. Также приводятся примеры работы с сервисными возможностя-
ми Microsoft SQL Server, такими как резервирование и восстановление баз
данных и настройка ограничений доступа к данным.
Глава 7 "Команды управления Windows, использующие rundll32". В этой главе
читатель узнает возможности использования утилиты командной строки
rundll32, которая позволяет запускать некоторые команды, заложенные в
DLL-файлах.
Помимо этого рассматриваются примеры запуска элементов панели управ-
ления, работа с сетью Интернет, принтерами и многое другое.
Глава 8 "Интернет-технологии". Данная глава посвящена использованию
интернет-технологий в конфигурациях, разрабатываемых в среде системы
"1С:Предприятие" версий 7.7 и 8.0.
Также здесь рассматриваются практические примеры работы с электронной
почтой, включая как объекты доступа к почтовым ящикам, посредством ин-
терфейса Messaging Application Program Interface (MAPI), так и объекты,
предназначенные для прямой работы с почтовыми серверами.
Помимо этого рассматриваются различные приемы работы с протоколом FTP.
Глава 9 "Использование Active Directory Service Interfaces". Это последняя глава
книги, в которой рассматриваются вопросы работы с технологией Active
Directory Service Interfaces (ADSI).
В ней приводятся примеры манипуляции службой WinNT Provider, которая
позволяет работать с доменами, рабочими станциями, пользователями и
группами локальной сети.


Программные требования
Для запуска приведенных в книге практических примеров необходима
установка системы "1С:Прёдприятии" версий 7.7 или 8.0. При этом реко-
мендуется использовать операционную систему Microsoft Windows 2000
или ХР.
Для выполнения отдельных примеров необходимо наличие установленных
приложений или некоторых СОМ-объектов, которые располагаются на при-
лагаемом к данной книге компакт-диске.
Введение
_J2

Описание сопроводительного CD-ROM
В прилагаемом CD-ROM содержатся все исходные тексты примеров, а также
СОМ-объекты, которые рассмотрены в книге. Помимо примеров, на компакт-
диске содержится Offline-версия интернет-проекта ERP Group (www.erpg.ru),
основателем которого является автор книги.


Источники информации
При написании книги использовалось множество интернет-ресурсов, ос-
новными из которых являются:
П http://www.ospi.ru — издательство "Открытые системы";
П http://msdn.microsoft.com — Microsoft Developer Network;
П http://rusproject.narod.ru — "Русский проект", автор А. Климов;
П http://admtech.mrsu.ru — Мордовский государственный университет
им. Н. П. Огарева "Технологии администрирования Windows";
П http://avblc.narod.ru — домашняя страница Алексея Бажитова;
О http://www.erpg.ru — проект Андрея Михайлова "ERP Group".
Автор книги выражает искреннюю благодарность авторам данных информа-
ционных ресурсов.




г
Глава 1


Применение
технологий СОМ и ActiveX
Технологии СОМ и ActiveX
Аббревиатура СОМ расшифровывается достаточно просто. По существу это
краткая запись понятия — Component Object Model (компонентная объект-
ная модель). Иногда говорят — "модель СОМ".
Построение компонентной объектной модели осуществляется при помощи
соответствующей информационной технологии. Суть ее заключается в том,
что программы строятся из компонентов, которые в свою очередь состоят из
объектов. Эти компоненты и объекты могут представлять собой непосредст-
венно исполняемый двоичный код или файлы (DLL, EXE), которые никак
не надо "связывать" с проектом, для которого они построены. Их достаточно
зарегистрировать в операционной системе и они будут доступны любой
программе, исполняющейся на данной машине. Таким образом, использо-
вание их в программе производится без применения операций сборки моду-
ля. Более того, модель СОМ позволяет вызывать объекты какого-либо ком-
понента из своей программы без указания того, где они расположены. Здесь
достаточно знать только имя объекта.
Объекты СОМ можно создавать на любом языке, способном поддерживать
данный интерфейс. После этого обращаться к методам этих объектов можно
будет на любом языке, в том числе и на встроенном языке системы
"1С:Предприятие", позволяющем осуществлять вызовы данного двоичного
интерфейса. Ни объект, ни его клиент не знают (да и зачем им это) — на
каком языке написаны другие.
Технология СОМ (в дальнейшем просто — СОМ) разработана Microsoft,
а поэтому первоначально была доступна для программ, работающих под
управлением Microsoft Windows 9x и Microsoft Windows NT. Теперь Microsoft
предоставляет поддержку СОМ и для Macintosh. Хотя Microsoft не поддер-
живает СОМ на других операционных системах, этот пробел заполнен
14 Глава 1

третьими фирмами. Несколько компаний, больших и малых, предоставляют
реализации СОМ и основанных на ней технологий для широкого диапазона
операционных систем.
Технология ActiveX построена на основе компонентов COM. ActiveX — это
технология, разработанная фирмой Microsoft с целью стандартизации про-
граммных компонент. Это системная технология, представляющая совокуп-
ность средств, с помощью которых объекты, разработанные различными
разработчиками на разных языках программирования и работающие в раз-
ных средах могут взаимодействовать друг с другом без какой-либо модифи-
кации их исполняемых модулей (двоичных кодов).
Все ActiveX-компоненты можно разделить на два типа:
'П Визуальные (например, Microsoft Agent, Progress Control, Slider Control,
календарь, таймер и пр.);
П не воспринимаемые визуально, но обеспечивающие какую-либо функ-
цию интеграции разных по происхождению компонент.
Преимущества использования технологии ActiveX заключаются в следующем:
П быстрое написание программного кода, которое выражается в том, что раз-
работка приложений становится очень похожей на программирование,
в котором используются отдельные "программные кирпичики" (элементы
ActiveX);
П открытость и мобильность, являющиеся следствием спецификации дан-
ной технологии, недавно переданной в Open Group, как основы откры-
того стандарта (кроме того, Microsoft совместно с компаниями Metro-
werks и Bristol заканчивает реализацию технологий ActiveX для платформ
Macintosh и UNIX);
П возможность написания приложений с использованием любых средств разра-
ботки, выражающееся в том, что программные элементы ActiveX могут
использоваться в Visual Basic, Visual C++, Borland Delphi, Borland C++,
1С:Предприятие и других средствах разработки приложений;
П большое количество уже существующих программных элементов ActiveX,
причем некоторые из разработанных компонентов являются бесплатны-
ми и могут применяться в приложениях независимых разработчиков;
П стандартность, выражающаяся в том, что технология ActiveX основана
на широко используемых стандартах Интернета (TCP/IP, HTML, Java), с од-
ной стороны, и стандартах, введенных в свое время Microsoft и необхо-
димых для сохранения совместимости с СОМ и OLE, с другой.
Как ни странно, при рассмотрении проблемы расширения встроенного язы-
ка системы "1С:Предприятие", речь заходит только о внешних компонентах,
в основу которых положена идеология СОМ, но которые должны быть на-
писаны по единому стандарту "1C". Следствием этого является невозмож-
Применение технологий СОМ и ActiveX 15

ность использования компонентов, которые написаны в средах других язы-
ков программирования. В связи с этим, в данной главе будут рассмотрено
большое число возможностей использования стандартных СОМ- и ActiveX-
объектов в системе "1С:Предприятие".
В системе "1С:Предприятие" (версия 7.7) новый экземпляр СОМ-объекта созда-
ется с помощью конструкции Идентификатор = СоздатьОбъект("ИмяОбъекта").
Для версии 8.8 оператор создатьОбъект заменяется на новый сомобъект.
Методы и свойства СОМ-объектов в дальнейшем становятся доступными
через созданный объект.


Работа с объектом Internet Explorer
СОМ-объект, предоставляемый браузером Microsoft Internet Explorer, позво-
ляет выполнять множество функций. Например, получение данных с раз-
личных Web-сайтов и использование полученной информации в своих це-
лях, автоматическая регистрация сайта во всех поисковых системах сразу,
решение задач посылки GET и POST-запросов и др. Поскольку данный
браузер присутствует в любой современной операционной системе семейст-
ва Windows, то использование данного компонента является одним из самых
универсальных способов получения сторонних HTML-данных.
Рассмотрим ряд приемов использования данного СОМ-объекта.

Определение текущего разрешения экрана
Для того чтобы определить текущее экранное разрешение, находясь в брау-
зере, необходимо запустить объект internet Explorer и определить, как это
показано в листинге 1.1, текущее разрешение.




objIE = СоздатьОбъект("InternetExplorer.Application");
objIE.Visible =0; // Отключаем видимость
objIE.Navigate("about:blank"); // Загружаем пустую страницу
Пока objIE.readyState < 4 Цикл // Ждем пока она загрузится
КонецЦикла;
oScreen = objIE.document.parentWindow.screen;
Сообщить("Текущее разрешение экрана: " + oScreen.width + "х" +
oScreen.height);

Приведенный код работает в системе "Ю.Предприятие 7.7". Для версии 8.0
необходимо в первой строке заменить "создатьОбъект" на "новый сомобъект".
16 Глава 1

Внимание
Если в цикле ожидания готовности объекта obj IE условие obj IE. readystate < 4
заменить на objiE.busy (распространенная ошибка), то в Windows 9x прило-
жение будет завершаться с ошибкой примерно один раз из четырех.

Несмотря на всю привлекательность использования Internet Explorer, выше-
описанный подход имеет и значительные недостатки, основной из кото-
рых — это существенное понижение общей производительности приложе-
ния. Для более эффективного определения текущего разрешения экрана
рекомендуется использовать объекты WSH или WMI, о которых будет под-
робно рассказано в последующих главах.

Анализ HTML-страниц
Среди множества методов и свойств Microsoft Internet Explorer есть весьма
ценное свойство Document, которое позволяет получить доступ к содержи-
мому объектной модели HTML документа (то есть возвращает ссылку на тот
же объект, что и строка клиентского JScript: window.document). Это позволя-
ет в свою очередь легко и просто разбирать HTML-документы безо всяких
регулярных выражений.
Рассмотрим примеры использования Internet Explorer для анализа всех ссы-
лок на HTML-странице, получая информацию с сайта автора www.erpg.ru
(листинги 1.2 и 1.3). Данную информацию можно использовать, например,
для автоматического определения наличия необходимой ссылки на свой
сайт при обмене кнопками и баннерами (рекламными блоками) с дружест-
венными сайтами.




objIE = СоздатьОбъект("InternetExplorer.Application");
objIE.Visible = 0;
objIE.Silent = 0;
objIE.Navigate(Адрес);
Пока objIE.readyState<4 Цикл // Ждем пока она загрузится
КонецЦикла;
obj Doc = objIE.Document;
AllTags = objDoc.all.tags("A"); // Получаем всю коллекцию ссылок
Для Ном = 0 По AllTags.length-1 Цикл
Сообщить(AllTags.item(Ном).href);
КонецЦикла;
objIE.Quit(); // Закрываем приложение
objIE = " ;
"
Применение технологий СОМ и ActiveX 17


те для версии 8.0

objIE = Новый СОМОбъект("InternetExplorer.Application");
objIE.Visible = Ложь; // Отключаем видимость
objIE.Silent = Ложь;
objIE.Navigate(Адрес);
Сообщить("Идет загрузка страницы. Ждите...");
Пока objIE.readyState<4 Цикл // Ждем пока загрузится страница
КонецЦикла;
objDoc = objIE.Document;
Для каждого а Из objDoc.all.tags("А") Цикл // Перебираем все ссылки
Сообщить(a.href);
КонецЦикла;
objIE.Quit(); // Закрываем приложение
objIE = Неопределено;

Существует несколько важных отличий в реализации данной задачи на раз-
ных версиях системы "Ю.Предприятие".
1. Создание СОМ-объекта в версии 7.7 происходит с помощью конструк-
ции СоздатьОбъект, а В версии 8.0 — Новый СОМОбъект.
2. Конструкция objooc.aii.tags ("А") возвращает коллекцию СОМ-
объектов с ссылками HTML-страницы, заключенные в тег <А>, но вер-
сия 7.7 не позволяет напрямую работать с подобными коллекциями. По-
этому для этой версии сначала определяется количество элементов в кол-
лекции с помощью структуры AiiTags. length, а только потом каждый
элемент получаем методом ^ет(<номерэлемента>). В версии 8.0 обход
элементов любой коллекции происходит с помощью конструкции
для каждого...из...цикл...конеццикла, причем каждый полученный элемент
цикла уже будет соответствовать очередному элементу коллекции СОМ-
объектов.


Работа с POST-запросами в HTML-формах
Данный тип HTTP-запросов чаще всего используется для транслирования
сторонней информации в тех случаях, когда для доступа к ней требуется ли-
бо идентификация прав доступа (предварительный ввод имени пользователя
и пароля), либо автоматическое заполнение определенной HTML-формы и
отправки этой информации куда-либо, например, на форум.
Обычно, для передачи данных POST-запроса, во всех популярных языках
программирования применяется метод Navigate объекта InternetExplorer со
18 Глава 1

специальным параметром PostData. Однако, несмотря на это, его практиче-
ское использование в среде "1С:Предприятие" сопряжено с некоторыми
трудностями. Дело в том, что данный аргумент должен иметь тип — указа-
тель на структуру SafeArray, который не поддерживается системой
"1C:Предприятие" версии 7.7.
Поэтому самым простым способом отправить POST-запрос посредством
internetExpiorer.Application можно считать "эмуляцию" нажатия кнопки
Submit (управляющая кнопка, используемая для передачи данных формы на
сервер) на какой-либо реальной HTML-форме. Этот способ особенно инте-
ресен с учетом того, что многие скрипты, при обработке POST-запросов,
как раз для защиты от подобной автоматизации, учитывают HTTP_REFERER,
т. е. с какой страницы пришел запрос, и (или) выставляют специальные
сессионные переменные или cookie на той странице, где находится форма,
посылающая POST-запрос.
Листинги 1.4 и 1.5 демонстрируют примеры подобного программного эмулиро-
вания "интерактивного пользователя". При этом программа, написанная для
версии 7.7, приведенная в листинге 1.4, демонстрирует заполнение HTML-
формы (рис. 1.1) форума, расположенного по адресу http://forum.erpg.ru.

; <usernarne>

<subject>

:<message>

|Кнопка "Отправить" в форме имеет имя <post>.

!




Предв.просмотр Отправить

Рис. 1.1. Элементы HTML-формы форума



HTML-формы сообщения на фору

objIE = СоздатьОбъект("InternetExpiorer.Application");
objIE.Visible = 0;
objIE.Silent = 0;
objIE.Navigate("http://erpg.ru/fоrum/posting.php?mode=reply&t=34")
Пока objIE.readyState<4 Цикл // Ждем пока она загрузится
КонецЦикла;
objDoc = obj IE. Document;
objForm = objDoc.forms(0); // Получаем первую форму в документе
Применение технологий СОМ и ActiveX 19

Попытка
// Заполняем поле формы "Имя пользователя"
objForm.elements("username").value = СокрЛП(Имя);
Исключение
КонецПопытки;
objForm.elements("subject").value = СокрЛП(Тема);
objForm.elements("message").value = СокрЛП(Описание);
objIE.Visible = 1;
Сообщить("HTML-форма форума заполнена. Для отправки сообщения необходимо
нажать кнопку Отправить в Internet Explorer.");

К сожалению, версия 7.7 не позволяет выполнить эмуляцию нажатия опре-
деленной кнопки HTML-формы из-за того, что система не опознает метод
click о элемента формы, поэтому для окончательной отправки сообщения
на форум пользователю необходимо вручную нажать на кнопку Отправить
в окне Internet Explorer. Но если на форме имеется только одна кнопка, ис-
пользуемая по умолчанию, то для программной эмуляции ее нажатия можно
ИСПОЛЬЗОВать метод submit: obj Form, submit О .
Версия 8.0 системы "1С:Предприятие" более корректно работает с СОМ-
объектами, поэтому процедура отправки сообщения на форум полностью
автоматизирована. Рассмотрим процедуру автоматического заполнения той
же формы форума и эмуляции нажатия кнопки Отправить (см. листинг 1.5).




objIE = Новый СОМОбъект("InternetExplorer.Application");
objIE.Visible = Ложь; // Отключаем видимость
objIE.Silent = Ложь;
objIE.Navigate("http://erpg.ru/forum/posting.php?mode=reply&t=34");
Сообщить("Идет загрузка страницы. Ждите...");
Пока objIE.readyState<4 Цикл // Ждем пока загрузится сраница
КонецЦикла;
objDoc = objIE.Document; // Получаем объект HTML-документ
objForm=objDoc.forms(0); // Получаем первую форму в документе
Попытка
// Заполняем поле формы "Имя пользователя"
objForm.elements("username").value = Имя;
Исключение
КонецПопытки;
objForm.elements("subject").value = Тема;
20 Глава 1

objForm.elements("message").value = Описание;
objForm.elements("post").click(); // Нажимаем на кнопку "Отправить"
Сообщить("Ваше сообщение отправлено на форум по адресу: " +
"http://erpg.ru/forum/viewtopic.php?t=34");
objIE.Quit(); // Закрываем приложение
objIE = Неопределено;

По-моему приведенный код должен быть понятен без дополнитель-
ных объяснений, за исключением использования конструкции
попытка...исключение...конецПопытки при заполнении имени пользователя на
форме (элемент с именем username). Это делается для того, чтобы предот-
вратить ошибку системы в том случае, если поле username не существует.
На форуме используется система авторизации пользователей, и если пользо-
ватель был авторизирован ранее, то поле username не появляется на форме.


Работа с объектом "Microsoft Winsock"
Microsoft Winsock — это объект ActiveX, который обеспечивает простой дос-
туп к TCP или UDP сетевым операциям. Чаще всего его используют для то-
го, чтобы подсоединиться к удаленному компьютеру и обмениваться дан-
ными в обоих направлениях.
Объект Winsock имеет следующие свойства:
П ByteRecived — возвращает количество полученных данных, находящихся
в данный момент в принимающем буфере;
П LocaiHostName — возвращает имя местного компьютера;
П Locaiip — возвращает IP-адрес местного компьютера в формате
(ххх.ххх.ххх.ххх);
П LocaiPort — возвращает или устанавливает местный порт использования;

К Примечание
Для клиента порт используется для отправки данных. Укажите порт 0, если
приложение не требует специфического порта. В этом случае элемент управ-
ления выберет случайный порт. После установления соединения этот местный
порт используется для TCP-соединений. Для сервера этот порт является при-
нимающим. Если указан порт 0, будет использоваться случайный порт. После
вызова функции Listen свойство содержит порт, который был выбран.

Protocol — возвращает или устанавливает протокол, используемый
Winsock (либо TCP, либо UDP);
RemoteHost — возвращает или устанавливает имя или IP-адрес удален-
ного компьютера, с которым нужно обмениваться данными (можно ука-
зать IP-адрес, имя компьютера или FTP-адрес);
Применение технологий СОМ и ActiveX 21

П RemoteHostip — возвращает IP-адрес удаленного компьютера;
П RemotePort — возвращает или устанавливает порт удаленного компьюте-
ра для соединения (порты, устанавливаемые по умолчанию: 80 — HTTP,
26 - FTP);
П state — возвращает состояние элемента управления в числовом выражении.


Определение IP-адреса локального компьютера
Для определения IP-адреса локального компьютера используется свойство
LocaiiP объекта winsock. В листинге 1.6 приведен фрагмент программы,
показывающий вариант реализации этого действия.

ределение IP-адреса локального компьютера

Winsock = Новый СОМОбъект("MSWinsock.Winsock");
Сообщить(Winsock.LocaiiP) ;
Winsock = Неопределено;

Определение IP-адреса удаленного компьютера
Для определения IP-адреса удаленного компьютера используется свойство
RemoteHostip объекта winsock. В листинге 1.7 приведен фрагмент программы,
показывающий вариант реализации этого действия.




Winsock = Новый СОМОбъект("MSWinsock.Winsock");
Winsock.Connect(ИмяСервера, 139);
Пока Winsock.State = 4 Цикл // Ждем пока произойдет соединение
КонецЦикла;
-
Сообщить(Winsock.RemoteHostIP);
Winsock = Неопределено;

Код довольно простой, но в нем есть некоторые особенности.
П Для TCP-соединения с удаленным сервером используется порт 139, кото-
рый, как правило, доступен всегда.
П Метод Connect является асинхронным, то есть возврат из него осуществ-
ляется сразу же, не дожидаясь установления соединения.
П Для ожидания соединения с удаленным компьютером в цикле анализи-
руется состояние соединения state.
22 Глава 1


Создание штрихкодов
с использованием ActiveX ActiveBarCode
Для эффективного учета движения товаров в организации необходима тех-
нология, позволяющая присваивать каждому товару уникальный код и обес-
печивать быстрое его считывание при минимальных ошибках. Именно этим
условиям и удовлетворяет технология штрихового кодирования товаров.
На данный момент насчитывается около 20 форматов штрихкодов (включая
их модификации), различающихся, в основном, областями применения.
Некоторые форматы имеют механизм контроля корректности, заключаю-
щийся в вычислении одной части кода по другой.
Безусловно, система "1С:Предприятие" позволяет использовать техно-
логию штрихкодирования при автоматизации предприятия с использова-
нием входящего в поставку многих конфигураций ActiveX-элемента —
ActiveBarCode. Он позволяет формировать образ штрихкода непосредст-
венно в "1С:Предприятии". Этот элемент поддерживает практически все из-
вестные форматы штриховых кодов, управление цветом и шрифтом выво-
димого штрихкода, автоматическое определение формата кода, а также
вычисление контрольных цифр.
Компонент ActiveBarCode имеет множество свойств, методов и событий.
Рассмотрим основные свойства, которые чаще всего используются:
П Text — текст выводимый под штрихкодом (обычно номер);
П туре — тип штрихкода (полный список кодов можно найти на сайте
производителя http://www.activebarcode.com);
П AutoType — признак автоматического определения типа исходя из номе-
ра штрихкода;
П showText — признак включения или отключения вывода текста под
штрихкодом;
О ForeCoior — цвет текста штрихкода;
П Backcoior — цвет фона;
П Font — шрифт текста штрихкода.
Фактически данный компонент представляет из себя файл Barcode.ocx, который
может располагаться где угодно, но перед использованием его обязательно не-
обходимо зарегистрировать в системе командой regsvr32 Barcode. осх.
ActiveBarCode является визуальным компонентом, т. е. его можно размес-
тить в диалоге или таблице. Однако следует заметить, что использование
данного ActiveX-компонента несколько отличается в разных версиях систе-
мы "1С:Предприятие". Основное различие состоит в том, что в версии 7.7
невозможно размещать ActiveX-компоненты на формах (разрешено только
в табличных документах). В восьмой версии таких ограничений нет.
Применение технологий СОМ и ActiveX 23

Есть еще одна крайне неприятная особенность версии 7.7. Она заключается
в том, что в этой версии нельзя штатными средствами вставить данный эле-
мент в табличный документ. Чтобы все-таки это сделать, необходимо вста-
вить ActiveBarCode в любом другом приложении (например в MS Word,
"1С:Предприятие" 8.0 и др.), а потом через буфер обмена перенести его
в табличный документ 7.7. Далее, для динамического вывода нужного номе-
ра на штрихкоде надо в свойствах данного объекта прописать необходимые
свойства объекта (рис. 1.2).




Таблица.ТекцщийОбъект.Тех! = СокрЛП(Номер);
Таблица.ТекащийОбъект.ЗНоюТех! = Показывать;
ОК
Таблица.ТекущийОбъект.Туре = Тип;
Расшифровка Отмена
L
W Защита
;
Обновить

Рис. 1.2. Настройка параметров динамического формирования ActiveBarCode


Для вывода табличного документа используется стандартный код
"ЮПредприятия" (листинг 1.8).




Таблица.ИсходнаяТаблица("Таблица");
Таблица.ВывестиСекцию("ШтрихКод");
Таблица.Показать("Штрихкод");


В данном примере предполагается, что:
1. Элемент ActiveBarCode в табличном документе находится в секции
ШтрихКод.
2. Переменные номер, Тип и Показывать, введенные в свойствах элемента,
объявляются и заполняются в коде до вывода таблицы (например, из
диалога или справочника).
24 Глава 1

В версии 8.0 системы "1С:Предприятие" все намного проще. В этом случае
ActiveX-элементы можно устанавливать как на форму (Форма | Вставить
ActiveX и затем выбрать ActiveBarcode), так и в табличный документ (Таб-
лица | Рисунки | Вставить объект).
Так, если элемент ActiveBarcode находится на форме и имеет имя Штрихкод, то
для его формирования достаточно написать код, приведенный в листинге 1.9.




ЭлементыФормы.ШтрихКод.Туре = Тип;
ЭлементыФормы.ШтрихКод.Text = Номер;
ЭлементыФормы.ШтрихКод.ShowText = Показывать;
ЭлементыФормы.ШтрихКод.AutoType = Автоопределение;

В результате выполнения этого кода на форме появится необходимый номер
со штрихкодом (рис. 1.3).

jj ActiveB aiCode
Параметры
Номер: [Т23456739ШГ 0 iQS
Тип: С] Аетоопраделение




Рис. 1.3. Результат формирования штрихкода для версии 8.0



Использование ActiveX Windows Media Player
ActiveX-компонент Microsoft Windows Media Player позволяет просматривать
видео, прослушивать аудиофайлы, а также просматривать рисунки различ-
ных форматов (JPG, BMP и др.). Данный компонент бывает очень полезен,
когда необходимо просмотреть определенную мультимедийную информа-
цию о товаре или поставщике.
Применение технологий СОМ и ActiveX 25

Существует несколько версий Windows Media Player. Для определенности
будем рассматривать версию 9.0, которую можно загрузить на сайте произ-
водителя http://www.microsoft.com/windows/windowsmedia/download/default.asp.

^ Примечание
К сожалению, в "1С:Предприятие" версии 7.7 невозможно использование дан-
ного компонента, поэтому все дальнейшее рассмотрение будет актуально
только для восьмой версии платформы.

Для работы Windows Media Player в системе "1C:Предприятие" необходимо
выполнить всего два условия.
1. Для размещения ActiveX-компонента на форме в меню Форма следует
выбрать пункт Вставить ActiveX. В появившемся списке выбрать Windows
Media Player.
2. Написать код, который бы передавал файл с мультимедийной информа-
цией в ActiveX-компонент (листинг 1.10).




Попытка
ЭлементыФормы-WMP.settings.autostart = True; // Автовоспроизведение
ЭлементыФормы.WMP.URL = ИмяФайла;
Исключение
Предупреждение(ОписаниеОшибки(), 10, "Ошибка");
КонецПопытки;


В данном Примере Применена КОНСТРУКЦИЯ Попытка...Исключение...КонецПопытки
для предотвращения ошибок, связанных с отсутствием в системе данного
компонента. Элемент формы WMP как раз и является ActiveX-компонентом.
С помощью ActiveX Windows Media Player можно также просматривать
свойства файла (tag, Bitrate и пр.). В листинге 1.11 демонстрируется при-
мер просмотра свойств произвольного файла.

'ActiveX Windows Media Player j

Попытка
ЭлементыФормы.WMP.settings.autostart = False;
ЭлементыФормы.WMP.URL = ИмяФайла;


// Получаем объект, предназначенный для работы с выбранным файлом
26 Глава 1

CM = ЭлементыФормы.ИМР.сиггегЛМес11а;


// Получение значения свойства по имени
Сообщить("Полное имя файла: " + CM.getItemInfo("SourceURL"));

// Получение всего списка свойств
Для Ном = 0 по CM.attributeCount-1 Цикл
ИмяСвойства = CM.getAttributeName(Ном);
ЗначениеСвойства = CM.getltemlnfо(CM.getAttributeName(Ном);
Сообщить(ИмяСвойства + " = " + ЗначениеСвойства);
КонецЦикла;
Исключение
Предупреждение(ОписаниеОшибки(), 10, "Ошибка");
КонецПопытки;



Использование помощников Microsoft Agent

Понятие MS Agent
Microsoft Agent — это набор программных средств, которые поддерживают
воспроизведение интерактивных анимированных персонажей. Разработ-
чики могут использовать эти персонажи для создания различных инте-
рактивных приложений, справочных систем, в том числе и в системе
" 1 С: Предприятие".
Также Microsoft Agent предлагает поддержку распознавания голосовой ин-
формации (на основе Microsoft Speech Application Programming Interface,
SAPI 4.0), позволяя управлять приложениями на уровне голосовых команд.
Персонажи могут воспроизводить синтезированную речь (text-to-speech,
TTS), аудиофрагменты или текст.
Персонажи отображаются в собственных окнах, что делает интерфейс более
удобным и гибким. В состав Microsoft Agent входит компонент ActiveX, дос-
тупный из системы "1C:Предприятие".
Эта технология напрямую используется в Office 2000 и включена в состав
ядра Windows 2000. Для установки Microsoft Agent в Windows 98 и Windows
NT 4.0 требуется загрузить соответствующее программное обеспечение
с Web-узла фирмы Microsoft (http://www.microsoft.com/msagent/).
В настоящее время на сайте Microsoft доступны четыре стандартных персо-
нажа, которые можно использовать. Это маг — Merlin, джин — Genie, ро-
бот — Robby и попугай — Peedy (рис. 1.4).
Применение технологий СОМ и ActiveX 27




Рис. 1.4. Основные персонажи Microsoft Agent

Кроме стандартных персонажей в сети Интернет существуют персонажи,
разработанные другими разработчиками на любой вкус.


^ Примечание
На том же сайте Microsoft можно загрузить Microsoft Text-To-Speech для того,
чтобы "агенты" воспроизводили речь (русский голосовой модуль —
Lernout&Hauspie TTS3000), а также редактор "агентов" и официальную доку-
ментацию Microsoft. Так, при написании материала данной главы были исполь-
зованы Microsoft Agent Control 2.0 и персонаж Merlin.


Практическое применение MS Agent
Microsoft Agent очень удобно применять в приложениях, где необходимо
выводить какие-либо сообщения, подсказки и указания пользователю, но не
хочется ограничиваться штатными методами системы. Microsoft Agent по-
зволяет все это сделать красиво, удобно и необычно. Наверняка работать со
столь дружественным интерфейсом, как показано на рис. 1.5, будет приятно
любому пользователю.
В системе "1C:Предприятие" доступ к объекту Microsoft Agent создается
С ПОМОЩЬЮ конструктора СоздатьОбъект ("Agent. Control. 2 " ) , ДЛЯ версии 7.7,
и новый сомобъект("Agent.Control.2"), для версии 8.0. После создания
объекта минимальное, что нужно сделать, — это подключиться к созданно-
му объекту, загрузить необходимый персонаж и вывести его на экран (лис-
тинг 1.12).

персонажа

Попытка
// Устанавливаем ссылку на объект
Agent = Новый СОМОбъект("Agent.Control. 2 ")
28 Глава 1
Исключение
Сообщить("MS Agent не установлен!");
Сообщить("Загрузить MS Agent можно с сайта Microsoft —
http://www.microsoft.com/ms agent/");

Возврат;
КонецПопытки;


Agent.Connected = Истина; // Подключаемся к объекту
Agent.Characters.Load("Merlin", "Merlin.acs"); // Загружаем персонаж
Agent.Characters("Merlin").Show(); // Выводим на экран


Рассмотрим код, приведенный в листинге 1.12, более подробно.
Прежде чем приступить к анимации персонажа, необходимо загрузить его,
используя метод Load, и в качестве аргументов передать два параметра:
идентификатор персонажа и полное имя файла персонажа или его HTTP-
адрес. Microsoft Agent по умолчанию ищет персонажи в каталоге
%WinDir%\MSAgent\Chars (где %WinDir% — это переменная окружения, ко-
торая указывает путь к каталогу операционной системы Microsoft Windows).
Если файл вашего персонажа находится в другом месте, указывайте для него
полный путь. Microsoft Agent поддерживает два формата для хранения дан-
ных доступных анимаций: одиночный файл (ACS) для локального примене-
ния и множественный формат (ACF, АСА), который хранит отдельные виды
анимаций и используется для загрузки анимации отдельно через http-сервер.

_ПX
LJ Журнал операций

1.5 ; ? Перейти в журнал проводок
'х. 1 ; «--4 ^S М..'-^f =€}т Д ft Ч:.; *
'Действия-- = -

. i ,. 1 Организ эция: L
Организация Н омер _ {Сшержание рпераи.ии
Виидркумента
| ^щ6ТЖ2оЖ12:'боЖ"'ОАб'Тяобу!?1""" Операция 0000000013 | Формирование уставного капита...
| Ж 02.06.2003 12: 00: 00 ОАО Глобус" Операция
1| ОООООООС
ОООООООС Чтобы ввести новую ем 0...
it*: > 02.06.2003 19:30:22 ОАО "Глобус" Операция
Ьшообга операцию нажмите кнопку Г'ТаГ";:;!
Операция
ОАО "Глобус"
оооооои <Insert>.
!tf*j 103.06.20031:18:57" " ОАО 'Глобус" Операция юМа...
Операция
!r* |СШ?2аШ2:ОаоГ ОАО Тяобус" ОООООООшЬ и зное уставный капитал •
kX i 03.06.2003 12:00:01 ОАО Тлобус" Операция 0000000018 ПродаЮговаров покупателю Ма...
f,3f "ТозЖгооз^баш" ЪАО'Тлобус"" " Операция 000066Ь020 Гбплата о? покупателя Магазин "В... v
::˜ ^ ;


IE.
a
Дт [С^бконто Дт !Количество Дт Кт Субконто Кт |Количеств^".;^ i Сумма ?з|
(Валюта KfE<«J(^ :Содержание _ _
|__^ I Валюта Дт
_ :Вал, сум^^ ^Номер журнала
80
˜75.Т Тв'олковНик... ; Волков Ник... •• •& Jm 50000,00 ;
|
^'ажена..?а59л??11::„'" I
J Ч
„. j k^ l
j Il -^
80"
75.1 ˜ТЛиберзон М..7Г"
; Отражена задолжен... \л \


Рис. 1.5. Пример вывода сообщения Microsoft Agent
Применение технологий СОМ и ActiveX 29

Приложение может загрузить только единственный экземпляр заданного
персонажа. Но при этом можно использовать одновременно разные персо-
нажи.
Метод show выводит заданный персонаж на экран с одновременным проиг-
рыванием соответствующей анимацией и не имеет параметров. Для скрытия
персонажа существует метод Hide, который тоже параметров не имеет.
Вместо загрузки заданного персонажа, жестко определяя его имя,
вы можете загрузить персонаж по умолчанию (листинг 1.13). Метод
ShowDefaultCharacterProperties объекта Agent ВЫВОДИТ панель настройки
свойств для выбора персонажа по умолчанию. В качестве аргументов в ме-
тод можно (но не обязательно) передавать пару координат (X, Y), задающие
горизонтальную и вертикальную координаты экрана в пикселах для вывода
окна.

Листинг 1.13. Создание объекта MS Agent и вывод персонажа по умолчанию

Попытка
Agent = Новый СОМОбъект("Agent.Control.2");
Исключение
Сообщить("MS Agent не установлен!");
Возврат;
КонецПо'пытки ;


Agent.Connected = Истина; // Подключаемся к объекту
// Вывод панели настройки свойств для выбора персонажа по умолчанию
Agent.ShowDefaultCharacterProperties(4, 4);
Agent.Characters.Load(,); // Загружаем персонаж по умолчанию
Agent.Characters("").Show(); // Выводим на экран персонаж по умолчанию


После вывода персонажа на экран было бы очень хорошо "оживить" его,
т. е. анимировать. Для анимации персонажа MS Agent предоставляет два ме-
тода: MoveTo и Play. Важно отметить, что эти методы не объекта Agent,
а методы конкретного загруженного персонажа (листинг 1.14).
—- -^—------------ .——-—- -j
г----'"'""'-------—--"--•"-•-—"--
! Листинг 1.14. Анимация персонажа MS Agent

Попытка
Agent = Новый СОМОбъект("Agent.Control.2");
Исключение
Сообщить("MS Agent не установлен!");
30 Глава 1

Возврат;
КонецПопытки;

Agent.Connected = Истина; // Подключаемся к объекту
Agent.Characters.Load("Merlin", "Merlin.acs"); // Загружаем персонаж
Characters = Agent.Characters("Merlin"); // Получаем ссылку на персонаж
Characters.Show(}; // Выводим на экран
// Перемещаем персонаж
Characters.MoveTo(100, 100); // Перемещаем в координаты (X, Y)
Characters.MoveTo(200, 0, 500); // 500 — скорость анимации
Characters.MoveTo(300, 100, 0); //0 - без анимации
// Проигрываем заданную анимацию
Для Ном = 1 По 5 Цикл
// Волшебник постучится в монитор
Characters.Play("GetAttentionContinued");
КонецЦикла;
Characters.Play("Search"); // Волшебник покажет волшебный шар

Метод MoveTo перемещает персонаж в указанное место и имеет три пара-
метра. Первые два являются обязательными и задают новые координаты
персонажа (X, Y) относительно всего экрана. Третий параметр необязатель-
ный и означает время перемещения персонажа. По умолчанию используется
1000 миллисекунд. При использовании нулевого значения персонаж пере-
мещается без анимации.
Метод Play проигрывает заданную анимацию для заданного персонажа и
имеет всего один параметр — строку, содержащую имя анимации. Каждый
персонаж имеет свой набор анимаций, поэтому перед использованием дан-
ного метода рекомендуется прочитать документацию к вашему персонажу.
Для того чтобы получить весь список возможных имен анимаций для пер-
сонажа, существует метод AnimationNames, который возвращает коллекцию
этих имен. К сожалению, версия 7.7 системы "1C:Предприятие" не позволя-
ет получить все элементы этой коллекции. В версии 8.0 код вывода всех
возможный анимаций персонажа будет выглядеть так, как это показано
в листинге 1.15.




Попытка
Agent = Новый СОМОбъект("Agent.Control.2");
Исключение
Сообщить("MS Agent не установлен!");
Применение технологий СОМ и ActiveX 31

Возврат;
КонецПопытки;


Agent.Connected = Истина; // Подключаемся к объекту
Agent.Characters.Load("Merlin", "Merlin.acs"); // Загружаем персонаж
Characters = Agent.Characters("Merlin"); // Получаем ссылку на персонаж
// Получение всех возможных анимаций. Перебор элементов коллекции.
Для каждого Имя Из Characters.AnimationNames() Цикл
Сообщить(Имя);
КонецЦикла;


Microsoft Agent выполняет все вызовы по порядку. Поэтому каждая новая
команда начнет выполняться только после завершения предыдущей. Для
того чтобы узнать, выполнена ли заданная команда, вы можете послать за-
прос объекту Request, который используется для получения информации
о состоянии выполнения.
Microsoft Agent имеет также одну интересную особенность. Например, если
статус персонажа не меняется несколько секунд, то Agent начинает само-
стоятельно проигрывать некоторые виды анимаций.
Для того чтобы остановить анимацию персонажа, применяется метод stop,
а для того чтобы остановить все (анимацию, перемещение, речь) — метод
StopAll.
Помимо простой анимации Microsoft Agent имеет возможность общаться
с пользователем, а именно: показывать текстовые подсказки, сообщения
и даже воспроизводить речь.
Для того чтобы персонаж вывел какой-либо текст, существует метод Think,
а для воспроизведения текста — метод Speak (листинг 1.16).

f текстов персонажем MS Agent

Попытка
Agent = Новый СОМОбъект("Agent.Control.2");
Исключение
Сообщить("MS Agent не установлен!");
Возврат;
КонецПопытки;


Agent.Connected = Истина; // Подключаемся к объекту
Agent.Characters.Load("Merlin", "Merlin.acs"); // Загружаем персонаж
32 Глава 1
л
Characters = Agent.Characters("Merlin"); // Получаем ссылку на персонаж
Characters.Show(); // Выводим на экран

Characters.Think("Добрый день, приятной работы!"); // Вывести текст
// Воспроизвести одну фразу из заданных
Characters.Speak("Хорошая погодка!]Не пора ли на обед?");
Characters.Speak(" " "welcome.wav"); // Воспроизвести WAV—файл
,


Метод Think выводит заданный текст в особом окне в виде облачка (как
в комиксах).
Метод speak воспроизводит заданный текст или звуковой файл для задан-
ного персонажа и имеет два параметра. Первый задает воспроизводимую
строку и является необязательным. Второй — строка, содержащая местопо-
ложение звукового файла (WAV или LWV). Здесь указывается либо местопо-
ложение файла (абсолютный или относительный адрес), либо URL-адрес
(если анимация персонажа реализуется через http-протокол).

^ Примечание
Хотя оба параметра являются необязательными, но один из них непременно
должен присутствовать. Используйте пробел в первом параметре, чтобы вос-
произвести звуковой файл без вывода текста.

Используйте вертикальную черту (|) в первом параметре в качестве раздели-
теля между фразами. Это позволит выбирать в случайном порядке текст при
каждом вызове операции. Можно также использовать специальные теги —
Speech Output Tags, предназначенные для изменения голоса (громкость,
тембр и т. п.). Пример использования тегов, характеристика которых приво-
дится ниже, приведен в листинге 1.17.
О Тег \chr\ — определяет голос, каким произносится текст и может при-
нимать значения Normal (нормальный голос), Monotone (монотонно) и
whisper (шепотом). По умолчанию Normal.
П Тег \ctx\ — определяет контекст произносимого текста. Параметр может
принимать значения Address — адреса или телефонные номера, E-mail —
адреса электронной почты и Unknown — неизвестный контекст. По умол-
чанию Unknown.
П Тег \Lst\ — позволяет повторить текст, вызванный ранее.
П Тег \мар\ — позволяет произносить один текст, а показывать другой.
П Тег \раи\ — позволяет выдерживать паузу в произносимой фразе. Дли-
тельность паузы задается в миллисекундах (\Раи=юоо\).
П Тег \ P i t \ — позволяет управлять высотой голоса персонажа. Частота
произносимого текста в герцах (\pit=so\).
Применение технологий СОМ и ActiveX 33

П Тег \Spd\ — позволяет изменять скорость чтения текста. Число, указы-
ваемое как параметр, определяет количество произносимых слов в мину-
ту (\Spd=100\).
П Тег \vol\ — позволяет определять громкость произносимого текста. Па-
раметр может принимать значения от 0 до 65 535 (\voi=65535\).



// Текст, воспроизводимый шепотом
Characters.Speak("\Chr=""Whisper""\Тихо, всем спать...");
// Указываем, что воспроизводим электронный адрес
Characters.Speak("Пишите мне: \Ctx=""E-mail""\mav@erpg.ru");
// Повторяем предыдущий текст
Characters.Speak("\Lst\") ;
// Выводим один текст, а воспроизводим другой
Characters.Speak("\map=""Посетите наш сайт!""=""Добро пожаловать на сайт
www.erpg.ru""\");
// Выдерживаем паузу между фразами
Characters.Speak("Привет!\Раи=1000\Почему не отвечаешь?");
// Плавно изменяем интонацию голоса
Characters.Speak("\pit=50\He делай этого! \pit=300\CTOU! \pit=500\He на-
до!");
// Воспроизводим текст в медленном режиме
Characters.Speak("\Spd=100\KaK я тебе завидую!");
// Воспроизводим текст с пониженной громкостью
Characters.Speak("\Vol=20000\He ори, все спят!");


До сих пор мы рассматривали только методы объектов. Помимо методов
MS Agent имеет еще свойства и события. На событиях останавливаться не
будем, т. к. их невозможно создать средствами системы "1С:Предприятие".
Рассмотрим основные свойства MS Agent.
П Name — возвращает имя персонажа (Джинн, Маг, Робби, Кеша);
П Description — возвращает описание персонажа;
П ExtraData — возвращает расширенные сведения о персонаже;
О version — возвращает версию персонажа;
П visible — возвращает 0, если персонаж скрыт методом Hide, и —1, если
персонаж видим на экране;
П AutoPopupMenu — с помощью этого свойства можно включить или вы-
ключить показ контекстного меню, появляющегося при щелчке правой
2 Зак. 722
34 Глава 1

кнопки мыши на персонаже или иконке в трэйбаре (возвращает текущее
состояние свойства);
О Languageio — возвращает или устанавливает языковой идентификатор
для персонажа;
П Height — устанавливает или возвращает значение высоты кадра для за-
данного персонажа;
О width — устанавливает или возвращает значение ширины кадра для за-
данного персонажа;
П Left — получает или устанавливает левый край кадра персонажа;
О тор — получает или устанавливает верхний край кадра персонажа;
О OriginalHeight — возвращает значение высоты, определенное как на-
стоящее (оригинальное) для заданного персонажа;
П originaiwidth — возвращает значение ширины, определенное как на-
стоящее (оригинальное) для заданного персонажа;
П TTSModeiD — возвращает или устанавливает идентификатор голосового
движка Text-to-Speech (TTS) для персонажа.
В листинге 1.18 показан пример вывода свойств.




Попытка
Agent = Новый СОМОбъект("Agent.Control.2");
Исключение
Сообщить("MS Agent не установлен!");
Сообщить("Загрузить MS Agent можно с сайта Microsoft —
http://www.microsoft.com/msagent/");
Возврат;
КонецПопытки;


Agent.Connected = Истина; // Подключаемся к объекту
Agent.Characters.Load("Merlin", "Merlin.acs"); // Загружаем персонаж
Characters = Agent.Characters("Merlin"); // Получаем ссылку на персонаж
Characters.Show(); // Выводим на экран


// Вывод основных свойств
Сообщить("Имя = " + Characters.Name);
Сообщить("Описание = " + Characters.Description);
Сообщить("Дополнительные сведения = " + Characters.ExtraData);
Применение технологий СОМ и ActiveX 35

Сообщить("Версия = " + Characters.Version);
Сообщить("Видимость = " + Characters.Visible);
Сообщить("Показ контекстного меню = " + Characters.AutoPopupMenu );

// Увеличиваем персонаж вдвое
Characters.Height = Characters.Height * 2;
Characters.Width = Characters.Width * 2;
// Выключаем показ меню
Characters.AutoPopupMenu = Ложь;


Рассмотрим еще один объект — Balloon.
Объект Balloon — это область вывода текстов персонажа, который имеет
ряд свойств.
П BackCoior — цвет фона;
П Bordercoior — цвет рамки;
О Enabled — возвращает признак включения окна сообщений;
О FontcharSet — номер набора таблицы символов (например, 0 — ANSI);
П FontName — имя шрифта;
П FontBoid — признак полужирного выделения шрифта;
П Font italic — признак курсивного выделения шрифта;
О Fontsize — размер шрифта;
П Fontunderiine — признак подчеркивания текста;
П Forecoior — цвет текста;

стр. 1
(всего 10)

СОДЕРЖАНИЕ

>>