Получение данных из "не 1С"

02 января 2013

Файлы для загрузки:

Файл базы данных "AppStatus"Демонстрационная конфигурация

Предисловие

Внешний источник данных

Наступил Новый Год! И снова пора заняться интересным делом! Сегодня мы рассмотрим объект конфигурации "внешний источник данных" и небольшой пример его использования.

Работая с платформой 1С:Предприятие 8.x часто можно столкнуться с необходимостью настройки, создания обмена с другими программными комплексами. Например, на крупных предприятиях можно увидеть картину, когда учет производства ведется в SAP, а налоговый, бухгалтерский и значительная часть управленческого учета в решении на платформе 1С:Предприятие. В основном это "Управление Производственным Предприятием (УПП)". В таких случаях, задача интеграции двух учетных систем решается через создание обмена данными между ними. Однако, в некоторых случаях решить поставленную задачу можно через подключение к базе другой учетной системы напрямую и получения выборки данных для отчетов. Именно это мы рассмотрим сегодня в статье.

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

Что мы имеем?

У нас есть некоторая учетная система "ИКС", которая хранит историю запуска и остановки производственных установок. С технической стороны, эти данные хранятся в таблице SQL со структурой, которую вы можете видеть на следующем скриншоте.

 
SQL-таблица

Как мы видим, название установки хранится в колонке "Appliance", а статус работы и дата его изменения в колонках "Status" и "Date" соответственно.

Со стороны 1С:Предприятия нам необходимо получить эти данные из SQL-базы и выполнить необходимые действия над ними.

Поехали!

Для решения задачи отлично подойдет механизм внешних источников данных, с помощью которого будет организована выборка из SQL-таблицы. Создадим новый объект конфигурации в ветке "Внешние источники данных". Назовем его "ЖурналРаботыОборудования". Для него добавим таблицу данных, укажем строку соединения с базой и информацию для аутентификации. Далее выбираем таблицу "dbo.AppStatus", структура который представлена на скриншоте выше, и нажимаем ОК. В итоге мы имеем таблицу источника данных, из которого можем делать выборки стандартными механизмами платформы, в т.ч. с помощью отчетов на СКД и обычными запросами.

Примечание: Вы можете столкнуться с существенным ограничением внешних источников данных - использовать в запросе одновременно несколько источников данных недопустимо. Если нужно соединить выборку из справочника и внешнего источника данных, то нужно использовать в СКД два набора данных и соединять их или обрабатывать программно две полученных таблицы.

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

На видео Вы могли заметить, что при начале работы в режиме предприятия необходимо заново настроить параметры подключения к внешнему источнику данных. Параметры соединения в таком случае можно настроить на нескольких уровнях использования (см. след. скриншот).

Примеры соединений

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

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

Для всех доступных для изменения параметров зададим их значения в макете табличного документа.

Параметры соединения

При запуске в модуле сеанса вызовем из общего модуля "ИнициализацияПараметровСоединения" экспортную процедуру "УстановитьПараметрыСоединения". Процедура устанавливает общие параметры соединения, если до этого они не были заданы. Программный код выглядит следующим образом:

Пример кода

Общий принцип работы процедуры заключается в обходе областей ячеек, имеющих имена и соответствующие значения для параметров подключения. Перед этим создается новый экземпляр класса "ПараметрыСоединенияВнешнегоИсточникаДанных" и заполняется значениями из макета. В конце процедуры новые общие параметры устанавливаются процедурой "УстановитьОбщиеПараметрыСоединения".

Отчеты

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

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

 Отчет по внешнему источнику

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

Выводы

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

ODBC

В операционной системе Windows источники данных настраиваются через "Панель управления - Администрирование - Источники данных (ODBC)". Там можно увидеть такой источник данных, как "Excel File". 

Самое интересное, что с его помощью мы можем из 1С:Предприятия подключаться к таблице Excel и работать с ней с помощью запросов (!).

Сейчас внешние источники данных используются довольно редко, так как имеют ограниченные возможности:

  • Только чтение данных.
  • Нельзя их использовать в запросах вместе с таблицами других объектов конфигурации.

Возможно в следующих версиях платформы 1С:Предприятие возможности объекта будут расширены и их использование уже не будет столь экзотичным мероприятием.

 


comments powered by Disqus