Меню

1с внешние источники данных настройка



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

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

  • Microsoft Analysis Services;
  • Oracle Essbase;
  • IBM InfoSphere Warehouse.

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

Внешний источник данных состоит из набора таблиц.

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

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

Каждая таблица, по сути, является самостоятельным объектом конфигурации. Она содержит набор полей, для неё могут быть определены формы, созданы команды и заданы макеты.

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

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

К данным этих таблиц можно обращаться с помощью языка запросов.

Эти таблицы можно использовать в отчётах на системе компоновки данных.

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

Источник

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

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

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

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

  • Для всей таблицы — свойство ТолькоЧтение. ТолькоЧтение = Истина означает, что изменение данных в этой таблице невозможно;
  • Для отдельных полей таблицы — свойства ТолькоЧтение, РазрешитьNull и ЗначениеЗаполнения:
    • ТолькоЧтение = Истина означает, что изменение данных в этом поле невозможно;
    • РазрешитьNull = Истина означает, что в данное поле может быть записано значение NULL;
    • ЗначениеЗаполнения содержит стандартное значение этого поля (если такое существует).

Эти свойства вы (при описании таблиц вручную) или платформа (при создании таблиц конструктором) можете использовать следующим образом.

  • ТолькоЧтение = Истина устанавливать, например, для представлений (view), таблиц, получаемых на основе выражения (результат функции) и подобных. Данные в таких таблицах изменять нельзя;
  • ТолькоЧтение = Истина указывать для полей, устанавливаемых автоматически (AUTOINCREMENT), вычисляемых полей и подобных. Данные в таких полях изменять нельзя;
  • РазрешитьNull = Истина устанавливать для всех полей, кроме ключевых, и тех, которые во внешнем источнике описаны как NOT NULL;
  • ЗначениеЗаполнения поля устанавливать в том случае, когда во внешнем источнике указано стандартное значение этого поля (значение DEFAULT).

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

  • СоздатьНаборЗаписей() — для необъектных таблиц;
  • Новый метод СоздатьОбъект() — для объектных таблиц.

Соответственно у объектов ВнешнийИсточникДанныхТаблицаНаборЗаписей и ВнешнийИсточникДанныхТаблицаОбъектпоявились новые методы Записать() и Удалить().

Добавление данных

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

Например, при попытке установить значение поля, у которого ТолькоЧтение = Истина, будет выдана ошибка. А при непосредственной записи в базу данных в выражении INSERT такие поля будут пропущены. В остальные поля записываются те значения, которые вы им присвоили. Поэтому значения Null и значения по умолчанию нужно присваивать полям в явном виде.

Читайте также:  Настройка обмена 1с предприятие и 1с битрикс

Далее представлен небольшой пример. В нём данные добавляются в объектную таблицу shop_feature, у которой существует два поля:

  • id (РазрешитьNull = Истина);
  • name (РазрешитьNull = Истина);

Выполнение оператора Записать() приведёт к тому, что сначала будет вызван обработчик события ПередЗаписью, затем выполнена физическая запись в таблицу внешнего источника (INSERT), затем будет вызван обработчик события ПриЗаписи.

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

Изменение данных

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

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

Удаление данных

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

Транзакции

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

  • НачатьТранзакцию();
  • ЗафиксироватьТранзакцию();
  • ОтменитьТранзакцию().

Блокировки

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

  • Автоматический;
  • Управляемый;
  • Автоматический и управляемый.

а также свойство таблицы внешнего источника УровеньИзоляцииТранзакций:

Кроме этого, можно самостоятельно задать уровень блокировок в методе НачатьТранзакцию().

Дополнил типовую статью примерами) Будет больше времени — добавлю больше примеров.

Источник

Внешние источники данных 1С на примере Excel

Для работы с данными не 1с, например: база SQL, база Access, файл Excel и многие другие, в технологическую платформу, начиная с версии 8.2.14 был внедрен механизм(объект), под названием Внешние источники данных.

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

Допустим у нас есть книга Excel следующего содержания. Из которого нам необходимо считать данные.

Первым делом в режиме конфигуратора добавляем новый источник данных и назовем его также Excel.

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

Наименование нашей таблицы присвоим ТаблицаДанных. После этого переходим во вкладку Данные и создаем поля (аналогичные файлу).

В свойствах каждого поля необходимо указать Имя, Тип и Имя в источнике данных(идентично файлу).
Присваиваем Имя в источнике данных. Здесь мы указываем наименование листа в *. xls с добавлением в конце символа «$». У нас Лист1$.
Обязательно указываем Поля Ключа. Здесь из теории БД необходимо указать, то поле по которому будет обеспечивать полную уникальность строки.
Поле представления- указываем то поле, которое обеспечит краткое представление строки, в нашем случае Номенклатура.

Читайте также:  1с битрикс настройка фильтра по товарам

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

Строка соединения для файлов XLSX (версия Office 2007 и выше)

Строка соединения для файлов XLS и ранее.

Создадим новую внешнюю обработку, которая будет подключаться и сообщать о подключении.

Если мы установим точку останова и посмотрим, что у нас в ТЗ, то мы увидим следующее:

Источник

Запись во внешний источник данных из 1С 8.3 (без com подключения)

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

По сравнению с прошлым примером количество кода 1С уменьшится, поскольку подключение через COM-объект и формирование запросов SQL на стороне 1С нам больше не потребуется.

Для начала создадим тестовую таблицу с помощью скрипта в панели управления сервером SQL:

Скрипт создания процедуры insert_tovar:

Скрипт создания процедуры update_tovar:

Теперь переходим в 1С и добавляем внешний источник данных. Подключаем таблицу SQL:

Далее, для таблицы dbo_tovar создаем формы списка и объекта. На форму списка вешаем команду «ДобавитьТовар» и обработку оповещения:

На форме объекта на командной панели размещаем команду «ЗаписатьТовар», для кнопки выставляем свойство «Кнопка по умолчанию»:

Для свойства реквизита «Объект» снимаем свойство «Сохраняемые данные», для поля «id» устанавливаем свойство «Только просмотр».

Готово, запускаем, тестируем. Для тестов использовался сервер MSSQL Server 2008 R2.

Источник

Заметки из Зазеркалья

Реализовано в версии 8.3.5.1068.

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

Вы можете редактировать данные как программно, так и интерактивно. В большинстве случаев программировать ничего не нужно. Всё будет работать интерактивно, автоматически, так же, как, например, при добавлении, удалении или изменении справочников и документов.

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

  • Для всей таблицы — свойство ТолькоЧтение. ТолькоЧтение = Истина означает, что изменение данных в этой таблице невозможно;
  • Для отдельных полей таблицы — свойства ТолькоЧтение, РазрешитьNull и ЗначениеЗаполнения:
    • ТолькоЧтение = Истина означает, что изменение данных в этом поле невозможно;
    • РазрешитьNull = Истина означает, что в данное поле может быть записано значение NULL;
    • ЗначениеЗаполнения содержит стандартное значение этого поля (если такое существует).

Эти свойства вы (при описании таблиц вручную) или платформа (при создании таблиц конструктором) можете использовать следующим образом.

  • ТолькоЧтение = Истина устанавливать, например, для представлений (view), таблиц, получаемых на основе выражения (результат функции) и подобных. Данные в таких таблицах изменять нельзя;
  • ТолькоЧтение = Истина указывать для полей, устанавливаемых автоматически (AUTOINCREMENT), вычисляемых полей и подобных. Данные в таких полях изменять нельзя;
  • РазрешитьNull = Истина устанавливать для всех полей, кроме ключевых, и тех, которые во внешнем источнике описаны как NOT NULL;
  • ЗначениеЗаполнения поля устанавливать в том случае, когда во внешнем источнике указано стандартное значение этого поля (значение DEFAULT).

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

  • СоздатьНаборЗаписей() — для необъектных таблиц;
  • Новый метод СоздатьОбъект() — для объектных таблиц.
Читайте также:  Настройка ширины полей 1с

Соответственно у объектов ВнешнийИсточникДанныхТаблицаНаборЗаписей и ВнешнийИсточникДанныхТаблицаОбъект появились новые методы Записать() и Удалить().

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

Например, при попытке установить значение поля, у которого ТолькоЧтение = Истина, будет выдана ошибка. А при непосредственной записи в базу данных в выражении INSERT такие поля будут пропущены. В остальные поля записываются те значения, которые вы им присвоили. Поэтому значения Null и значения по умолчанию нужно присваивать полям в явном виде.

Далее представлен небольшой пример. В нём данные добавляются в объектную таблицу ExtTable, у которой существует три поля:

  • col1 (ТолькоЧтение = Истина);
  • col2 (РазрешитьNull = Истина);
  • col3 (РазрешитьNull = Истина).

Выполнение оператора Записать() приведёт к тому, что сначала будет вызван обработчик события ПередЗаписью, затем выполнена физическая запись в таблицу внешнего источника (INSERT), затем будет вызван обработчик события ПриЗаписи.

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

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

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

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

Интерактивное изменение данных

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

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

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

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

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

  • НачатьТранзакцию();
  • ЗафиксироватьТранзакцию();
  • ОтменитьТранзакцию().

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

  • Автоматический;
  • Управляемый;
  • Автоматический и управляемый.

а также свойство таблицы внешнего источника УровеньИзоляцииТранзакций:

Кроме этого, конечно же, вы можете самостоятельно задать уровень блокировок в методе НачатьТранзакцию().

Источник

Adblock
detector