
Решаем задачи автоматизации
На базе программ 1С
И собственных решений
А потом обслуживаем
По разумным ценам
Поиск и устранение блокировок. Управляемые блокировки. Оптимизация запросов.
Во многих крупных и средних компаниях можно столкнуться с тем, что необходимые данные хранятся в различных базах или файлах. Кто имеет опыт работы в таких ситуациях, представляет, как сложно договориться о том, чтобы информацию дали в удобном виде. Поэтому разработчику 1С пригодится умение достать нужные данные из различных источников извне без посторонней помощи.
Раньше разработчикам 1С, чтобы достать эту информацию, приходилось писать собственные инструменты с нуля и разрабатывать процедуры импорта. В платформе под номером 8.2.14 появился стандартный аналог этих механизмов – внешние источники данных. И теперь стало намного проще получать необходимые данные из основных объектов:
Данный механизм может применяться для следующих задач:
Существенным минусом встроенного механизма является тот факт, что для создания нового взаимодействия необходимо изменять конфигурацию. Именно этот факт и позволяет до сих пор быть популярными подключения через COM-соединение и другие возможности обмена данными. Но в крупных задачах по интеграции разработчики уже переходят на механизм внешних источников данных.
Рассмотрим на примере задачу получения из таблицы SQL данных по номенклатуре на складе через механизм подключения внешнего источника данных. Настройка нового объекта в 1С 8.3 происходит через режим конфигуратора. Находим в структуре конфигурации последний пункт – «Внешние источники данных» и видим все существующие в базе связи. Добавляем новый объект с помощью стандартной кнопки добавить и дать ему «говорящее» название.
Затем нам надо в разделе «Данные» добавить таблицы, из которых мы будем брать информацию. Разработчики 1С предусмотрели достаточно удобный конструктор, в котором мы можем указать лишь строку соединения и тип СУБД. Для типового подключения к таблице MS SQL используется строка по следующему шаблону: «DRIVER={SQL Server};SERVER=_NameServ_;Trusted_Connection=yes;DATABASE=_NameBase_;LANGUAGE=русский». Вместо «_NameServ_» и «_NameBase_» необходимо вставить имя сервера и базы данных, соответственно.
Если вся строка была написана без ошибок, то вы увидите перечень таблиц с полями, существующими в базе. Отметьте галками те таблицы и реквизиты в них, которые нужны в 1С. На данном этапе обязательно проверьте, верно ли 1С определила ключевые реквизиты, и выберите представление в 1С данных – «Поле представления». Настройка на этом закончена – можно обновлять конфигурацию и запускать базу в режиме «Предприятие».
Связь с внешними источниками данных осуществляется не на автомате при запуске системы. Чтобы получить доступ к данным, предстоит сделать несложные манипуляции уже в режиме «Предприятие»:
Но существует и еще один способ подключиться к внешнему источнику данных – программный. Использовать его можно в любой модуле, где предполагается работа с данными из внешних источников. Рассмотрим пример алгоритма:
Параметры = ВнешниеИсточникиДанных.НоменклатураНаСкладе.ПолучитьОбщиеПараметрыСоединения() ;
Заполняем параметры;
Параметры.АутентификацияСтандартная = Истина;
Параметры.ИмяПользователя = «admin»;
Параметры.Пароль = «password»;
Параметры.СтрокаСоединения = «строка_соединения»;
Параметры.СУБД = «MSSQLServeг»;
Устанавливаем соединение с внешним источником.
ВнешниеИсточникиДанных.НоменклатураНаСкладе.УстановитьОбщиеПараметрыСоединения(Параметры);
ВнешниеИсточникиДанных.НоменклатураНаСкладе.УстановитьПараметрыСоединенияПользователя(ИмяПользователя(), Параметры);
ВнешниеИсточникиДанных.НоменклатураНаСкладе.УстановитьПараметрыСоединенияСеанса(Параметры);
ВнешниеИсточникиДанных.НоменклатураНаСкладе.УстановитьСоединение();
Параметры = ВнешниеИсточникиДанных.НоменклатураНаСкладе.ПолучитьОбщиеПараметрыСоединения();
Параметры.АутентификацияСтандартная = Истина;
Параметры.ИмяПользователя = «admin»;
Параметры.Пароль = «password»;
Параметры.СтрокаСоединения = «строка_соединения»;
Параметры.СУБД = «MSSQLServer»;
ВнешниеИсточникиДанных.НоменклатураНаСкладе.УстановитьОбщиеПараметрыСоединения(Параметры);
ВнешниеИсточникиДанных.НоменклатураНаСкладе.УстановитьПараметрыСоединенияПользователя(ИмяПользователя(),
Параметры);
ВнешниеИсточникиДанных.НоменклатураНаСкладе.УстановитьПараметрыСоединенияСеанса(Параметры);
ВнешниеИсточникиДанных.НоменклатураНаСкладе.УстановитьСоединение();
Запрашивать данные вы сможете обыкновенным запросом на языке 1С, обращаясь к таблице подобным образом:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатураТаб.Name КАК Наименование
|ИЗ
| ВнешнийИсточникДанных.НоменклатураНаСкладе.Таблица.Номенклатура КАК НоменклатураТаб";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// операторы работы с номенклатурой из внешнего источника данных
КонецЦикла;
ВЫБРАТЬ
НоменклатураТаб.Name КАК Наименование
ИЗ
ВнешнийИсточникДанных.НоменклатураНаСкладе.Таблица.Номенклатура как НоменклатураТаб
Однако существуют ограничения на работу подобных запросов и использование в них временных таблиц. Это еще один недостаток внешних источников данных в 1С 8.3. Также необходимо упомянуть еще и тот факт, что они работают только на управляемых формах. Они уже давно появились, но многие компании все еще используют обычные формы и им придется писать процедуры импорта, как раньше.
Учитывая, как развивается платформа 1С, можно предположить, что в скором времени внешние источники данных станут намного удобнее. Поэтому разработчикам стоит начать их использовать и совершенствоваться в этом деле. Ведь иначе они рискуют отстать от нововведений и не быть в курсе вектора развития 1С. Используйте внешние источники данных в 1С и другие прогрессивные инструменты.
Подпишитесь на рассылку и получайте самые свежие статьи 1 раз в месяц специально для вас