Михаил Сайко

Во многих крупных и средних компаниях можно столкнуться с тем, что необходимые данные хранятся в различных базах или файлах. Кто имеет опыт работы в таких ситуациях, представляет, как сложно договориться о том, чтобы информацию дали в удобном виде. Поэтому разработчику 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. Также необходимо упомянуть еще и тот факт, что они работают только на управляемых формах. Они уже давно появились, но многие компании все еще используют обычные формы и им придется писать процедуры импорта, как раньше.

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

    Скачать программы, софт бесплатно. Программирование 1С

    Импорт из Excel в 1С — импорт таблицы Excel в 1С

    Импорт из Excel в 1С — импорт таблицы Excel в 1С (любого формата при помощи OLE DB)

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

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

    Для понимания материала рекомендую прочесть предыдущую статью Из Excel в 1С, получение списка листов (имен листов) из файла Excel.

    В предыдущей статье есть ссылка на скачивание свежей версии драйверов MDAC, которые вы можете бесплатно установить на любой компьютер, чтобы импорт таблиц из Excel в 1С поддерживался для формата последней версии Microsoft Office (в состав которого входит и Excel).

    Итак, вот перед вами код функции ФайлExcel_ИмпортироватьЛист()

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

    Наша функция ФайлExcel_ИмпортироватьЛист() извлекает информацию для импорта из Excel в 1С с одного конкретного листа. Поэтому, кроме имени файла-таблицы Excel , мы должны передать в функцию еще и имя нужного нам листа. Имя листа в Excel всегда заканчивается знаком "$", например "Лист1$", когда это имя используется для ссылки на нужный лист.

    Чаще всего бывает так, что нужная нам информация находится на первом, по счету, листе файла Excel, поэтому вместо имени в функцию можно передать порядковый номер листа — 1. Ну или любой другой номер, если вам известно, на каком, по-порядку, листе находится интересующие данные. (Важно! Иногда нумерация листов в книге Excel не соответствует видимому порядку отображения листов при открытии книги. Например, лист, который вы видите первым по-счету, может иметь номер 4 или другой, не равный единице. Вам надо проверять это уже в процессе работы с конкретным файлом, или вместо номера использовать имя листа)

    Мы имеем, таким образом, некую универсальность, при выборе нужного листа с данными для импорта из Excel в 1С. Это достигается тем, что изнутри функции ФайлExcel_ИмпортироватьЛист() вызывается другая функция, ФайлExcel_ПолучитьСписокЛистов() (описанная в прошлой статье), благодаря которой извлекается имя листа, соответствующее переданному номеру листа. А далее, запрос на чтение выстраивается с использованием заранее полученного имени листа Excel.

    Функция ФайлExcel_ИмпортироватьЛист() имеет еще и третий параметр. Дело в том, что возвращаемая после импорта из Excel в 1С таблица значений имеет колонки. Разумеется, эти колонки должны иметь какие-то имена. Для управления наименованием колонок и нужен третий параметр, который я назвал ИспользоватьЗаголовок.

    Если мы присвоим этому параметру значение Истина то для именования колонок в результирующей таблицы значений — будут использованы значения ячеек из первой строки импортируемого листа Excel. Разумеется, сами данные, как таковые, в этом случае будут "начинаться" со второй строки. По-другому, вторая строка исходного листа будет являться первой строкой таблицы значений 1С, а первая строка исходного листа будет использована как заголовок столбцов таблицы значений 1С.

    Надеюсь, что не запутал Вас. В случае, если мы присвоим параметру ИспользоватьЗаголовок = Ложь, результирующая таблица значений получить стандартные имена колонок, по порядку: "F1, F2 .. Fn" и первая строка исходного листа будет импортирована в первую строку таблицы значений.

    Исходный файл-пример, чтобы показать импорт из Excel в 1С

    Такой способ представляется мне более естественным, поэтому по умолчанию я и назначил ИспользоватьЗаголовок = Ложь. Следует еще и учесть, что имена колонок в таблице значений 1С должны строго соответствовать правилам именования идентификаторов 1С (не содержать пробелы и т.д.)

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

    Выше был размещен исходный текст отдельно взятой функции ФайлExcel_ИмпортироватьЛист().

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

    Тестовая обработка по импорту из Excel в 1С

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

    Если комментариев внутри исходного кода недостаточно, то пишите вопросы в комментариях к этой статье. Хотя, функцию можно с успехом использовать и без понимания принципов ее работы. Бывает, зачастую, просто некогда детально разбираться в вопросе, лишь бы "быстрее заработало". Тоже вариант! 🙂

    Как научиться программировать в 1С с нуля?

    Как работать программистом 1С и получать до 150 000 рублей в месяц?

    ЗАПИШИСЬ НА БЕСПЛАТНЫЙ

    "ПРОГРАММИРОВАНИЕ в 1С ДЛЯ НОВИЧКОВ"

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

    Для участия нужен только компьютер и интернет

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

    Достаточно заполнить табличное поле обработки нужными данными.

    Обработка простая и интуитивно понятная.

    Вот маленькая инструкция

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

    и следует обратить внимание на это.

    Написано на "ты" т.к. делал этот скриншот хорошо знакомому клиенту 🙂

    • Главная
    • Блог
    • Обработки 1С
    • Загрузка данных из внешних источников в 1с 8.2, 8.3. Обработка "Загрузка данных из табличного документа"

    Google+

  • © 2019 Услуги 1С программиста. Доработка и обслуживание 1С. Удаленное программирование по всей России. Платформы 7.7 8.2 8.3 , битрикс.