1. Главная страница » Компьютеры » 1С внешние источники данных функции

1С внешние источники данных функции

Автор: | 16.12.2019

Почему данная возможность вызывает такой интерес? Любой человек, который программировал в 1С при этом достаточно неплохо знаком с SQL и хотя бы в общих чертах знаком с архитектурой и принципами разработки других технологических платформ для бизнес приложений с твердой уверенностью скажет вам — что ему нравится больше всего в 1С. Конечно конструктор запросов — самый удобный и продуманный механизм написания запросов для получения данных из реляционных структур, который я лично когда-либо встречал. А теперь 1С нам предоставили такую замечательную возможность использовать его не только с 1С, но и с любыми другими таблицами. Вот только в эту "бочку мёда" насыпана куча "ложек дёгтя". Обо всём по порядку:

1) Настройка и использование — без "танцев с бубном" не получится
a) Добавляете внешний источник данных — вроде ничего сложного
б) ставите галочку "Выбрать из списка" — обязательно — это нужно чтобы проверить работоспособность уже в начале и избавит от лишних заморочек
в) — обязательно нажимаем ". " — подключение именно ODBC. Не OLEDB как мы все привыкли, а на уровень ниже

г) А вот здесь будьте ОЧЕНЬ ВНИМАТЕЛЬНЫ.

Это драйвер ODBC — в случае использования клиент-серверной версии он должен обязательно быть на сервере. Если вы ведёте разработку на одной системе, а рабочая версия на другой (как это обычно бывает) убедитесь что вас не ждут сюрпризы. Странная рекоммендация, но выбирайте самый древний или самый общий драйвер в случае если вас не особо заботит скорость и за пределы возможностей стандарта SQL92 вы выходить не намерены. Это обеспечит вам лучшую совместимость. Например для SQL Server 2008 лучшим драйвером будет SQL Server Native Client 11, но рекоммендую выбирать просто SQL Server, иначе этот самый native client придётся устанавливать либо на сервер, либо на все клиентские машины (в случае использования файловой версии), а выигрыша особого для простых задач он не даст.
д) Стандартные диалоги выбора Сервера

и БД

е) На вопрос сохранения пароля рекомендую ответить "да", иначе так и не получится это дело запустить.
ж) Выбираете таблицу и реквизиты. замечательная возможность — её можно сразу же переименовать так как вам нравится (и реквизиты тоже), при этом в свойствах у вас будут отображаться названия полей источника данных

з) А теперь запускаете, открываете конструктор запросов — выбираете тупо все записи из таблицы и ОПА — ошибка. Что делать? Если у вас управляемый интерфейс — заглянуть в меню сервис, а если обычный.
Я лично использовал вот такой код:
Код 1C v 8.х
Может каких-то кусков и не нужно, но это работает.
Выполнить код нужно ОДИН РАЗ. После чего будет нормально подключаться. мистика конечно — зачем это было нужно не понятно.

2) Источники данных только для чтения — Да, чудес не бывает. но иногда так хочется.

3) НЕЛЬЗЯ ИХ ИСПОЛЬЗОВАТЬ ВМЕСТЕ С ВНУТРЕННИМИ ИСТОЧНИКАМИ ДАННЫХ
Меня лично этот факт убил наповал

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

4) НЕЛЬЗЯ ИХ ИСПОЛЬЗОВАТЬ ВМЕСТЕ С ВРЕМЕННЫМИ ТАБЛИЦАМИ


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

5) Можно использовать только в соединениях СКД
Для тех кто не знает — это в СКД на вкладке "Связи наборов данных". Часто вы ими пользуетесь? Удобно? Видимо так нас хотят принудить к использованию их чаще. Вот только там есть колонка "Условие связи" и "Параметр связи". Ни в одной типовой конфигурации не нашел примера их использования, в документации и у Хрусталевой тоже как-то всё не прозрачно. Кто-нибудь сможет мне объяснить как работает "условие связи". Если там написать РеквизитИсточника = РевизитПриемника это не работает. Конечно условие можно записать в поле "Выражение" — в большинстве случаев этого хватает. вот только как-то не очень просто получается.

Читайте также:  Nzxt grid v3 обзор

Итого ранее эта задача решалась где-то так:
Код 1C v 8.х

Собственно строчек кода не много и они достаточно стандартны. при этом можно пользоваться полным функционалом конструктора запросов, а в СКД отдать только функцию КОМПАНОВКИ ДАННЫХ

Но на вид чуть конечно не так красиво. да и выгрузка в таблицу значений каждый раз нужно код писать и проверять не ошибся ли в названии реквизитов. а то что нам дали в 1С выглядит как-то половинчато. Я ещё не определился чем удобнее пользоваться. Вы решайте, и пишите о ваших решениях, и что вас к ним подтолкнуло.
Автор: Олег Филиппов

Михаил Сайко

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

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

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

  • Таблицы из баз данных SQL;
  • Excel;
  • Access;
  • Файлы формата DBF, TXT,CSV;
  • Других баз 1С.

Данный механизм может применяться для следующих задач:

  • Хранение в 1С ссылки на поля стороннего ресурса с данными;
  • Выполнение команд или функций объекта, к которому подключаются;
  • Составление отчетов по данным извне информационной базы 1С;
  • Получение и выгрузка данных во внешние источники данных.

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

Рассмотрим на примере задачу получения из таблицы SQL данных по номенклатуре на складе через механизм подключения внешнего источника данных. Настройка нового объекта в 1С 8.3 происходит через режим конфигуратора. Находим в структуре конфигурации последний пункт – «Внешние источники данных» и видим все существующие в базе связи. Добавляем новый объект с помощью стандартной кнопки добавить и дать ему «говорящее» название.

Затем нам надо в разделе «Данные» добавить таблицы, из которых мы будем брать информацию. Разработчики 1С предусмотрели достаточно удобный конструктор, в котором мы можем указать лишь строку соединения и тип СУБД. Для типового подключения к таблице MS SQL используется строка по следующему шаблону: «DRIVER=;SERVER=_NameServ_;Trusted_Connection=yes;DATABASE=_NameBase_;LANGUAGE=русский». Вместо «_NameServ_» и «_NameBase_» необходимо вставить имя сервера и базы данных, соответственно.

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

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

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

  1. Открываем в меню «Все функции» раздел «Стандартные», а далее форму «Управление внешними источниками данных». Перед нами откроется список всех созданных в конфигурации объектов;
  2. К сожалению, на этом этапе вам придется повторно занести строку соединения в настройки. Откройте меню «Администрирование» и выберите «Изменить общие параметры». Скопируйте из конфигуратора строку соединения и вставьте ее в соответствующий реквизит на форме. После подтверждения изменения общих параметров нажмите «Подключиться»;
  3. В результате вы увидите зеленую галку, подтверждающую, что все сделано правильно. Такому алгоритму необходимо следовать при каждом подключении, что не слишком удобно;
  4. Чтобы работать с данными из внешнего источника данных, откройте таблицу из раздела «Внешние источники данных», входящего в меню «Все функции».

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

    Указываем, к какому объекту произойдет подключение;

  • Заполняем параметры;
  • Устанавливаем соединение с внешним источником.
  • Запрашивать данные вы сможете обыкновенным запросом на языке 1С, обращаясь к таблице подобным образом:

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

    Читайте также:  Iphone 7 index iq

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

    Внешние источники данных. Часть 3

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

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

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

    1. Таблица вида выражение в реляционном источнике данных;
    2. Функция, которая не возвращает значения (процедура);
    3. Функция, которая возвращает какое-либо значение.

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

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

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

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

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

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

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

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

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

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

    Читайте также:  Canon powershot sx120 is отзывы
    3.3.3. Функция внешнего источника данных

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

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

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

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

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

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

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

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

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

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

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

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

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

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *