Больше хороших боянов, товарищи! Ура!!!
(из первомайского обращения к коллективу
фабрики музыкальных инструментов)
Тема взаимодействия 1С с другими приложениями через COM относится к разряду популярных и
активно обсуждается во многих публикациях, например:
//infostart.ru/public/65045/
//infostart.ru/public/69248/
//infostart.ru/public/64883/
//infostart.ru/public/62737/
//infostart.ru/public/81333/
//infostart.ru/public/170424/.
Материалы для данной работы получены в результате разработок, решавших практические задачи обмена данными между 1С и информационной
системой «ЭТРАН» РАО РЖД, а также с программными системами прочих поставщиков информации о движении грузов по железным дорогам.
История версий:
Версии: 8.1.1.4 (для 8.1) и 8.2.1.4 (для 8.2) от 01.03.2014:
1) Набор прав SA для усиленного контроля "полного доступа" к базе,
описанного в //infostart.ru/public/225570/.
Используется для контроля доступа к обработке "КонсольЗапросов1СADO"
2) Автономная подсистема "Произвольные фоновые и регламентные задания" (бетта-версия).
3) Дальнейшее развитие функционала обработки "КонсольЗапросов1СADO":
версия консоли: 8.1.1.3 от 01.03.2014:
1. Реорганизация структуры данных и алгоритмов обработки для обеспечения совместимости
с управляемым приложением.
2. Вынос функционала обработки выборки запроса из модуля формы "ОбработкаВыборки" в модуль объекта.
3. Обработка выделенных строк таблицы результата запроса в форме "ОбработкаВыборки".
4. Вывод времени выполнения и отображение статуса обработки строк в форме "ОбработкаВыборки".
5. Контроль ссылочной целостности при непосредственном удалении объектов в форме "ОбработкаВыборки".
6. Новые шаблоны заполнения для обработки выборки запроса -
- "Обработка табличной части" и "Обработка движений регистратора".
7. Сохранение результата запроса во внешнем файле (*.obj8).
8. "Загрузка" в результат запроса объекта 1С (таблицы/дерева значений), сохраненого во внешнем файле (*.obj8).
9. "Загрузка" в результат запроса списка помеченных на удаление объектов;
10. "Загрузка" в результат запроса таблицы ссылок на список объектов, полученных при выполнении другого запроса;
11. Запрос в режиме "Консоль кода" с показом результатов вычислений в табло значений (в "результате" запроса);
12. Заполнение дерева запросов по переданному объекту "Запрос" -
- используется подсистемой "ViewValues" для его "просмотра".
13. Масса интерфейсных улутшений (в том числе список последних открытых файлов запросов).
14. Интеграция с обработкой 1С:Администратор (//infostart.ru/public/100967/), требуемая версия не ниже 5.6.
Версия 8.1.1.3 от 22.04.013:
1) Часть функционала из модуля объекта плана обмена "ОбменДаннымиCOM" перенесена в новый общий модуль "COMУзел"
(для совместимости с видимостью контекстов в управляемом приложении) с сохранением обратной совместимости;
2) В список стандартных настроек плана обмена добавлены настройки для работы с операционной системой через объект "WScript.Shell"
В форме автозаполнения добавлено заполнение стандартных узлов с кодами "WSH.Run" и "WSH.Exec";
3) Реализована возможность подключения-отключения к источнику данных на стороне сервера с инициализацией (передачей управления)
со стороны клиента (для выполнения на стороне сервера некоторых действий: например, включения-выключения VPN-соединений);
подробнее...
Версия 8.1.1.2 от 08.03.013:
1) Функционал выполнения запросов ADO:
- поддержка работы с внешней компонентой GameWithFire.dll, подробнее...
2) Консоль запросов:
- возможность держать открытым менеджер временных таблиц для повторного использования
временных таблиц созданных после интерактивного выполнения запроса (Рис.18).
- сервис выборочного удаления строк таблицы результата запроса
по произвольному условию (Рис.16, Рис.17).
Возможности подсистемы:
- Обеспечение взаимодействия и обмен данными 1С:Предприятия с любыми приложениями, поддерживающими технологию COM;
- Развитые возможности для работы с библиотекой ADO:
- а. Выполнение любых инструкций SQL: чтения, вставки, обновления, удаления, изменения структуры данных и т.п.;
- b. Выполнение пакета инструкций (multi-batch-statement);
- c. Возможность использования в запросах большинства опций ADO (Рис.11, Рис.12)
согласно документации (см. ниже ссылки на Интернет-ресурсы); - d. Выполнение запросов с выгрузкой результата в таблицу значений
(в том числе с выгрузкой результата выполнения каждой инструкции из multi-batch-statement в отдельную таблицу значений); - e. Выполнение запросов в цикле с подстановкой значений параметров из переданной таблицы значений,
включая параметризованные запросы ADO;
3. Удобные средства для разработки и выполнения административных задач;
В состав подсистемы входят:
1) общий модуль "COMОбменПривелигированный" - пустой, зарезервирован для регламентных серверных процедур;
2) общие модули "COMОбменСервер" и "COMОбменКлиент" - содержит серверные и клиентские варианты функций следующего назначения:
- a. Выполнение запросов 1С в различных режимах;
- b. Выполнение запросов через ADO к внешним источникам данных в различных режимах;
- c. Выполнение запросов в цикле со значениями параметров из таблицы значений,
включая параметризованные запросы ADO с «пред-подготовкой» команды при первом исполнении;
3) общий модуль "COMОбмен" - содержит процедуры и функции сервисного и общего назначения, в том числе:
- a. Открытие файла по имени с помощью узла плана обмена "ОбменДаннымиCOM" в ассоциированном приложении;
- b. Функции синхронизации данных через регистр сведений "ОбменДаннымиCOMСоответствиеОбъектов";
- c. Общие функции для работы с ADO:
- - Значения перечислений ADO;
- - Соответствие типов 1С и ADO;
- - Установка параметров запросов ADO;
- - Выгрузка результатов запросов ADO в таблицу значений;
4) План обмена "ОбменДаннымиCOM" (Рис.1), выполняет следующие функции:
- a. Служит для хранения данных, необходимых для связи (подключения/отключения) с источником данных через COM (Рис.4):
- - Идентификатор приложения, имя сервера приложения, учётные данные для доступа к данным (логин, пароль);
- - Тип источника данных, возможные значения:
- Файл с данными;
- Файловая база данных (каталог с файлами данных);
- Клиент-серверная база данных;
- Произвольный ресурс интернета;
- - Модули подключения к источнику данных и отключения от источника данных через COM
(исполняются в контексте модуля объекта плана обмена);
- b. Через экспортные методы объекта плана обмена обеспечиваются следующие базовые функционалы:
- - Подключение, отключение к источнику данных через COM;
- - Синхронизация объектов в базе 1С с данными из внешних источников;
В данном функционале механизм регистрации изменений и транспортный механизм системы универсального обмена данными
не задействованы. Имеется практическая возможность для реализации на основе этих механизмов нестандартных обменов с
внешними источниками данных, использующих прямой доступ к базам данных через ADO (в том числе запросы для записи данных
и вызов хранимых процедур). - c. Содержит вспомогательные данные, используемые при заполнении настроек и выборе узла плана обмена из списка:
- - Внутренний числовой код платформы источника данных. Соответствует виду приложения для доступа к данным.
Выбирается из списка стандартных настроек (Рис.5).
Некоторые платформы из этого списка: - 1С:Предприятие-7.7, 1С:Предприятие-8.0 (и остальные версии) через OLE и COM;
- MS Word, MS Excel через COM;
- Различные СУБД через ADO: MS SQL-Server, MySQL, PostgreSQL, IBM DB2, Oracle, FoxPro и т.д.
- Произвольный COM-объект (доступны для изменения любые настройки соединения);
- - Вид узла (конфигурации) источника данных - ссылка из справочника "ВидыУзловCOM".
Используется для произвольной классификации источников данных по их внутренней конфигурации.
Например, для 1С:Предприятие это может быть имя прикладного решения ТИС-9.2, УТ-10.3, УПП-1.3 и т.д.; - d. Предоставляет средства для автоматического заполнения настроек источников данных:
- - Выбор типа платформы источника данных в форме узла плана обмена из широкого списка стандартных настроек;
- - Начальное заполнения плана обмена "ОбменДаннымиCOM" и справочника "ВидыУзловCOM" стандартными
("предопределёнными") значениями в форме автоматического заполнения (Рис.2);
5) Справочник "ВидыУзловCOM", служит для произвольной классификации источников данных по конфигурации базы данных.
Используется для построения списка узлов плана обмена "ОбменДаннымиCOM" c иерархией по видам узлов (Рис.3).
Этот список открывается для подбора источника данных запроса ADO в обработке "КонсольЗапросов1СADO".
6) Обработка "КонсольЗапросов1СADO", доработанная версия стандартной обработки "КонсольЗапросов" (Рис.10).
Удобный инструмент для разработки и администрирования.
В этой консоли сделано много улучшений и дополнительных возможностей, в том числе:
- Выполнение запросов к внешним источникам данных через ADO (Рис.11);
- Использование событий выполнения запросов для организации сложных действий, например, выполнения «составных» запросов (Рис.14);
- Использование событий обработки результатов запросов для обработки данных по произвольному алгоритму (Рис.15);
7) Регистр сведений "ОбменДаннымиCOMСоответствиеОбъектов", используется для хранения соответствий ссылок на объекты из текущей базы 1С и
уникальных кодов, идентифицирующих объекты во внешних источниках данных, соответствующих узлам плана обмена "ОбменДаннымиCOM" .
Работа с библиотекой ADO:
Возможности работы с библиотекой ADO (в части выполнения запросов) реализованы в подсистеме более-менее полно и последовательно,
согласно документации, имеющейся на следующих ресурсах интернета:
1. Справочная информация (учебник) по библиотеке ADO (Microsoft ActiveX Data Object):
http://www.w3schools.com/ado/
2.Информация по строке соединения с различными источниками данных ADO:
http://www.connectionstrings.com/
3.Статьи о использовании библиотеки ADO:
http://www.script-coding.com/ADO.html
http://www.sql.ru/articles/mssql/2005/122703ado.shtml
Документация:
По объектам подсистемы составлено подробное описание, включающее подробности, не описанные в настоящей статье.
О некоторых из них также можно прочитать в следующих публикациях:
1. Подсистема "COMExchange": прямой доступ к EXCEL через ADO.
2. Подсистема "COMExchange": «прямые» запросы к базе 1С через ADO или как простые элементы сделать “предопределёнными”.
3. Подсистема "COMExchange": ускорение выгрузки запросов ADO или «игра с огнём».
4. Подсистема "COMExchange", консоль запросов, сервис обработки выборки запроса: грузим курс «бакса» ЦБРФ из файла *.dbf или *.xlsx.
5. Подсистема "COMExchange", консоль запросов, сервис обработки выборки запроса: корректируем регистры или «Берём банк, кассу, экспроприируем экспроприаторов».
6. Управление VPN-соединением из 1С на стороне клиента и на стороне сервера.
7. Подсистема "COMExchange": консоль запросов в режиме «Консоль кода».
Комплект поставки:
Подсистема поставляется вместе с подсистемой «ViewValues»,
так как она используется некоторыми функциями просмотра табличных объектов в консоли запросов (Рис.13).
Архив комплекта поставки COMExchange-8x.rar содержит:
1. файлы конфигураций подсистемы для следующих релизов платформ 1С: 8.1.14, 8.2.13, 8.2.14;
2. файл ..\Samples\*.* (сохраненные запросы, файлы с данными) - примеры демонстрирующие возможности подсистемы;
Особенности установки:
После установки рекомендуется выполнить начальное заполнение объектов подсистемы стандартными значениями
в форме автоматического заполнения (Рис.2).
Благодарности:
Хочу выразить признательность неизвестному программисту 1С, оставивший авторский комментарий //Vitkovsky в форме
обработки выборки данных консоли запросов, за удобный, гибкий инструмент, который много раз выручал меня в работе.