124 документа
← К списку

Глава 24. Внешние источники данных

страница

Глава 24. Внешние источники данных

24.1. Общая информация

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

24.2. Работа с реляционными внешними источниками данных

24.2.1. Общая информация

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

● в качестве источника данных для запросов;

● в качестве источника данных в системе компоновки данных;

● в качестве источника для динамических списков;

● входить в состав общих реквизитов (см. здесь);

● записи таблиц могут отображаться в управляемых формах «1С:Предприятия» (не поддерживается использование обычных форм для объектов внешних источников данных);

● таблицы внешнего источника данных могут выступать в качестве типов реквизитов информационной базы;

● к таблицам (и полям) внешних источников данных можно применять права доступа и накладывать ограничения доступа к данным;

● доступ к таблицам и полям возможен из встроенного языка;

● таблица внешнего источника данных может входить в состав подсистем (см. здесь);

● таблица внешнего источника данных может входить в состав функциональных опций (см. здесь);

● для таблицы внешнего источника данных можно создавать характеристики (см. здесь).

Для получения доступа к внешним источникам данных используется механизм ODBC. Данные внешних источников данных доступны как для чтения, так и для записи.

Внимание! Механизм внешних источников данных не должен использоваться для доступа к базам данных «1С:Предприятия», так как модель данных «1С:Предприятия» не рассчитана на работу с данными на уровне физических структур хранения в системах управления базами данных (СУБД). Возможность записи во внешние источники данных не должна использоваться для замены штатного механизма хранения данных прикладного решения.

Возможности системы «1С:Предприятие» максимально учитываются при использовании в качестве источника внешних данных следующих СУБД (свойство Тип СУБД параметров соединения с источником данных):

● Microsoft SQL Server,

● IBM DB2,

● PostgreSQL,

● Oracle Database,

● MySQL.

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

При использовании других СУБД возможности работы с внешними источниками данных зависят от самой СУБД. Для таких источников данных, следующие функции и выражения языка запросов: ПОДСТРОКА, ГОД, КВАРТАЛ, МЕСЯЦ, ДЕНЬГОДА, ДЕНЬ, НЕДЕЛЯ, ДЕНЬНЕДЕЛИ, ЧАС, МИНУТА, СЕКУНДА, РАЗНОСТЬДАТ, ЕСТЬNULL, ВЫРАЗИТЬ, СПЕЦСИМВОЛ, СОЕДИНЕНИЕ, ЛЕВОЕ СОЕДИНЕНИЕ, ПРАВОЕ СОЕДИНЕНИЕ, ПОЛНОЕ СОЕДИНЕНИЕ, преобразуются в запрос к СУБД с использованием управляющих последовательностей ODBC (ODBC Escape Sequences, http://msdn.microsoft.com/en-us/library/windows/desktop/ms715364(v=vs.85).aspx, на английском языке).

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

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

Ниже приводятся примеры строк подключения.

Строка соединения с указанием логина и пароля доступа:

Копировать в буфер обмена

DRIVER={SQL Server};SERVER=(local);UID=user;PWD=password;DATABASE=AdventureWorksLT2008

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

Копировать в буфер обмена

DRIVER={SQL Server};SERVER=CASH-SERVER;DATABASE=CasheReceipts

Указание предварительно настроенного источника данных (DSN):

Копировать в буфер обмена

DSN=MyDB

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

24.2.2. Общая схема использования

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

● Изучить структуру внешнего источника данных и понять, какая информация (таблицы и поля) необходима для работы алгоритмов или отчетов в «1С:Предприятии».

● Создать объект Внешние источники данных в конфигураторе и для него создать подчиненные таблицы и поля. Это можно сделать с помощью специального помощника.

● Реализовать использование созданных объектов в прикладном решении.

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

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

24.2.3. Редактирование структуры внешнего источника данных

24.2.3.1. Общая информация

Для работы с таблицами внешних источников данных предназначена ветвь с именем соответствующего внешнего источника данных ветви Внешние источники данных – <Имя внешнего источника данных> – Таблицы дерева конфигурации. Определение внешнего источника данных состоит из следующих шагов:

1. Определение собственно внешнего источника данных;

2. Определение таблиц источника данных;

3. Определение полей для каждой таблицы внешнего источника данных.

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

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

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

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

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

24.2.3.3. Таблица внешнего источника данных

При создании новой таблицы открывается окно редактирования объекта (см. здесь).

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

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

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

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

В зависимости от того, какой объект СУБД описывает создаваемая объект в «1С:Предприятие», следует корректно установить свойство Вид таблицы. Если свойство установлено в значение Таблица – то объект конфигурации будет выступать аналогом реальной таблицы базы данных или представления (view). В остальных случаях свойство Вид таблицы следует установить в значение Выражение. Если таблица внешнего источника данных имеет вид Таблица, то в свойство Имя в источнике данных необходимо указать имя реальной таблицы или не параметризованного представления, например dbo.ErrorLog. Для таблицы вида Выражение, следует указать свойство Выражение в источнике данных. В простейшем случае это будет вызов функции, возвращающей табличные данные, например dbo.ufnGetContactInformation(&1). Если в это поле записывается выражение, то рекомендуется указать его в скобках, для минимизации различных конфликтов при реальном выполнении запроса к СУБД.

Если таблица хранит иерархические данные, то системе можно сообщить об этом с помощью свойств Поле родителя, Признак незаполненного родителя и Значение незаполненного родителя. Эти свойства доступны только для таблиц, в которых хранятся объектные данные. Свойство Поле родителя служит для указания поля таблицы базы данных, которое хранит ссылку на родителя для данной записи. Поля, которые могут быть выбраны в данном свойстве, должны иметь тип ссылки на используемую таблицу. Для таблицы products из примера (см. здесь) поле родителя должно иметь тип ВнешнийИсточникДанныхТаблицаСсылка.DBF.products. Свойства Признак незаполненного родителя и Значение незаполненного родителя определяют, какое значение будет определять запись, у которой отсутствует родительская запись. После указания данных свойств:

● система компоновки данных использует их при работе с иерархическими группировками и при проверке условий иерархии;

● язык запросов использует их для работы конструкции В ИЕРАРХИИ;

● эти свойства используются при отображении таблиц, хранящих иерархические данные (возможности отображения аналогичны возможностям, которые используются при отображении иерархических справочников).

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

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

За возможность записи в таблицу внешнего источника данных отвечает флажок Только чтение. Если флажок сброшен – в указанную таблицу допускается запись информации. Флажок устанавливается в значение Истина автоматически для таблиц, основанных на представлениях (view) и функциях (см. здесь). Для таблицы, в которую допустима запись информации, следует обратить внимание на следующие свойства:

● Уровень изоляции транзакций – определяет уровень изоляции транзакций, которые будет устанавливаться при неявных транзакциях записи в эту таблицу (см. здесь).

● Поле версии данных – в данном свойстве указывается поле внешнего источника данных, которое увеличивает свое значение автоматически, при каждой записи в данную таблицу. Если поле указано, то система при интерактивном изменении объекта опирается на значение этого поля, При записи выполняется сравнение значения этого поля в базе данных и в форме: если значения различаются, значит, объект изменен.

Если поле не указано, то при интерактивном открытии формы происходит считывание объекта в память, а при записи происходит повторное чтение объекта и сравнение с копией в памяти. Если две копии различаются, значит, объект изменен.

● Поля блокировки данных – указывает поля, по которым можно выполнять блокировку данных. Подробнее см. здесь.

● Вводится на основании – указываются объекты конфигурации, на основании которых могут создаваться записи в таблице.

● Режим управления блокировкой данных – указывает, какой режим управления блокировками будет применяться при записи в данную таблицу (см. здесь).

24.2.3.4. Поле таблицы внешнего источника данных

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

Если значение, находящееся в свойстве Имя в источнике данных заключено в одинарные кавычки, то в SQL-запрос к базе данных это значение попадает без преобразований, вне зависимости от состава символов. Если значение в поле не заключено в одинарные кавычки, то в SQL-запрос к базе данных это значение попадет заключенное в двойные кавычки, если в имени содержатся спецсимволы.

Поле Тип позволяет указать тип данного поля. Для выбора доступен ограниченный набор типов. Типами поля могут быть:

● Число;

● Строка;

● Дата;

● Булево;

● УникальныйИдентификатор;

● ДвоичныеДанные;

● типы, которые определяются таблицами внешних источников данных.

Если необходимо указать для поля составной тип, то в таком составном типе могут участвовать только типы Число, Строка, Дата, Булево.

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

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

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

Свойство Разрешить Null указывает, можно или нет в поле таблицы записать NULL. Если в поле таблицы записано NULL, то в форме это значение будет отображаться как Не заполнено.

24.2.3.5. Прочие свойства

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

● отображение формы записи невозможно;

● невозможен доступ к объекту ВнешнийИсточникДанныхТаблицаНаборЗаписей.

Это связано с тем, что невозможно однозначно идентифицировать необходимый набор записей в таблице.

24.2.3.6. Работа с транзакциями

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

Для работы с транзакциями предназначены методы НачатьТранзакцию(), ЗафиксироватьТранзакцию(), ОтменитьТранзакцию() и ТранзакцияАктивна() менеджера внешнего источника данных. В частности, это означает, что недоступны транзакции для нескольких источников данных (распределенные транзакции).

Управление блокировками осуществляется с помощью следующих свойств и объектов:

● Свойство Режим управления блокировкой данных внешнего источника данных;

● Свойство Режим управления блокировкой данных таблицы внешнего источника данных;

● Полями, указанными в свойстве Поля блокировки данных таблицы внешнего источника данных;

● СвойствомУровень изоляции транзакций таблицы внешнего источника данных;

● Параметрами метода НачатьТранзакцию() менеджера внешних источников данных.

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

● Автоматический – режим автоматических блокировок для всех таблиц внешнего источника данных. В качестве уровня изоляции транзакций используется Упорядочиваемость. Такой режим позволяет использовать транзакции к базе данных внешнего источника одновременно из платформы и из других клиентов. В данном режиме одноименное свойство у таблицы внешнего источника данных игнорируется.

● Управляемый – режим управляемых блокировок для всех таблиц внешнего источника данных. В качестве уровня изоляции транзакций используется Чтение зафиксированных. Такой режим можно использовать в том случае, когда к базе данных внешнего источника имеет только система на базе «1С:Предприятие». В данном режиме игнорируется одноименное свойство у таблицы внешнего источника данных.

● Автоматический и управляемый – режим блокировок выбирается для каждой таблицы в зависимости от одноименного свойства таблицы. Уровень изоляции транзакций выбирается в зависимости от свойства Уровень изоляции транзакций таблицы внешнего источника данных.

Если свойство Уровень изоляции транзакций таблицы внешнего источника данных установлено в значение Авто, то фактический режим изоляции транзакций устанавливается в зависимости от свойства Режим управления блокировкой данных (описано выше). Если указано конкретное свойство – будет использоваться именно оно. Если СУБД внешнего источника данных не поддерживает указанный в этом свойстве уровень изоляции транзакций, то уровень будет автоматически изменяться по следующей цепочке (до первого поддерживаемого): Чтение незафиксированных " Чтение зафиксированных " Повторяемое чтение " Упорядочиваемость.

При работе в режиме управляемых блокировок, блокировки на уровне базы данных накладываются установкой соответствующего уровня изоляции транзакций и указанием выражения ДЛЯ ИЗМЕНЕНИЯ в запросах к базе данных.

Метод ТранзакцияАктивна() позволяет определить текущее состояние транзакции используемого внешнего источника данных.

24.2.3.7. Особенности поведения системы при записи во внешние источники данных

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

● При создании записи в таблице внешнего источника данных:

● Изменить реквизиты записываемого объекта, у которых свойство ТолькоЧтение установлено в значение Истина, невозможно.

● Если у реквизита, входящего в состав полей ключа, свойство ТолькоЧтение установлено в значение Истина, то такой реквизит может быть изменен только в результате вызова метода УстановитьСсылкуНового(). Если у такого реквизита свойство ТолькоЧтение установлено в значение Ложь, то его значение можно изменять явным образом (с помощью операции присваивания).

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

● При изменении записи в таблице внешнего источника данных:

● Изменяются только те реквизиты, для которых свойство ТолькоЧтение установлено в значение Ложь.

● При изменении ключевых полей изменяется значение ссылки.

● Если заполнен реквизит ВерсияДанных, то это значение используется в выражении WHERE для запроса обновления данных. После успешного выполнения запроса значение реквизита повторно считаывается из базы данных.

● При удалении записи из таблицы внешнего источника данных:

● Выполняется только непосредственное удаление. Пометка удаления недоступна и не поддерживается.

● При удалении не выполняется контроль ссылочной целостности.

24.2.3.8. Загрузка структуры таблиц из внешнего источника данных

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

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

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

Рис. 436. Конструктор таблиц внешнего источника данных

При получении структуры внешнего источника данных система выполняет следующие действия:

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

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

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

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

● Имя объекта в конфигурации – колонка Имя в конфигурации;

● Тип загружаемого реквизита – колонка Тип;

● Указать поля, входящие в состав ключа (для объектных данных) – колонка Поле ключа;

● Указать поле, хранящее представление объекта – колонка Поле представления;

● Указать поле, хранящее версию объекта (для осуществления оптимистической блокировки данных) – колонка Поле версии;

● Указать, что таблица или реквизит доступны только на чтение – колонка Только чтение;

● Указать возможность указывать значение NULL в реквизите – колонка Разрешить NULL;

● Задать значение заполнения для реквизита – колонка Значение заполнения.

Затем следует отметить флажками таблицы и поля, которые будут перенесены в метаданные прикладного решения.

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

После нажатия кнопки Готово произойдет загрузка структуры внешнего источника данных.

24.2.4. Пример создания внешнего источника данных

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

База данных состоит из трех таблиц (файлов):

● Таблица products (хранится в файле products.dbf), которая содержит информацию о товарах и состоит из следующих полей:

● id – идентификатор товара (ключевое поле). Тип: Число.

● code – код товара. Тип: Строка.

● name – наименование товара. Тип: Строка.

● article – артикул товара. Тип: Строка.

● Таблица price (хранится в файле price.dbf), которая содержит текущие цены на товары и состоит из следующих полей:

● product – идентификатор товара, для которого хранится цена. Тип: Число.

● price – цена товара. Тип: Число.

● Таблица sales (хранится в файле sales.dbf), которая содержит данные о каждой продаже товара с указанием цены, количества и суммы. Таблица состоит из следующих полей:

● product – идентификатор продаваемого товара. Тип: Число.

● price – отпускная цена товара. Тип: Число.

● qty – количество проданного товара. Тип: Число.

● summa – отпускная стоимость проданного товара. Тип: Число.

Создадим необходимые объекты конфигурации, чтобы иметь доступ ко всем данным этих таблиц.

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

● таблица products будет отображаться в объект Товары;

● таблица price будет отображаться в объект Цены;

● таблица sales будет отображаться в объект Продажи.

Рис. 437. Таблицы внешнего источника данных

Теперь следует создать поля для каждой таблицы, указать типы полей и задать поля ключей и представлений (если они есть).

В примере будет одна объектная таблица (таблица Товары). Остальные таблицы будут необъектные. Соответствие полей физических таблиц и полей объекта конфигурации, а также типы полей можно посмотреть на рис. 438.

Рис. 438. Структура таблиц в прикладном решении

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

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

Рис. 439. Динамический список внешнего источника данных

24.2.5. Строка соединения ODBC

24.2.5.1. Общая информация

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

24.2.5.2. Полная строка соединения

Описание строки соединения можно получить по следующему адресу (на английском языке): http://msdn.microsoft.com/en-us/library/ms722656.aspx. Из этого описания следует выделить следующее:

● Параметры строки соединения записываются парами КлючевоеСлово=Значение и разделяются символом ";".

● Если в строке соединения встречаются несколько параметров с одинаковым ключевым словом, то использоваться будет последнее указание параметра в строке соединения. Поэтому, если такие параметры как Имя пользователя или Пароль указаны и в строке соединения и в диалоге Параметры соединения (см. здесь), то будут использоваться значения из диалога Параметры соединения, т. к. эти параметры будут добавлены с правой стороны к указанной строке соединения.

Для упрощения формирования строки соединения можно воспользоваться сайтом http://www.connectionstrings.com/.

24.2.5.3. Описание источника данных

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

24.2.5.4. Утилита администрирования источников данных ODBC

Для создания описания источника данных следует воспользоваться утилитой администрирования источников данных ODBC. В ОС Windows эта утилита расположена следующим образом: Панель управления – Администрирование – Источники данных (ODBC). При этом из панели управления Windows открывается утилита администрирования, соответствующая версии операционной системы. В ОС Linux эта утилита называется ODBCConfig и доступна при установке соответствующего пакета (зависит от версии ОС Linux).

Следует помнить, что в 64-разрядной версии ОС Windows драйвера и источники данных различаются для 32-разрядного и 64-разрядного ODBC. Поэтому для создания описания источника данных следует использовать версию утилиты администрирования, соответствующую версии системы «1С:Предприятия», которая будет исполнять запросы к внешнему источнику данных. Так, например, если обращение к ODBC выполняется из 64-разрядной версия сервера «1С:Предприятия», то надо использовать 64-разрядную версию утилиты администрирования. Если используется файловая версия «1С:Предприятия» на 64-разрядной ОС Windows, то следует использовать 32-разрядную версию утилиты администрирования, т. к. клиентское приложение является 32-разрядным.

На 64-разрядной версии ОС Windows утилиты администрирования расположены следующим образом:

● 64-разрядная версия: %SYSTEMROOT%\System32\odbcad32.exe.

● 32-разрядная версия: %SYSTEMROOT%\SysWOW64\odbcad32.exe.

24.3. Работа с внешним источником данных OLAP

24.3.1. Общая информация

OLAP – это технология обработки данных, заключающаяся в подготовке агрегированной информации на основе больших массивов данных, структурированных по многомерному принципу. Данные в аналитических базах данных (OLAP-системах) формируются на основании данных систем транзакционной обработки данных (также называемых OLTP-системами). Информация в OLAP-системах представлена в виде пространства (называемого кубом), оси которого представляют собой измерения, а в узлах этого пространства располагаются некоторые меры (measures). Каждое измерение куба характеризуется определенными членами (members) измерения.

Ближайшим (но не точным!) аналогом хранения данных в OLAP-системах можно считать регистр накопления, где сам регистр подобен кубу, измерение типа СправочникСсылка подобно измерению куба, сам справочник содержит члены измерения, а ресурсы регистра подобны мерам куба.

В системе «1С:Предприятие» куб OLAP-системы представлен в виде модели, где:

● Куб представлен кубом в конфигурации;

● Измерения и члены измерений представлены в виде двух объектов:

● Измерения являются аналогом измерений,

● Таблицы измерений служат для описания коллекции членов измерений.

● Меры представлены ресурсами.

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

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

● в качестве источника данных для запросов;

● в качестве источника данных в системе компоновки данных;

● в качестве источника для динамических списков;

● входить в состав общих реквизитов (см. здесь);

● записи таблиц измерений и кубов могут отображаться в управляемых формах «1С:Предприятия» (не поддерживается использование обычных форм для объектов внешних источников данных);

● таблицы измерений внешнего источника данных могут выступать в качестве типов реквизитов информационной базы;

● к кубам, таблицам измерений, полям таблицы измерений, измерениям и ресурсам внешних источников данных можно применять права доступа;

● доступ к кубам, таблицам измерений, полям таблицы измерений, измерениям и ресурсам возможен из встроенного языка;

● кубы и таблицы измерений внешнего источника данных могут входить в состав подсистем (см. здесь);

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

● для кубов внешнего источника данных можно создавать характеристики (см. здесь).

Для работы с многомерными внешними источниками данных используется механизм XML для аналитики (XML for Analysis, XMLA). Платформа получает доступ к данным с помощью HTTP-запросов к веб-серверу, который может быть внешним (по отношению к OLAP-системе) или встроенным в OLAP-сервер. Вопросы настройки доступа к данным OLAP-сервера следует искать в документации к используемой системе.

Строка соединения с аналитическим внешним источником данных представляет собой комбинацию URL поставщика XMLA (для данной OLAP-системы) и параметров, которые используются «1С:Предприятием» для работы с источником. Данные внешних источников данных доступны только для чтения.

Возможности системы «1С:Предприятие» максимально учитываются при использовании в качестве внешнего источника данных следующих OLAP-систем (свойство Тип СУБД параметров соединения с источником данных):

● IBM Infosphere Warehouse,

● Microsoft SQL Server Analysis Services,

● Oracle Essbase.

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

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

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

Документация по OLAP-системам:

● IBM Infosphere Warehouse:

● http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/topic/com.ibm.dwe.navigate.doc/welcome_db2warehouse.html (на английском языке).

● Microsoft SQL Server Analysis Services:

● Версия 2008: http://technet.microsoft.com/ru-ru/library/bb522607(v=sql.100).aspx;

● Версия 2008 R2: http://technet.microsoft.com/ru-ru/library/bb522607(v=sql.105).aspx;

● Версия 2012: http://technet.microsoft.com/ru-ru/library/bb522607(v=sql.110).aspx.

● Oracle Essbase:

● http://docs.oracle.com/cd/E17236_01/nav/portal_3.htm (на английском языке).

24.3.2. Общая схема использования

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

● Изучить структуру внешнего источника данных и понять, какая информация (кубы, таблицы измерений, измерения и ресурсы) необходима для работы алгоритмов или отчетов в «1С:Предприятии».

● Создать объект Внешние источники данных в конфигураторе и для него создать требуемую структур. Это можно сделать с помощью специального помощника.

● Реализовать использование созданных объектов в прикладном решении.

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

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

24.3.3. Редактирование структуры внешнего источника данных

24.3.3.1. Общая информация

Для работы с таблицами внешних источников данных предназначена ветвь с именем соответствующего внешнего источника данных ветви Внешние источники данных – <Имя внешнего источника данных> – Кубы дерева конфигурации. Определение внешнего источника данных состоит из нескольких шагов:

1. Определение собственно внешнего источника данных.

2. Определение кубов;

3. Определение таблиц измерений и полей для каждой таблицы измерений;

4. Определение измерений для куба;

5. Определение ресурсов для куба.

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

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

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

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

24.3.3.3. Куб внешнего источника данных

При создании нового куба открывается окно редактирования объекта (см. здесь).

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

24.3.3.4. Таблица измерения

Таблица измерения описывает члены (members) измерения куба OLAP-системы. Свойство Имя в источнике данных содержит точное имя измерения или уровня иерархии в источнике данных. Свойство Поле представления содержит имя свойства измерения или уровня иерархии, которое система «1С:Предприятие» использует для формирования представления элемента таблицы измерения.

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

● Иерархическая – содержит признак того, что таблица измерения описывает иерархию в источнике данных.

● Имя иерархии в источнике данных – указывает имя иерархии, к которой относится таблица измерения, описывающая данный уровень.

● Номер уровня – в том случае, если таблица описывает какой-либо уровень иерархии, данное свойство содержит номер этого уровня. Для собственно иерархической таблицы значение этого свойства равно 0, а свойство Имя иерархии в источнике данных совпадает со значением свойства Имя в источнике данных.

Свойства Признак незаполненного родителя и Значение незаполненного родителя позволяют указать системе «1С:Предприятие», каким образом идентифицировать значения самого верхнего уровня иерархии.

24.3.3.5. Поле таблицы измерений

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

Поле Тип позволяет указать тип данного поля. Для выбора доступен ограниченный набор типов. Типами поля могут быть:

● Число;

● Строка;

● Дата;

● Булево;

● УникальныйИдентификатор;

● ДвоичныеДанные;

● типы, которые определяются таблицами измерений внешних источников данных.

Если необходимо указать для поля составной тип, то в таком составном типе могут участвовать только типы Число, Строка, Дата, Булево.

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

24.3.3.6. Измерения

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

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

24.3.3.7. Ресурсы

Ресурс внешнего источника данных описывает факт куба OLAP-системы. Ресурс куба может быть числовым или строковым. Именно значения ресурсов рассчитываются по значениям измерений куба. Свойство Имя в источнике данных должно совпадать с именем факта (ресурса) куба внешнего источника данных.

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

24.3.3.8. Загрузка структуры куба из внешнего источника данных

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

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

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

Рис. 440. Конструктор кубов внешнего источника данных

При получении структуры внешнего источника данных система выполняет следующие действия:

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

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

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

Затем следует отметить флажками объекты, которые будут перенесены в метаданные прикладного решения.

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

После нажатия кнопки Готово произойдет загрузка структуры внешнего источника данных.

24.3.4. Ограничения языка запросов при использовании аналитического внешнего источника данных

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

Выражение

Microsoft SQL Server Analysis Services

Oracle Essbase

IBM Infosphere Warehouse

РАЗРЕШЕННЫЕ

–

–

–

РАЗЛИЧНЫЕ

–

–

–

СГРУППИРОВАТЬ

–

–

–

ИМЕЮЩИЕ

–

–

–

СОЕДИНЕНИЕ

–

–

–

ОБЪЕДИНИТЬ

–

–

–

Подзапросы

–

–

–

ДЛЯ ИЗМЕНЕНИЯ

–

–

–

ПУСТАЯТАБЛИЦА

–

–

–

ГОД

Да

–

–

КВАРТАЛ

Да

–

–

МЕСЯЦ

Да

–

–

ДЕНЬГОДА

Да

–

–

ДЕНЬ

Да

–

–

НЕДЕЛЯ

Да

–

–

ДЕНЬНЕДЕЛИ

Да

–

–

ЧАС

Да

–

–

МИНУТА

Да

–

–

СЕКУНДА

Да

–

–

НАЧАЛОПЕРИОДА

Да

–

–

КОНЕЦПЕРИОДА

Да

–

–

ДОБАВИТЬКДАТЕ

Да

–

–

РАЗНОСТЬДАТ

Да

–

–

Где,

● – – указанное выражение не поддерживается при работе с соответствующей OLAP-системой;

● Да – указанное выражение поддерживается при работе с соответствующей OLAP-системой.

24.3.5. Строка соединения с OLAP-сервером

Строка соединения с OLAP-сервером имеет вид:

Копировать в буфер обмена

httр://<Адрес хоста OLAP>:<порт>/<источник>?<параметры>

Где:

● адрес хоста OLAP, порт, источник – адрес доступа к OLAP-системе, сформированный по правилам, описанным в документации конкретной OLAP-системе.

● параметры – параметры, используемые «1С:Предприятием» для доступа к данным OLAP-системы. Параметры задаются в виде Параметр=Значение. Параметры разделяются символом &. Используются следующие параметры:

● ProviderName – имя сервиса XMLA OLAP-источника;

● DataSourceName – имя OLAP-источника;

● Catalog – имя каталога, или базы данных, OLAP-источника.

Примеры строк соединения приведены ниже:

Для Microsoft SQL Server Analysis Services:

Копировать в буфер обмена

http://localhost:80/msolap/msmdpump.dll?ProviderName=Microsoft Analysis Services& DataSourceName=host&Catalog=Adventure Works DW

Для Oracle Essbase:

Копировать в буфер обмена

http://localhost:13080/aps/XMLA?ProviderName=Essbase XML for Analysis&DataSourceName=host&Catalog=Sample

24.4. Работа с процедурами и функциями внешних источников данных

24.4.1. Общая информация

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

Для работы с такими объектами СУБД в «1С:Предприятии» существует понятие функции внешнего источника данных. Функции в «1С:Предприятии» могут быть следующих видов:

1. Таблица вида выражение в реляционном источнике данных;

2. Функция, которая не возвращает значения (процедура);

3. Функция, которая возвращает какое-либо значение.

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

Функции могут использоваться во встроенном языке, языке запросов и системе компоновки данных. Для функций можно указывать права доступа, регламентирующие использование этих функций.

24.4.2. Общая схема использования

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

● Изучить структуру внешнего источника данных и понять, какие функции, процедуры или конструкции на языке СУБД необходимы для работы алгоритмов или отчетов в «1С:Предприятии».

● Создать объект Внешние источники данных в конфигураторе и для него создать подчиненные функции. Это можно сделать с помощью специального помощника.

● Реализовать использование созданных объектов в прикладном решении.

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

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

24.4.3. Редактирование функций

24.4.3.1. Общая информация

Для работы с функциями внешних источников данных предназначена ветвь с именем соответствующего внешнего источника данных ветви Внешние источники данных – <Имя внешнего источника данных> – Функции дерева конфигурации. Определение внешнего источника данных состоит из следующих шагов:

1. Определение собственно внешнего источника данных;

2. Определение функций источника данных;

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

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

● Если для функции (как объекта конфигурации) указано, что выражение возвращает значение, то:

● При использовании во встроенном языке – выражение подставляется в конструкцию select <выражение>.

● При использовании в языке запросов (и системе компоновки данных) – происходит замена вызова функции на собственно выражение.

● Если для функции (как объекта конфигурации) указано, что она не возвращает значение, то:

● При использовании во встроенном языке – в зависимости от СУБД, может использоваться либо вызов с использованием конструкции select <выражение>, либо будет использована управляющая последовательность ODBC call. В силу этого, не рекомендуется использование произвольного выражения для функции, не возвращающей значение, с целью максимальной совместимости с различными СУБД.

● При использовании в языке запросов (или системе компоновки данных) – не поддерживается.

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

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

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

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

24.4.3.3. Функция внешнего источника данных

При создании новой функции открывается окно конструктора функции внешнего источника данных. Если выбран ручной режим создания – будет открыта палитра свойств созданной функции внешнего источника данных (см. здесь).

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

Свойство Возвращает значение фактически указывает, что описывается в объекте конфигурации:

● Истина – описывается функция или выражение, возвращающее значение. В этом случае также необходимо указать, какого типа значение будет возвращаться данным выражением.

● Ложь – процедура или выражение, не возвращающее значение.

Процедура или функция может принимать параметры. Подробнее про параметры см. здесь.

Функцией может выступать выражение на языке СУБД, например функция, которое получает следующее значение последовательности (SimpleSequence), будет иметь следующий вид:

Копировать в буфер обмена

NEXT VALUE FOR dbo.SimpleSequence

Если нужно получить следующее значение последовательности из встроенного языка, то это будет выглядеть следующим образом:

Копировать в буфер обмена

ЗначениеКлюча = ВнешниеИсточникиДанных.ВнешниеДанные.СледующееЗначениеКлюча();

В данном примере ВнешниеДанные – имя внешнего источника данных, в котором описана функция СледующееЗначениеКлюча(). Функция СледующееЗначениеКлюча() описана выше.

Также функция может быть написана на языке используемой СУБД. При этом рекомендуется выражение заключать в круглые скобки, чтобы избежать различных побочных эффектов во время исполнения реального запроса. Следует помнить, что при трансформации запроса из языка запросов платформы «1С:Предприятие», в диалект SQL конкретной СУБД, функции подставляются непосредственно в текст получающегося запроса (с автоматической подстановкой параметров функций).

24.4.3.4. Таблица вида выражение внешнего источника данных

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

24.4.3.5. Загрузка функций из внешнего источника данных

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

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

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

Рис. 441. Конструктор функций внешнего источника данных

Имеется возможность указать, под каким именем функция будет создана в конфигурации «1С:Предприятия».

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

После нажатия кнопки Готово произойдет загрузка структуры функций внешнего источника данных.

24.4.3.6. Параметры функций внешнего источника данных

Формальные параметры функций внешнего источника данных описываются как &n, где n – номер параметра. Нумерация параметров начинается с 1. Если параметры являются необязательными, то параметры заключается в фигурные скобки ({}). Наличие необязательных параметров определяется каждый раз при фактическом вызове процедуры или функции. На место отсутствующих в необязательном блоке фактических параметров при вызове подставляется NULL (для каждого необязательного параметра).

Копировать в буфер обмена

// функция с двумя параметрами dbo.uspGetWhereUsedProductID(&1, &2) // функция в двумя необязательными параметрами dbo.uspGetWhereUsedProductID(&1{, &2, &3})

Если процедура или функция может принимать переменное число параметров, то такая конструкция описывается как &n[]. В этом случае фактические параметры будут подставлены в выражение на место конструкции &n[] через запятую. Указание на возможность передачи переменного числа параметров может быть только последним в списке формальных параметров.

Копировать в буфер обмена

// функция, куда может быть передано от 2 до количества параметров, // ограниченных используемой СУБД dbo.uspGetWhereUsedProductID(&1, &2[])

24.5. Управление внешними источниками данных

Перед тем как начать использование данных из внешних источников в прикладном решении, следует настроить параметры подключения используемых внешних источников. Для этого служит стандартная функция Управление внешними источниками данных, которая вызывается из окна Все функции – Стандартные функции.

Рис. 442. Управление внешними источниками данных

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

Колонка Подключен указывает состояние подключения к источнику данных в этом сеансе.

С помощью меню Администрирование можно указать общие параметры подключения (команда Изменить общие параметры…) и параметры подключения конкретных пользователей в том случае, если эти параметры отличаются от общих параметров (команда Изменить параметры пользователей…).

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

Флажок в левой части формы (перед именами параметров) означает, что данный параметр используется в данном наборе параметров соединения. При этом параметры анализируются в следующем порядке:

● параметры, установленные для сеанса с помощью метода УстановитьПараметрыСоединенияСеанса() менеджера внешнего источника данных;

● параметры, указанные для пользователя при интерактивной настройке или с помощью метода УстановитьПараметрыСоединенияПользователя() менеджера внешнего источника данных;

● общие параметры, заданные интерактивно или с помощью вызова метода УстановитьОбщиеПараметрыСоединения() менеджера внешнего источника данных.

Результирующий набор параметров будет использован для соединения с внешним источником данных. Если какой-то параметр указан в нескольких настройках, будет использован то значение параметра, которое встретится в вышеописанной цепочке раньше.

Например, можно следующим образом комбинировать параметры подключения:

● в параметрах соединения сеанса указывается пользователь и его пароль;

● в общих параметрах указывается строка соединения с базой данных внешнего источника;

● в параметр конкретного пользователя указывается другая строка соединения, которая может использоваться для тестирования прикладного решения.

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

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

Рис. 444. Параметры подключения

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

Флажок Использовать аутентификацию операционной системы доступен только в том случае, если у пользователя имеется право ИзменениеАутентификацииОССеанса.

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

Нажатие кнопки Отключиться приведет к отключению «1С:Предприятия» от выбранного внешнего источника данных.

24.6. Подключение к внешнему источнику данных в режиме «1С:Предприятие»

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

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

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

Также имеется возможность выполнить подключение вручную. Для этого предназначена стандартная функция Управление внешними источниками данных.

24.7. Особенности использования внешних источников данных

24.7.1. Место исполнения запросов к внешним источникам данных

Исполнение запросов к внешним источникам данных выполняется:

● в файловом варианте – на компьютере с клиентским приложением;

● в файловом варианте с доступом через веб-сервер – на компьютере, где выполняется расширение веб-сервера;

● в клиент-серверном варианте – на компьютере, где выполняется:

● сервис работы с внешними источниками данных через ODBC – для доступа к реляционными источникам данных;

● сервис работы с внешними источниками данных через XMLA – для доступа к аналитическим источникам данных (OLAP-системы).

24.7.2. Использование внешних источников данных

В том случае, если один внешний источник данных содержит в своем составе и данные реляционных источников данных и данные аналитических источников данных, их одновременное использование не поддерживается. Это связано с тем, что один внешний источник данных может быть в один момент времени подключен или к реляционной или к аналитической СУБД.

24.7.2.1. В запросах

24.7.2.1.1. К реляционным внешним источникам

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

Копировать в буфер обмена

ВнешнийИсточникДанных.<Имя источника>.Таблица.<Имя таблицы>

Пример:

Копировать в буфер обмена

ВЫБРАТЬ Товары.Код, Товары.Наименование, Товары.Артикул ИЗ ВнешнийИсточникДанных.DBF.Таблица.Товары КАК Товары

В данном примере происходит выборка полей Код, Наименование и Артикул из таблицы Товары внешнего источника данных DBF.

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

Копировать в буфер обмена

ВнешнийИсточникДанных.<Имя внешнего источника данных>.ВременнаяТаблица.<Имя временной таблицы>

Пример:

Копировать в буфер обмена

ВЫБРАТЬ Name, ProductID ПОМЕСТИТЬ ВнешнийИсточникДанных.AdventureWorks.ВременнаяТаблица.Остатки ИЗ &ТаблицаЗначений ВЫБРАТЬ Name, ProductID ПОМЕСТИТЬ ВнешнийИсточникДанных.AdventureWorks.ВременнаяТаблица.Остатки ИЗ ВнешнийИсточникДанных.AdventureWorks.Таблица.Production_Balance

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

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

24.7.2.1.2. К аналитическим внешним источникам

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

Копировать в буфер обмена

ВнешнийИсточникДанных.<Имя источника>.Куб.<Имя куба>

Пример:

Копировать в буфер обмена

ВЫБРАТЬ ПЕРВЫЕ 10 AdventureWorks.InternetSalesAmount ИЗ ВнешнийИсточникДанных.OLAP.Куб.AdventureWorks КАК AdventureWorks

В данном примере выполняется получение 10 первых ресурсов InternetSalesAmount из куба AdventureWorks внешнего источника данных OLAP.

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

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

Копировать в буфер обмена

ВнешнийИсточникДанных.<Имя источника>.Куб.<Имя куба>.ТаблицаИзмерений.<Имя таблицы измерений>

Пример:

Копировать в буфер обмена

ВЫБРАТЬ AdventureWorksТаблицаИзмеренияProduct.Ссылка ИЗ ВнешнийИсточникДанных.OLAP.Куб.AdventureWorks.ТаблицаИзмерения.Product КАК AdventureWorksТаблицаИзмеренияProduct

В данном примере происходит получения списка ссылок на членов таблицы измерения Product из куба AdventureWorks внешнего источника данных OLAP.

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

Копировать в буфер обмена

ВнешнийИсточникДанных.<Имя внешнего источника данных>.ВременнаяТаблица.<Имя временной таблицы>

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

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

24.7.2.2. В системе компоновки данных

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

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

24.7.3. Правила преобразования значений

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

● Тип Строка:

● Строковое значение преобразуется в строковое значение.

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

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

● Значение уникального идентификатора преобразуется в строковое представление уникального идентификатора.

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

● Тип Число:

● Числовое значение преобразуется в число.

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

● Для полей, у которых точность в базе источника превышает точность типов платформы, рекомендуется либо явно использовать ВЫРАЗИТЬ в запросах, либо создавать представление (view) в базе, так, чтобы точность полей соответствовала точности в конфигураторе.

● Для остальных типов возникает исключение.

● Тип Булево:

● Числовое значение преобразуется в значение Ложь, если его значение равно 0 и в значение Истина – для любого другого значения во внешнем источнике.

● Двоичные данные преобразуются по значению первого байта данных. Если первый байт равен значению 0, то результатом преобразования является значение Ложь и значение Истина в случае любого другого значения.

● Для остальных типов возникает исключение.

● Тип ДвоичныеДанные:

● В двоичные данные преобразуются значения любых типов.

● Тип Дата:

● Значение даты преобразуется в значение типа Дата.

● Для остальных типов возникает исключение.

24.7.4. Внешний источник данных, входящий в состав разделителя

Если внешний источник данных входит в состав общего реквизита, то следует учитывать следующие особенности:

● Изменение структуры таблиц внешнего источника данных не производится, поэтому собственно данные не разделяются.

● Параметры соединения с внешним источником данных хранятся в разрезе значений разделителей, в состав которых входит внешний источник данных.

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

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

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

● Данные, доступные для пользователей различных областей расположены в одной базе данных, но доступ к данным регулируется средствами СУБД (имя и пароль пользователя). В этом случае имеется возможность для каждой области данных указать свои имя и пароль пользователя, от имени которого выполняется доступ к данным.

Приведенные сценарии не являются единственными. Они приведены как пример использования внешних источников данных, входящих в состав разделителей.