18.02.2014
Редактирование данных во внешних источниках
Реализовано в версии 8.3.5.1068.
Мы реализовали возможность добавления, изменения и удаления данных во внешних источниках. Сразу нужно оговориться, что этот механизм мы сделали для решения задач интеграции с другими приложениями. Не нужно пытаться использовать его для замены «платформенного» механизма хранения данных прикладного решения.
Вы можете редактировать данные как программно, так и интерактивно. В большинстве случаев программировать ничего не нужно. Всё будет работать интерактивно, автоматически, так же, как, например, при добавлении, удалении или изменении справочников и документов.
Если же посмотреть «внутрь», то для того, чтобы запись во внешние источники стала возможной, мы добавили новые свойства таблицам данных и полям внешних источников:
- Для всей таблицы — свойство ТолькоЧтение. ТолькоЧтение = Истина означает, что изменение данных в этой таблице невозможно;
- Для отдельных полей таблицы — свойства ТолькоЧтение, РазрешитьNull и ЗначениеЗаполнения:
- ТолькоЧтение = Истина означает, что изменение данных в этом поле невозможно;
- РазрешитьNull = Истина означает, что в данное поле может быть записано значение NULL;
- ЗначениеЗаполнения содержит стандартное значение этого поля (если такое существует).
Эти свойства вы (при описании таблиц вручную) или платформа (при создании таблиц конструктором) можете использовать следующим образом.
- ТолькоЧтение = Истина устанавливать, например, для представлений (view), таблиц, получаемых на основе выражения (результат функции) и подобных. Данные в таких таблицах изменять нельзя;
- ТолькоЧтение = Истина указывать для полей, устанавливаемых автоматически (AUTOINCREMENT), вычисляемых полей и подобных. Данные в таких полях изменять нельзя;
- РазрешитьNull = Истина устанавливать для всех полей, кроме ключевых, и тех, которые во внешнем источнике описаны как NOT NULL;
- ЗначениеЗаполнения поля устанавливать в том случае, когда во внешнем источнике указано стандартное значение этого поля (значение DEFAULT).
Добавлять, изменять и удалять данные во внешних источниках можно с помощью встроенного языка или интерактивно. Во встроенном языке для этого используются следующие методы менеджера таблицы:
- СоздатьНаборЗаписей() — для необъектных таблиц;
- Новый метод СоздатьОбъект() — для объектных таблиц.
Соответственно у объектов ВнешнийИсточникДанныхТаблицаНаборЗаписей и ВнешнийИсточникДанныхТаблицаОбъект появились новые методы Записать() и Удалить().
Добавление данных
При добавлении данных во внешний источник вы создаёте объект (или набор записей), устанавливаете значения полей и записываете. При этом есть некоторые особенности, о которых полезно знать.
Например, при попытке установить значение поля, у которого ТолькоЧтение = Истина, будет выдана ошибка. А при непосредственной записи в базу данных в выражении INSERT такие поля будут пропущены. В остальные поля записываются те значения, которые вы им присвоили. Поэтому значения Null и значения по умолчанию нужно присваивать полям в явном виде.
Далее представлен небольшой пример. В нём данные добавляются в объектную таблицу ExtTable, у которой существует три поля:
- col1 (ТолькоЧтение = Истина);
- col2 (РазрешитьNull = Истина);
- col3 (РазрешитьNull = Истина).

Выполнение оператора Записать() приведёт к тому, что сначала будет вызван обработчик события ПередЗаписью, затем выполнена физическая запись в таблицу внешнего источника (INSERT), затем будет вызван обработчик события ПриЗаписи.
С ключевым полем таблицы внешнего источника вы можете поступать следующим образом. Если ключевое поле доступно для изменения, то тогда вы «вручную» задаёте его значение перед записью. Если изменение ключевого поля запрещено, то платформа самостоятельно получит ключ в INSERT или непосредственно после. Вы можете вмешаться в этот процесс с помощью метода УстановитьСсылкуНового() до физической записи (в обработчике события ПередЗаписью) или непосредственно после физической записи (в обработчике события ПриЗаписи).
Изменение данных
При изменении данных обновляются значения всех полей таблицы, у которых ТолькоЧтение = Ложь.
Если же необходимо записать только некоторые поля, вы можете указать их перечень прямо из встроенного языка с помощью методов УстановитьЗаписываемыеПоля() и ПолучитьЗаписываемыеПоля().
Удаление данных
При удалении данных выполняется непосредственное удаление строки из таблицы базы данных. При этом поиск ссылок на удаляемый объект не выполняется. Если такая функциональность нужна, вы можете запрограммировать её самостоятельно в обработчике события ПередУдалением().
Интерактивное изменение данных
Добавлять, удалять и изменять данные внешних источников вы можете интерактивно, в форме. При этом логика работы будет аналогична тому, что описано выше. Отличие будет в том, что при интерактивном изменении возникает необходимость оптимистической блокировки данных.
Если у таблицы внешнего источника есть поле, содержащее версию данных, то платформа выполняет оптимистическую блокировку так же, как и при работе с «родными» данными. Перед записью проверяется, что версия данных, содержащаяся в оперативной памяти, равна версии данных, содержащейся во внешнем источнике. Если это не так — выдаётся ошибка. Если версии совпадают — данные записываются.
А если у таблицы внешнего источника нет поля, содержащего версию данных, то оптимистическая блокировка реализуется следующим образом.
При открытии формы данные считывается полностью, и сохраняются на сервере. При записи данные считываются из внешнего источника заново, и сравниваются с тем, что сохранено на сервере. Если есть различия — выдаётся ошибка. Если различий нет, данные формы (то, что изменил пользователь) объединяются с данными, сохранёнными на сервере, и записываются во внешний источник.
Транзакции
Чтение данных внешних источников, как и ранее, выполняется вне транзакции, а при записи платформа открывает неявную транзакцию. При этом и чтение, и запись вы можете выполнять и в явных транзакциях с помощью методов объекта ВнешнийИсточникДанныхМенеджер:
- НачатьТранзакцию();
- ЗафиксироватьТранзакцию();
- ОтменитьТранзакцию().
Блокировки
Для управления блокировками мы рекомендуем использовать свойство внешнего источника РежимУправленияБлокировкойДанных:
- Автоматический;
- Управляемый;
- Автоматический и управляемый.
а также свойство таблицы внешнего источника УровеньИзоляцииТранзакций:

Кроме этого, конечно же, вы можете самостоятельно задать уровень блокировок в методе НачатьТранзакцию().
Теги:
разработка
8.3.5
Цель данной статьи – показать принципы обмена данными между базой 1С и внешним источником данных на конкретном примере.
Причем тип внешнего источника данных здесь не так уж и важен. Источником могут выступать базы данных, работающие под управлением MS SQL Server или других СУБД, таблиц Exсel, а также других источников, к которым можно подключиться с помощью строки соединения ODBC.
Задачи синхронизации и обмена данными с внешней БД возникают практически на любом предприятии, это может быть:
- Загрузка данных о заказах и online-оплатах с сайта
- Загрузка данных из внешней системы (произведенная продукция, НСИ, бюджеты)
- Обмен данными с внешней системой – передача данных о заказах.
- Формирование отчетности, основанной на данных внешнего источника или на данных различных источников (например, базы 1С и базы SQL Server).
В этой статье мы рассмотрим возможность хранения данных внешней СУБД в объекте «1С:Предприятие 8». Например, к справочнику можно добавить реквизит, который будет ссылаться на таблицу внешнего источника. Таким образом данные внешнего источника становятся частью информационной базы 1С.
Кроме того, мы рассмотрим синхронизацию (двухсторонний обмен), основанную на совместном хранении данных из разных источников в базе 1С. То есть в базе 1С будут храниться настройки сопоставления данных базы 1С и таблицы внешнего источника для последующей загрузки по нашим правилам.
Штатные механизмы платформы «1С:Предприятие 8»
В версии платформы 8.2.14 появился объект метаданных Внешние источники данных.
У этого объекта существует множество применений:
- Различные интеграционные решения, основанные на хранении в реквизитах объектов 1С ссылки на таблицу из внешнего источника данных
- Получение информации из таблиц внешних источников данных
- Получение аналитических данных из внешних источников данных по технологии OLAP (доступно с версии платформы 8.3.5)
- Выполнение функций и хранимых процедур внешнего источника данных (доступно с версии платформы 8.3.4)
- Запись во внешние источники данных (доступно с версии платформы 8.3.5)
- Использование в отчетах на СКД, причем для каждого набора данных может быть указан свой источник. Например, один набор может получать данные из базы 1С, а другой из базы MS SQL Server, затем эти наборы соединяются и выводятся в один отчет
- Использование в качестве источника данных для динамических списков.
Ранее задачи по получению информации из внешних источников данных решались с помощью подключения через COM-соединение. Для простого переноса данных (например, из таблицы Excel) он и сейчас используется, так как в этом случае не нужно вносить изменения в конфигурацию и можно использовать этот механизм во внешних обработках или отчетах.
Но для других, более сложных, задач по интеграции рекомендуется использовать внешние источники данных. Разработчики платформы реализовали удобный функционал для быстрой интеграции 1С с другими СУБД.
Хотя в некоторых случаях, например, при удаленном подключении к внешней информационной базе (это может быть интернет-магазин, СУБД на MySQL), лучше использовать web-сервисы или http-сервисы. При их использовании нет прямого доступа к базе, а только предоставляются нужные сервисы, что значительно лучше в плане безопасности.
Другое преимущество веб-сервисов – работа в модели клиент-сервер, когда клиент посылает запрос, а сервер мгновенно его обрабатывает и передает результат обратно.
Решаемая задача
Рассматриваемая задача является учебной и внешний источник данных в ней используется как инструмент для синхронизации и загрузки данных в базу 1С.
Задача будет решаться в конфигурации – Демо «Управляемое приложение» 8.3, а в качестве внешнего источника данных будет использоваться учебная база MS SQL Server – «AdventureWorks».
Если кто-то захочет воспроизвести данный пример на своем компьютере, то конфигурацию и учебную базу можно легко найти в интернете. Пробную версию MS SQL Server (Evaluation) можно установить бесплатно (на 180 дней) или использовать бесплатную версию Express.
Суть решаемой задачи в том, чтобы перенести данные по товарам из учебной базы SQL Server в базу 1С, причем каждый товар должен быть помещен в определенную группу в зависимости от настроек в базе 1С.
Рассмотрим структуру таблицы MS SQL Server, а также связи между ними. В базе «AdventureWorks» используются таблицы Production.Product, Production.ProductSubcategory и Production.ProductCategory – это товары и их классификация по категориям и субкатегориям.
Связи между таблицами приведены ниже на схеме:
Рисунок 1
Содержимое связанных таблиц можно посмотреть с помощью запроса:
Use AdventureWorks2014; – изменить на свою базу, в зависимости от версии SELECT P.Name AS Product, P.ProductSubcategoryID AS SubcategoryID, PSubCateg.Name AS SubCategory, PCateg.ProductCategoryID AS CategoryID, PCateg.Name AS Category FROM AdventureWorks2014.Production.Product AS P JOIN Production.ProductSubcategory AS PSubCateg ON P.ProductSubcategoryID = PSubCateg.ProductSubcategoryID JOIN Production.ProductCategory AS PCateg ON PSubCateg.ProductCategoryID = PCateg.ProductCategoryID WHERE P.ProductSubcategoryID IS NOT NULL;
Результат выполнения представлен на скриншоте:
Рисунок 2
Нам нужно для каждой строки таблицы создать в базе 1С элемент справочника «Товары» с наименованием из колонки «Product». Значение поля «SubCategory» мы будем хранить в новом реквизите со ссылкой на таблицу внешнего источника данных, а по значению колонки «Category» помещать созданные элементы в определенную группу.
Таблица «ProductCategory» хранит категории товаров, от которых и зависит, в какую группу мы будем записывать товар. Но зависимость здесь не прямая: группа из «ProductCategory» сопоставляется с существующей группой из справочника «Товары» в регистре сведений.
Например, таблица «ProductCategory» содержит следующие значения:
Рисунок 3
В 1С заполнен регистр сведений:
Рисунок 4
Тогда строки из таблицы «Product» с категорией «Bikes» попадают при загрузке в уже существующую в справочнике «Товары» группу «Велосипеды», «Clothing» – в группу «Одежда» и т.д.
Подключение к базе MS SQL Server
Сейчас, когда определена общая концепция решения задачи, можно переходить к ее реализации. В первую очередь нужно подключиться к внешнему источнику данных и настроить его таблицы.
Настроить подключение к внешнему источнику данных в 1С достаточно просто, хотя, конечно, и здесь есть свои особенности.
После добавления внешнего источника данных в конфигураторе (в дереве объектов раздел «Внешние источники данных»), нужно также добавить таблицы, с которыми предстоит работать. Сделать это очень удобно с помощью конструктора, который появляется при добавлении таблицы. С помощью конструктора можно настроить строку подключения, указать логин и пароль для подключения к СУБД.
Рисунок 5
Для MS SQL Server (при стандартной аутентификации) строка подключения выглядит так:
«DRIVER={SQL Server}; SERVER=ServerName;UID=UserName;PWD=Psw;DATABASE=BaseName;
LANGUAGE=русский»
В данном случае ServerName, UserName, Psw, BaseName – это имя сервера, логин, пароль и имя базы данных, к которой подключаемся. Если аутентификация выполняется средствами ОС, то строка подключения будет выглядеть иначе:
«DRIVER={SQL Server};SERVER=ServerName;Trusted_Connection=yes;DATABASE=BaseName;LANGUAGE=русский»
Логин и пароль здесь не используются, но включен параметр Trusted_Connection. Для получения строки подключения к другим источникам данных (Excel, Access, другие СУБД) можно воспользоваться сайтом https://www.connectionstrings.com (на английском языке).
Если подключение проходит успешно, то на следующем шаге отображается конструктор таблиц с перечнем таблиц и полей подключенного источника данных.
Рисунок 6
Здесь следует отметить таблицы, которые нам нужны, а также обязательно проверить правильность определения системой ключевых полей (в данном случае оно должно совпадать с полем первичного ключа таблицы MS SQL Server).
Если не указать поле ключа, то данная таблица считается необъектными данными, т.е. таблицей, в которой нельзя однозначно идентифицировать строку по какому-либо полю. В нашем случае каждая строка таблицы идентифицируется первичным ключом в SQL Server, поэтому это будут объектные данные, что и нужно обязательно указать.
Кроме того, можно указать поле представления, если нужно, чтобы система выводила это поле в качестве представления ключевого поля. В нашем примере поле Name будет отображаться в форме выбора таблицы внешнего источника данных и в регистре сведений, поэтому нужно обязательно указать его в качестве представления.
В общем, можно сказать, что ключевое поле и представление таблицы внешнего источника данных аналогичны ссылке и представлению объектов 1С, например справочника.
Рисунок 7
По условию задачи для хранения настроек сопоставления используется регистр сведений с измерением «Группа товаров» (тип – справочник «Товары») и ресурсом «Категория» (тип – ссылка на таблицу категорий внешнего источника данных). Значение свойства «Выбор групп и элементов» для измерения «Группа товаров» установлено в «Группы», т.к. выбор элементов нам не нужен.
Рисунок 8
Для хранения подкатегории из таблицы «ProductSubcategory» базы SQL Server в справочнике «Товары», мы добавим реквизит «ПодкатегорияВИД», который будет ссылаться на данные внешнего источника данных (тип – ВнешнийИсточникДанныхТаблицаСсылка.Демо.Production_ProductSubcategory).
Рисунок 9
После того как добавлены необходимые объекты в конфигурацию и выполнены настройки подключения к базе MS SQLServer, казалось бы, можно двигаться дальше, однако это еще не все.
Настроить подключение к внешнему источнику данных в режиме конфигуратора недостаточно для работы. Также нужно указать настройки подключения в пользовательском режиме и подключиться к внешнему источнику данных в режиме «1С:Предприятие». Вызывается диалог подключения через команду «Все функции».
Рисунок 10
Настройки подключения из конфигуратора сюда не переносятся, нужно указывать все по-новому.
Рисунок 11
Этот способ никак нельзя назвать удобным, т.к. при каждом запуске «1С:Предприятие 8» приходится выполнять подключение.
Как вариант, можно хранить настройки подключения в регистре сведений и подключаться к внешнему источнику данных программно при запуске конфигурации.
В данном случае в конфигурацию был добавлен общий модуль «Интеграция» и регистр сведений для хранения настроек подключения. Регистр сведений состоит из четырех ресурсов: «Сервер», «Логин», «Пароль», «ИмяВнешнейБД» и «АутентификацияОС». В модуль «Интеграция» включены функция и процедура для подключения:
Функция ПолучитьПараметрыПодключенияКВнешнейИБ() Экспорт; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НастройкиПодключения.Сервер, | НастройкиПодключения.Логин, | НастройкиПодключения.Пароль, | НастройкиПодключения.ИмяВнешнейБД, | НастройкиПодключения.АутентификацияОС |ИЗ | РегистрСведений.НастройкиПодключенияКВнешнемуИсточникуДанных КАК НастройкиПодключения"; Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Сообщить("Не указаны настройки для подключения к внешнему источнику данных"); Возврат Неопределено; КонецЕсли; Выборка = Результат.Выбрать(); Выборка.Следующий(); ПараметрыПодключения = Новый Структура; Если Выборка.АутентификацияОС Тогда ПараметрыПодключения.Вставить("СтрокаСоединения", "DRIVER={SQL Server};SERVER="+Выборка.Сервер+";Trusted_Connection=yes;DATABASE="+Выборка.ИмяВнешнейБД+";LANGUAGE=русский"); ПараметрыПодключения.Вставить("Логин", ""); ПараметрыПодключения.Вставить("Пароль", ""); Иначе ПараметрыПодключения.Вставить("СтрокаСоединения", "DRIVER={SQL Server};SERVER="+Выборка.Сервер+";"+"UID="+Выборка.Логин+";PWD="+Выборка.Пароль+";DATABASE="+Выборка.ИмяВнешнейБД+";LANGUAGE=русский"); ПараметрыПодключения.Вставить("Логин", Выборка.Логин); ПараметрыПодключения.Вставить("Пароль", Выборка.Пароль); КонецЕсли; ПараметрыПодключения.Вставить("АутентификацияОС", Выборка.АутентификацияОС); Возврат ПараметрыПодключения; КонецФункции Процедура ПодключитьсяКВнешнемуИсточникуДанныхMSSqlServer(СтрокаСоединения, Логин, Пароль, АутентификацияОС) Экспорт ПараметрыСоединения = ВнешниеИсточникиДанных.Демо.ПолучитьОбщиеПараметрыСоединения(); ПараметрыСоединения.АутентификацияСтандартная = Не АутентификацияОС; ПараметрыСоединения.АутентификацияОС = АутентификацияОС; ПараметрыСоединения.ИмяПользователя = Логин; ПараметрыСоединения.Пароль = Пароль; ПараметрыСоединения.СтрокаСоединения = СтрокаСоединения; ПараметрыСоединения.СУБД = "MSSQLServer"; Попытка ВнешниеИсточникиДанных.Демо.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения); ВнешниеИсточникиДанных.Демо.УстановитьПараметрыСоединенияПользователя(ИмяПользователя(),ПараметрыСоединения); ВнешниеИсточникиДанных.Демо.УстановитьПараметрыСоединенияСеанса(ПараметрыСоединения); ВнешниеИсточникиДанных.Демо.УстановитьСоединение(); Сообщить("Подключение к внешнему источнику данных выполнено успешно"); Исключение Сообщить("Не удалось подключиться к внешнему источнику данных"); КонецПопытки КонецПроцедуры
В модуль управляемого приложения, для события «ПриНачалеРаботыСистемы» был добавлен код:
ПараметрыПодключения = Интеграция.ПолучитьПараметрыПодключенияКВнешнейИБ(); Если ПараметрыПодключения <> Неопределено Тогда Интеграция.ПодключитьсяКВнешнемуИсточникуДанныхMSSqlServer(ПараметрыПодключения.СтрокаСоединения, ПараметрыПодключения.Логин, ПараметрыПодключения.Пароль, ПараметрыПодключения.АутентификацияОС); КонецЕсли;
Теперь при запуске приложения подключение выполняется автоматически. То есть сейчас можно настроить соответствия в регистрах сведений и приступить непосредственно к написанию программного кода по загрузке данных.
Загрузка данных из внешнего источника данных
Одно из основных ограничений внешних источников данных, на мой взгляд, это то, что нельзя в рамках одного запроса использовать разные источники данных. То есть нельзя использовать в одном запросе обращение к таблицам внешних источников данных и таблицам информационной базы 1С.
В запросах можно использовать временные таблицы, но с ограничениями, а в контексте данной задачи одно из ограничений очень существенное. Суть его в том, что временная таблица создается в базе данных внешнего источника, а значит, использовать ее совместно с таблицами базы 1С нельзя.
Здесь я сделаю небольшое отступление, чтобы осветить этот момент более подробно.
Временную таблицу нельзя создать в базе 1С, т.е. конструкция запроса ПОМЕСТИТЬ ВТ работать не будет. Создать временную таблицу можно только в СУБД внешнего источника, следующей командой:
ПОМЕСТИТЬ ВнешнийИсточникДанных.<ИмяВнешнегоИсточникаВКонфигураторе>.ВременнаяТаблица.<ИмяВТ>, например: ВнешнийИсточникДанных.Демо.ВременнаяТаблица.Продукция.
Стоит отметить, что создавать временные таблицы можно только в СУБД, где поддерживается эта возможность, например в MS SQL Server.
Возвращаясь к задаче, вспоминаем, что, для того чтобы сопоставить данные из базы 1С и MS SQL Server, нам нужно обойти ограничение при использовании соединения таблиц разных источников, вопрос – как это сделать?
Было принято решение использовать выгрузку таблицы внешнего источника данных в таблицу значений с последующей загрузкой и помещением ее во временную таблицу (базы 1С). В данном случае временная таблица создается в базе 1С и ничто не мешает ее использовать в соединениях с другими таблицами. Создаем нужную нам таблицу значений, используя следующий код:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 100 | Production_Product.Name КАК Товар, | Production_ProductSubcategory.Ссылка КАК ПодкатегорияИД, | Production_ProductSubcategory.ProductCategoryID КАК КатегорияИД |ИЗ | ВнешнийИсточникДанных.Демо.Таблица.Production_Product КАК Production_Product | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.Демо.Таблица.Production_ProductSubcategory КАК Production_ProductSubcategory | ПО Production_Product.ProductSubcategoryID = Production_ProductSubcategory.Ссылка |ГДЕ | Production_Product.ProductSubcategoryID ЕСТЬ НЕ NULL "; ТЗ_Товары = Запрос.Выполнить().Выгрузить();
Здесь выполняется запрос, соединяющий таблицы внешнего источника данных, причем запрос возвращает не только наименование товара, но и его подкатегорию и категорию. Затем результат запроса выгружается в таблицу значений. Для демонстрации выгружаются только первые 100 строк.
Далее справочник «Товары» соединяется с полученной таблицей значений с помощью следующего запроса:
Запрос.Текст = "ВЫБРАТЬ | ТЗ.Товар, | ТЗ.КатегорияИД, | ТЗ.ПодкатегорияИД |ПОМЕСТИТЬ ВТ_ТЗ |ИЗ | &ТЗ КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_Товары.Товар, | ВТ_Товары.ПодкатегорияИД, | ЕСТЬNULL(НастройкаСоответствий.ГруппаТоваров, ЗНАЧЕНИЕ(Справочник.Товары.ПустаяСсылка)) КАК ГруппаТоваров, | ЕСТЬNULL(Товары.Ссылка, ЗНАЧЕНИЕ(Справочник.Товары.ПустаяСсылка)) КАК НайденныйТовар |ИЗ | ВТ_ТЗ КАК ВТ_Товары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаСоответствийСВнешнимИсточникомДанных КАК НастройкаСоответствий | ПО ВТ_Товары.КатегорияИД = НастройкаСоответствий.Категория | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Товары КАК Товары | ПО (ВТ_Товары.Товар = Товары.Наименование | И НЕ Товары.ЭтоГруппа)"; Запрос.УстановитьПараметр("ТЗ", ТЗ_Товары); Выборка = Запрос.Выполнить().Выбрать();
Данный запрос возвращает наименование и подкатегорию товара из внешнего источника данных, а также группу справочника «Товары», в которую нам нужно добавить создаваемый элемент. Группа товара была определена исходя из настройки соответствий в регистре сведений «НастройкаСоответствийСВнешнимИсточникомДанных».
Также запрос осуществляет поиск по наименованию товара, чтобы определить, существует элемент справочника «Товары» с таким наименованием или нет. Если элемент найден (не равен пустой ссылке), то мы не будем создавать дубль в справочнике «Товары», а модифицируем найденный элемент справочника.
Пока Выборка.Следующий() Цикл Если ЗначениеЗаполнено(Выборка.НайденныйТовар) Тогда ЭлТовары = Выборка.НайденныйТовар.ПолучитьОбъект(); Иначе ЭлТовары = Справочники.Товары.СоздатьЭлемент(); ЭлТовары.Наименование = Выборка.Товар; КонецЕсли; ЭлТовары.Вид = Перечисления.ВидыТоваров.Товар; ЭлТовары.Родитель = Выборка.ГруппаТоваров; ЭлТовары.ПодкатегорияВИД = Выборка.ПодкатегорияИД; ЭлТовары.Записать(); КонецЦикла;
После завершения загрузки мы получаем следующий результат:
Рисунок 12
Товары из таблицы SQL Server «Production.Product» были успешно перенесены в справочник «Товары» и помещены в указанную нами в регистре сведений группу. При этом реквизит «Подкатегория» был заполнен ссылкой на строку таблицы подкатегорий внешнего источника данных «Production_ProductSubcategory».
Подведение итогов
В данной учебной задаче мы рассмотрели перенос данных из базы MS SQL Server, а также реализацию синхронизации (сопоставления) информации внешнего источника с данными базы 1С.
Этот способ можно применять и в других случаях, когда нужно выполнять обмен и синхронизацию с внешними источниками данных. Например, при загрузке элементов справочника номенклатуры или любого другого, где сложно настроить соответствие по какому-либо полю.
При этом изначально соответствия определяются автоматически, например по наименованию. Но на последнем этапе загрузки пользователь может вмешаться и переопределить эти соответствия самостоятельно в окне обработки. Например, указав, что номенклатура с похожим наименованием – это одна и та же номенклатура, а значит, нужно обновить информацию по ней, а не создавать дубли.
Альтернативные инструменты
Подводя итоги, я бы хотел еще сравнить данный способ с альтернативным, например с использованием «Конвертации 2.0». Там также можно работать с данными информационных баз других типов (не 1С), подключаясь к ней с помощью COM-соединения и используя произвольный алгоритм в правиле выгрузки данных. У этого способа есть свои плюсы и минусы.
К плюсам можно отнести то, что данные также будут загружаться по нажатию одной кнопки, при этом не нужно вносить изменения в конфигурацию, что может быть критично, если конфигурация находится на полной поддержке. С другой стороны, в конфигурации не изменяются существующие объекты, а только добавляются новые, поэтому конфликтов при типовом обновлении не будет.
Минус здесь в настройке синхронизации, т.к. во многих случаях нельзя однозначно сопоставить значения из базы 1С и внешнего источника данных, например по коду. Значит, в данном случае придется делать сопоставление по наименованию, что, конечно, не всегда корректно и может приводить к дублям.
Ограничения внешних источников данных
К сожалению, ничто не бывает идеальным, поэтому и у внешних источников данных есть свои ограничения в использовании. Привожу их в виде списка:
- Поддерживаются только управляемые формы (для объектов внешних источников данных можно создавать только управляемые формы).
- Ограничение при использовании временных таблиц в запросах (временные таблицы создаются в базе данных внешнего источника, и если СУБД не поддерживает эту возможность, будет вызвано исключение).
- В одном запросе нельзя использовать данные из разных источников, например из базы 1С и базы сторонней СУБД.
- Так как временные таблицы внешних источников данных создаются не на стороне 1С, то совместно с данными базы 1С в одном запросе их использовать нельзя.
- Запись во внешние источники данных доступна только с версии 8.3.5
- Получение аналитических данных по технологии OLAP также доступно только с версии 8.3.5
- Механизм внешних источников данных требует доработки конфигурации, а значит, не получится его использовать, если конфигурация находится на полной поддержке.
Об авторе
PDF-версия статьи для участников группы ВКонтакте
Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.
Если Вы еще не вступили в нее – сделайте это сейчас, и в блоке ниже (на этой странице) появятся ссылки на скачивание материалов.
Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кэш браузера или подписаться через другой браузер.
Внешние источники данных .Часть 4
4. Управление внешними источниками данных
Перед тем как начать использование данных из внешних источников в прикладном решении, следует настроить параметры подключения используемых внешних источников. Для этого служит стандартная функция Управление внешними источниками данных, которая вызывается из окна Все функции – Стандартные функции.
В данной форме перечислены все внешние источники данных, созданные в конфигураторе и доступные пользователю, который открыл форму.
Колонка Подключен указывает состояние подключения к источнику данных в этом сеансе.
С помощью меню Администрирование можно указать общие параметры подключения (команда Изменить общие параметры…) и параметры подключения конкретных пользователей в том случае, если эти параметры отличаются от общих параметров (команда Изменить параметры пользователей…).
Флажок в левой части формы (перед именами параметров) означает, что данный параметр используется в данном наборе параметров соединения.
При этом параметры анализируются в следующем порядке:
● параметры, установленные для сеанса с помощью метода УстановитьПараметрыСоединенияСеанса() менеджера внешнего источника данных;
● параметры, указанные для пользователя при интерактивной настройке или с помощью метода УстановитьПараметрыСоединенияПользователя() менеджера внешнего источника данных;
● общие параметры, заданные интерактивно или с помощью вызова метода УстановитьОбщиеПараметрыСоединения() менеджера внешнего
источника данных.
Результирующий набор параметров будет использован для соединения с внешним источником данных. Если какой-то параметр указан в нескольких настройках, будет использован то значение параметра, которое встретится в вышеописанной цепочке раньше.
Например, можно следующим образом комбинировать параметры подключения:
● в параметрах соединения сеанса указывается пользователь и его пароль;
● в общих параметрах указывается строка соединения с базой данных внешнего источника;
● в параметр конкретного пользователя указывается другая строка соединения, которая может использоваться для тестирования прикладного решения.
При указании строки соединения следует помнить, что доступ к внешним данным будет выполняться не с компьютера, где происходит настройка, а с другого компьютера (описание того, с какого компьютера выполняется запрос к внешнему источнику данных).
Нажатие кнопки Подключиться открывает диалог, в котором можно задать (или уточнить) параметры подключения к выбранному внешнему источнику данных.
Необходимость указания пользователя и пароля в данном диалоге зависит от драйвера ODBC и содержания строки соединения. Возможны ситуации, когда ввод логина и пароля не требуется. Если пользователь не является администратором внешнего источника данных, то кнопки Общие параметры… и Параметры пользователя… для него недоступны.
Флажок Использовать аутентификацию операционной системы доступен только в том случае, если у пользователя имеется право ИзменениеАутентификацииОССеанса.
После нажатия кнопки Подключиться происходит подключение к внешнему источнику данных. В случае успешного подключения изменяется содержимое колонки Подключен списка внешних источников данных.
Нажатие кнопки Отключиться приведет к отключению «1С:Предприятия» от выбранного внешнего источника данных.
5. Подключение к внешнему источнику данных в режиме «1С:Предприятие»
При выполнении любой операции, в ходе которой необходимо получать данные из внешнего источника данных, происходит попытка подключения, если подключение к этому источнику данных еще не было выполнено. Если подключение выполнено успешно, то выполняемые действия продолжаются. Если подключение не выполнено, вызывается исключение.
В случае если в клиентском приложении возникает исключение, связанное с подключением к внешнему источнику данных, пользователю предлагается диалог, в котором можно уточнить параметры подключения (если пользователь имеет права на изменение параметров) и повторить подключение. Если подключение выполнено успешно, то пользователю будет предложено повторить действие, во время которого произошла ошибка подключения.
ПРИМЕЧАНИЕ. В режиме совместимости с версией 8.2.13, при работе с динамическим списком, в некоторых случаях диалог подключения к внешним данным может не показываться.
Также имеется возможность выполнить подключение вручную. Для этого предназначена стандартная функция Управление внешними источниками данных.
6. Особенности использования внешних источников данных
6.1. Место исполнения запросов к внешним источникам данных
Исполнение запросов к внешним источникам данных выполняется:
● в файловом варианте – на компьютере с клиентским приложением;
● в файловом варианте с доступом через веб-сервер – на компьютере, где выполняется расширение веб-сервера;
● в клиент-серверном варианте – на компьютере, где выполняется:
● сервис работы с внешними источниками данных через ODBC – для доступа к реляционными источникам данных;
● сервис работы с внешними источниками данных через XMLA – для доступа к аналитическим источникам данных (OLAP-системы).
6.2. Использование внешних источников данных
В том случае, если один внешний источник данных содержит в своем составе и данные реляционных источников данных и данные аналитических источников данных, их одновременное использование не поддерживается. Это связано с тем, что один внешний источник данных может быть в один момент времени подключен или к реляционной или к аналитической СУБД.
6.2.1. В запросах
6.2.1.1. К реляционным внешним источникам
Таблицы внешних источников данных могут выступать в качестве источников запросов. При этом таблица внешнего источника данных описывается следующим образом:
ВнешнийИсточникДанных.<Имя источника>.Таблица.<Имя таблицы>
Пример:
ВЫБРАТЬ
Товары.Код,
Товары.Наименование,
Товары.Артикул
ИЗ
ВнешнийИсточникДанных.DBF.Таблица.Товары КАК Товары
В данном примере происходит выборка полей Код, Наименование и Артикул из таблицы Товары внешнего источника данных DBF.
В запросе к внешнему источнику данных возможно использование временных таблиц. При этом производится попытка создания временной таблицы непосредственно в базе данных, связанной с внешним источником данных. Если СУБД не поддерживает создание внешних источников данных – будет вызвано исключение. Имя временной таблице, при обращении к ней, формируется следующим образом:
ВнешнийИсточникДанных.<Имя внешнего источника данных>.ВременнаяТаблица.<Имявременной таблицы>
Пример:
ВЫБРАТЬ Name, ProductID
ПОМЕСТИТЬ ВнешнийИсточникДанных.AdventureWorks.ВременнаяТаблица.Остатки
ИЗ &ТаблицаЗначений
ВЫБРАТЬ Name, ProductID
ПОМЕСТИТЬ ВнешнийИсточникДанных.AdventureWorks.ВременнаяТаблица.Остатки
ИЗ ВнешнийИсточникДанных.AdventureWorks.Таблица.Production_Balance
При использовании в запросах внешних источников данных нужно помнить следующие ограничения:
● В одном запросе можно использовать один источник данных. Не поддерживается одновременное использование, например, внешнего источника данных и данных информационной базы «1С:Предприятия».
6.2.1.2. К аналитическим внешним источникам
Объекты аналитических внешних источников данных могут выступать в качестве источников запросов. При этом куб внешнего источника данных
описывается следующим образом:
ВнешнийИсточникДанных.<Имя источника>.Куб.<Имя куба>
Пример:
ВЫБРАТЬ ПЕРВЫЕ 10
AdventureWorks.InternetSalesAmount
ИЗ
ВнешнийИсточникДанных.OLAP.Куб.AdventureWorks КАК AdventureWorks
В данном примере выполняется получение 10 первых ресурсов InternetSalesAmount из куба AdventureWorks внешнего источника данных OLAP.
ВНИМАНИЕ! Не рекомендуется получать все записи из куба внешнего источника данных. Количество записей очень велико и может привести к перегрузке системы.
Таблица измерений куба внешнего источника данных описывается следующим образом:
ВнешнийИсточникДанных.<Имя источника>.Куб.<Имя куба>.ТаблицаИзмерений.<Имя таблицы измерений>
Пример:
ВЫБРАТЬ
AdventureWorksТаблицаИзмеренияProduct.Ссылка
ИЗ
ВнешнийИсточникДанных.OLAP.Куб.AdventureWorks.ТаблицаИзмерения.Product КАК AdventureWorksТаблицаИзмеренияProduct
В данном примере происходит получения списка ссылок на членов таблицы измерения Product из куба AdventureWorks внешнего источника данных OLAP.
В запросе к внешнему источнику данных возможно использование временных таблиц. При этом производится попытка создания временной таблицы непосредственно в базе данных, связанной с внешним источником данных. Если СУБД не поддерживает создание внешних источников данных – будет вызвано исключение. Имя временной таблице, при обращении к ней, формируется следующим образом:
ВнешнийИсточникДанных.<Имя внешнего источника данных>.ВременнаяТаблица.<Имя временной таблицы>
При использовании в запросах внешних источников данных нужно помнить следующие ограничения:
● В одном запросе можно использовать один источник данных. Не поддерживается одновременное использование, например, внешнего источника данных и данных информационной базы «1С:Предприятия».
6.2.2. В системе компоновки данных
В системе компоновки данных возможно использование наборов данных, получающих данные из разных однотипных источников данных. Так, можно создать набор данных, описывающий список товаров. Данные в этом наборе будут получены из информационной базы «1С:Предприятия».
Другой набор данных может описывать данные, полученные из внешнего источника данных, например таблица продаж товаров из внешней базы данных.
Затем можно настроить связи наборов данных в конструкторе схемы компоновки данных и получать в отчет информацию одновременно из «1С:Предприятия» и внешнего источника данных.
6.3. Правила преобразования значений
При получении данных из внешних источников система автоматически преобразует эти данные к тому типу, который указан у соответствующего
поля в прикладном решении. Преобразование выполняется по следующим правилам:
● Тип Строка:
● Строковое значение преобразуется в строковое значение.
● Числовое значение преобразуется в строковое значение (для преобразования используются региональные настройки операционной системы на том компьютере, где происходит выполнение запроса к внешнему источнику данных).
● Значение даты преобразуется в строковое значение (для преобразования используются региональные настройки операционной системы на том компьютере, где происходит выполнение запроса к внешнему источнику данных).
● Значение уникального идентификатора преобразуется в строковое представление уникального идентификатора.
● Двоичные данные (и данные других типов) преобразуются в строку, которая является текстовым представлением преобразуемых данных в шестнадцатеричном виде.
● Тип Число:
● Числовое значение преобразуется в число.
● Для строкового значения выполняется попытка преобразования строки в число в соответствии с региональными настройками операционной системы компьютера, на котором выполняется запрос к внешнему источнику данных.
● Для полей, у которых точность в базе источника превышает точность типов платформы, рекомендуется либо явно использовать ВЫРАЗИТЬ в запросах, либо создавать представление (view) в базе, так, чтобы точность полей соответствовала точности в конфигураторе.
● Для остальных типов возникает исключение.
● Тип Булево:
● Числовое значение преобразуется в значение Ложь, если его значение равно 0 и в значение Истина – для любого другого значения во внешнем источнике.
● Двоичные данные преобразуются по значению первого байта данных. Если первый байт равен значению 0, то результатом преобразования является значение Ложь и значение Истина в случае любого другого значения.
● Для остальных типов возникает исключение.
● Тип ДвоичныеДанные:
● В двоичные данные преобразуются значения любых типов.
● Тип Дата:
● Значение даты преобразуется в значение типа Дата.
● Для остальных типов возникает исключение.
6.4. Внешний источник данных, входящий в состав разделителя
Если внешний источник данных входит в состав общего реквизита, то следует учитывать следующие особенности:
● Изменение структуры таблиц внешнего источника данных не производится, поэтому собственно данные не разделяются.
● Параметры соединения с внешним источником данных хранятся в разрезе значений разделителей, в состав которых входит внешний источник данных.
● Неиспользуемый разделитель является отдельным значением, в разрезе которого хранятся параметры соединения с внешним источником данных.
Таким образом, включая внешний источник данных в состав разделителя, появляется возможность реализовать один из следующих сценариев использования:
● Данные, доступные для пользователей различных областей данных, расположены в разных базах данных, которые совпадают по структуре таблиц. Т.к. параметры соединения хранятся в разрезе значений разделителя, имеется возможность для каждой области данных настроить работу с необходимой базой данных.
● Данные, доступные для пользователей различных областей расположены в одной базе данных, но доступ к данным регулируется средствами СУБД (имя и пароль пользователя). В этом случае имеется возможность для каждой области данных указать свои имя и пароль пользователя, от имени которого выполняется доступ к данным.
Приведенные сценарии не являются единственными. Они приведены как пример использования внешних источников данных, входящих в состав разделителей.
Содержание:
1. Работа с внешними базами данных
2. Таблицы внешнего источника данных в 1С
3. Связь с внешним источником данных в 1С
4. Строки подключения к внешним источникам данных
1. Работа с внешними базами данных
В данной статье будет определено понятие внешних источников данных в 1С, а также рассмотрены составляющие внешних источников данных. Дочитав материал, Вы узнаете, как правильно строится их табличная часть.
Когда эксплуатируется система, поставленная на платформе 1С, иногда появляются задачи по получению данных из внешних баз (например, реляционные и аналитические). Чтобы с этим не возникало проблем, существует инструмент «ВнешниеИсточникиДанных». Об этом объекте и пойдёт речь в данной статье.
Итак, внешние источники данных – это некие объекты внутри конфигураций, благодаря которым осуществляется работа с внешними базами данных, которые существуют отдельно от платформы 1С (например, таблицы SQL, Excel, файлы с форматами txt, dbf, csv, Access и прочие). С помощью этих объектов, внешних источников данных, можно заимствовать информацию у баз данных извне и применять её в своих программных решениях. При этом отображаться и восприниматься информация из внешних баз будет таким образом, будто находится в самой системе 1С.
Задачи, которые можно реализовывать при помощи внешних источников данных в 1С 8.3:
1. Хранить в 1С различные ссылки на таблицы и поля, которые находятся на ином ресурсе;
2. исполнять-перенимать командование и функционал от стороннего объекта, который был подключен;
3. составлять отчёты, согласно внешним данным, но в 1С 8.3;
4. получать и выгружать данные из 1С 8.3 в сторонние источники.
Для операционных систем Windows и Linux осуществляется работа источника извне с данными из ODBC-источника (программный интерфейс, который является прикладным и даёт доступ к базам с данными). Наиболее обширные возможности имеет язык запросов при работе с такими СУБД (системы управления базами данных) как Microsoft SQL Server, PostgreSQL и IBM DB2.
Стоит учесть ещё одну особенность внешних источников данных – это возможность подключения многомерных источников данных к прикладным решениям. Возможны следующие многомерные источники данных: Microsoft Analysis Services, IBM InfoSphere Warehouse и Oracle Essbase.
Замечание: ODBC-драйвер ограничивает возможности. Так, например, когда происходит работа с какими-то СУБД, то в запросах могут работать не все конструкции.
2. Таблицы внешнего источника данных в 1С
Составляющими внешнего источника данных в 1С являются таблицы.

Рис. 1 Составляющие внешнего источника данных 1С 8.3
Все таблицы во внешнем источнике данных можно описать двумя способами:
1. с помощью конструктора;
2. вручную.
Создание таблиц в конструкторе показано на скриншоте ниже:

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

Рис. 3 Перечень таблиц внешнего источника данных 1С
Любую таблицу можно рассмотреть в виде полноценного самостоятельного объекта внутри конфигурации. Все таблицы содержат поля, для каждого поля можно определить форму, команду, макет.

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

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

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

Рис. 7 Данные таблицы внешнего источника данных 1С
Элементы в таблицах несут ещё одну важную функцию – на эти элементы можно делать ссылку, как на данные типа объект.
Например, на элементы в таблицах можно сослаться как на справочник или документ.

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

Рис. 9 Управление внешними источниками данных в 1С
2. далее нужно ещё раз внести название соединения, для чего кликаем на меню «Администрирование», затем на «Изменить общие параметры»; копируем строку, которая указывает на соединение и вписываем в поле внутри формы. Далее кликаем «Подключиться»;
3. затем появится «галочка» зелёного цвета, которая означает, что всё выполнено корректно; данные действия обязательны при каждом новом подключении;

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

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

Рис. 12 Строка подключения к базам
· строка подключения к базе в случае, когда указание логина и пароля – это дополнение

Рис. 13 Строка подключения в 1С
· строка подключения в 1С для доступа к источнику извне через его название

Рис. 14 Пример строки подключения в 1С
В данной статье было рассмотрено понятие внешних источников данных. Также была представлена инструкция с некоторыми примерами по работе с таблицами из внешних источников данных. Можем сделать вывод, что данный объект является довольно полезным, ведь благодаря этим источникам могут объединяться внутренние и внешние данные, причём внешним не обязательно быть связанным с 1С. Также была приведена инструкция по автоматическому подключению к внешнему источнику данных.
Специалист компании «Кодерлайн»
Айдар Фархутдинов
Все данные 1С хранятся в единой базе данных, что позволяет легко обращаться к ним с помощью запросов 1С, работать с ними в списках в режиме 1С Предприятие.
Однако в работе частенько складывается ситуация, когда часть данных хранится где-то еще.
Примеры:
- Интернет магазин (хранит данные обычно во внешней MySQL/SQL базе)
- Загрузка данных из файлов Excel
- Другая база.
Для работы с такими данными, которые хранятся в других базах данных, нужно разрабатывать специальные механизмы.
В версии 1С 8.2.14 появился новый объект 1С под названием Внешние источники данных 1С, которые сильно облегчают работу программиста, так как:
- теперь специальные механизмы получения данных создавать не нужно
- к таким данным можно обращаться обычным запросом 1С
- такие данные можно просматривать в списках 1С.
- В свойстве Поле ключа – указать одну из колонок, которая будет обеспечивать уникальную идентификацию строки; если уникальность обеспечивают несколько строк – то данный способ не работает (аналог поля Код)
- В свойстве Поле представления – указать одну из колонок, которая будет обеспечивать краткое представление строки (аналог поля Наименование)
- В свойстве Тип данных таблицы – указать Объектные данные.
- Если в первой строке таблицы Excel расположены названия колонок, то нужно указывать просто имя этой колонки, например «Код».
- Иначе нужно указывать полное имя с именем таблицы «Лист1$.Код», но в параметрах добавить «HDR=NO;».
- Файлы XLSX (версия Office 2007 и выше)
Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=D:ФайлExcel.xlsx; - Файлы XLS (ранее)
Driver={Microsoft Excel Driver (*.xls)}; DriverID=790; DBQ=D:ФайлExcel.xls;
Имя и путь к файлу нужно указать собственные.
Внешний источник данных 1С – внешняя база SQL
Допустим у нас есть база SQL, в которой хранятся нужные нам данные. Попробуем прочитать данные из нее с помощью механизма Внешний источник данных 1С.
Добавим внешний источник данных 1С. Нужно зайти в конфигуратор, внешние источники данных находятся в окне конфигурации, в самом низу дерева объектов 1С.
1. Подключение
Добавим новый внешний источник данных 1С, назовем произвольно.
База данных состоит из таблиц. Нам нужно добавить их внутри добавленного внешнего источника данных. Нажмите на нем правой кнопкой мыши и выберите Добавить таблицу.
В первый раз он предложит указать строку подключения. Ее можно ввести вручную, или сформировать, для чего нужно нажать на кнопку «…».
В качестве драйвера в нашем конкретном случае выберем «SQL Server»
Заполним основные параметры подключения к SQL. Имя сервера можно вписать или выбрать из списка.
1С выполнит соединение с SQL и предложит выбрать из списка конкретную базу данных.
После этого 1С отобразит список таблиц в этой базе данных и их колонок. Нужно галочками выбрать требуемые таблицы.
Таблицы и колонки будут добавлены. Названия будут такие, как они определены в удаленной базе. В 1С Вы можете их переименовать (в свойствах).
Вот пример добавленной таблицы:
Вот пример добавленной колонки:
Чтобы платформа 1С работала с внешней таблицей также, как она делает со справочниками 1С, в таблице можно указать дополнительные параметры:
2. Просмотр
Соединение с удаленной базой не производится автоматически. Чтобы подключиться, нужно выбрать типовое меню Все функции.
В ветке Стандартные расположена специальная команда Управление внешними источниками данных, которая позволяет указывать параметры соединения (свои для режима 1С Предприятия) и проводить подключение.
Сначала нужно указать параметры соединения с базой.
Когда Вы делали настройку в конфигураторе, он в результате показал Вам строку соединения. Вы можете повторно увидеть ее, нажав Добавить таблицу в конфигураторе еще раз.
Скопируйте строку соединения и укажите ее в режиме 1С Предприятие.
После этого необходимо произвести собственно подключение.
После того, как произведено подключение, возможно работать со списками.
3. Использование в языке 1С
Подключение можно производить и из кода программы на языке 1С.
Параметры подключения указываются так:
ПараметрыСоединения = ВнешниеИсточникиДанных.ИмяИсточникаКонфигураторе.ПолучитьОбщиеПараметрыСоединения();
ПараметрыСоединения.АутентификацияСтандартная = Истина;
ПараметрыСоединения.ИмяПользователя = «sa»;
ПараметрыСоединения.Пароль = «пароль»;
ПараметрыСоединения.СтрокаСоединения = «строка соединения из конфигуратора»;
ПараметрыСоединения.СУБД = «MSSQLServer»;
ВнешниеИсточникиДанных.ИмяИсточникаКонфигураторе.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
ВнешниеИсточникиДанных.ИмяИсточникаКонфигураторе.УстановитьПараметрыСоединенияПользователя(ИмяПользователя(), Параметры);
ВнешниеИсточникиДанных.ИмяИсточникаКонфигураторе.УстановитьПараметрыСоединенияСеанса(Параметры);
ВнешниеИсточникиДанных.ИмяИсточникаКонфигураторе.УстановитьСоединение();
Запросить данные из базы данных можно с помощью обычного запроса 1С. Пример текста запроса для внешнего источника НашВнешнийИсточник и таблицы ТаблицаВнешнегоИсточника:
ВЫБРАТЬ
ТаблицаВнешнегоИсточника.ИмяПоля
ИЗ
ВнешнийИсточникДанных.НашВнешнийИсточник.Таблица.ТаблицаВнешнегоИсточника»
Внешний источник данных 1С – работа с файлом Excel
Попробуем другой вариант – работу с файлом Excel через внешний источник данных 1С.
Создадим простой файл Excel.
Добавим внешний источник, назовем произвольно ФайлExcel. В него добавим таблицу «Лист1$». Как несложно заметить – это имя листа в Excel с добавлением символа «$».
Как и в случае с SQL, добавим колонки. Их можно добавить вручную. Важно следить за соответствием типов добавляемых колонок, иначе позже можно получить ошибку вида «Несоответствие типов данных».
Для колонки нужно указывать имя в 1С и имя в источнике данных.
Для Excel существует особенность (ошибка вида «Слишком мало параметров. Требуется 3»):
Параметры соединения для файла Excel выглядят вот так:
Загрузка…


































