Загрузка из Excel в 1С 8

Содержание
  1. Подготовка в загрузке в 1С
  2. Копирование содержимого ячейки
  3. Вставка списка в существующую книгу Excel
  4. Создание новой книги Excel со списком
  5. Как происходит загрузка и выгрузка данных из Excel в 1С на примере реальной разработки
  6. Пример функции которая загружает отдельные ячейки из Excel в 1С
  7. Пример функции которая загружает все данные из Excel в табличную часть 1С
  8. Пример функции которая выгружает данные из 1С в Excel
  9. Особенности выгрузки и загрузки данных
  10. Стандартный способ вывода информации из программы 1С в Excel
  11. Выгрузка информации из платформы 1С: Бухгалтерия 7.7
  12. Выгрузка данных из программ 1С: Бухгалтерия 8 и 8.2
  13. Алгоритм при выгрузке и его реализация в 1С
  14. Формирование набора данных
  15. Осуществляем программный запуск приложения
  16. Заполнение файла, его сохранение и завершение работы приложения
  17. Колонки «Настройки»
  18. Варианты обработки переноса своими руками
  19. Через ADODB.Connection
  20. Процедура выбора файла
  21. Создание документа и заполнение его данными
  22. Подключение внешнего загрузчика
  23. Обмен через ADO

Подготовка в загрузке в 1С

Первым делом необходимо открыть данную обработку в режиме «1С:Предприятие». В меню «Файл» нажмите на пункт «Открыть» и в появившемся окне выберите обработку там, где вы её сохранили. Так же можно воспользоваться сочетанием горячих клавиш «Ctrl+O».

Если обработка не открылась, скорее всего, у вашей учетной записи нет права «Открытие внешних отчетов и обработок».

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

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

В форме обработки выберем соответствующий переключатель для загрузки в табличную часть. В поле ссылка подставляется созданный ранее документ «Установка цен номенклатуры». В поле «Табличная часть» — «Товары».

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

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

В данном примере мы рассмотрим наиболее удобный способ загрузки – из файла Excel. Нажмите на кнопку открытия и выберите файл с данными. Для открытия поддерживаются форматы: *.mxl», *.xls, *.txt, *.dbf. Все данные из файла попадут в табличный документ обработки.

Копирование содержимого ячейки

Одна единица данных содержится в ячейке 1С. Её можно перенести в Эксель обычным методом копирования.

  1. Выделяем ячейку в 1С, содержимое которой нужно скопировать. Кликаем по ней правой кнопкой мыши. В контекстном меню выбираем пункт «Копировать». Можно воспользоваться также универсальным способом, который действует в большинстве программ, работающих на ОС Windows: просто выделяем содержимое ячейки и набираем комбинацию клавиш на клавиатуре Ctrl+C.
  2. Открываем чистый лист Excel или документ, куда нужно вставить содержимое. Кликаем правой кнопкой мыши и в появившемся контекстном меню в параметрах вставки выбираем пункт «Сохранить только текст», который изображен в форме пиктограммы в виде большой буквы «А».

    Вместо этого действия можно после выделения ячейки, находясь во вкладке «Главная», щелкнуть по значку «Вставить», который расположен на ленте в блоке «Буфер обмена».

    Также можно воспользоваться универсальным способом и набрать на клавиатуре сочетание клавиш Ctrl+V после того, как ячейка выделена.

Содержимое ячейки 1С будет вставлено в Excel.

Вставка списка в существующую книгу Excel

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

  1. Открываем любой список, журнал или справочник в 1С. Кликаем на кнопку «Все действия», которая должна располагаться вверху от обрабатываемого массива данных. Запускается меню. Выбираем в нем пункт «Вывести список».
  2. Открывается небольшое окошко вывода списка. Тут можно произвести некоторые настройки.

    Поле «Выводить в» имеет два значения:

    • Табличный документ
    • Текстовый документ.

    По умолчанию установлен первый вариант. Для переноса данных в Эксель он как раз и подходит, так что тут мы ничего не меняем.

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

    После того, как настройки завершены, жмем на кнопку «OK».

  3. Затем на экран выводится список в табличном виде. Если вы хотите перенести его в готовый файл Excel, то просто выделите в нем все данные курсором с зажатой левой кнопкой мыши, потом кликните по выделению правой кнопкой мышки и в открывшемся меню выберите пункт «Копировать». Можно так же, как и в предыдущем способе использовать сочетание горячих клавиш Ctrl+С.
  4. Открываем лист Microsoft Excel и выделяем верхнюю левую ячейку диапазона, в который будут вставляться данные. Затем жмем на кнопку «Вставить» на ленте во вкладке «Главная» или набираем сочетание клавиш Ctrl+V.

Список вставлен в документ.

Создание новой книги Excel со списком

Также список из программы 1С можно сразу вывести в новый файл Эксель.

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

    Ещё проще сделать переход, нажав на кнопку «Сохранить», которая имеет вид дискеты и расположена в блоке инструментов 1С в самом верху окна. Но такая возможность доступна только пользователям, которые применяют программу версии 8.3. В ранних версиях можно использовать только предыдущий вариант.

    Также в любых версиях программы для запуска окна сохранения можно нажать комбинацию клавиш Ctrl+S.

  2. Запускается окно сохранение файла. Переходим в ту директорию, в которой планируем сохранить книгу, если место расположения по умолчанию не устраивает. В поле «Тип файла» по умолчанию указано значение «Табличный документ (*.mxl)». Нам это не подходит, поэтому из выпадающего списка выбираем пункт «Лист Excel (*.xls)» или «Лист Excel 2007 — … (*.xlsx)». Также при желании можно выбрать совсем старые форматы – «Лист Excel 95» или «Лист Excel 97». После того, как настройки сохранения произведены, жмем на кнопку «Сохранить».

Весь список будет сохранен отдельной книгой.

Как происходит загрузка и выгрузка данных из Excel в 1С на примере реальной разработки

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

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

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

Пример функции которая загружает отдельные ячейки из Excel в 1С

Познакомимся более детально с функцией которая считывает отдельные ячейки эксель файла.

Мы думаем, что никаких дополнительных разъяснений по данному коду приводить не нужно, так как все эти функции детально рассматривались выше.

Пример функции которая загружает все данные из Excel в табличную часть 1С

Мы рассмотрели функцию которая выводит на экран отдельные ячейки экселя. А как быть если нам требуется выгрузить весь лист экселя сразу и обходить его последовательно? Здесь нам пригодится код который приводится ниже:

Пример функции которая выгружает данные из 1С в Excel

Выше мы с вами разобрали много всего интересного, но мы не касались такой темы как выгрузка данных из 1С в Excel. На самом деле принцип работы тут в абсолютности почти такой же, за исключением того, что мы программно создаем новый файл эксель, и программно его записываем. Ну а для того чтобы записать значение в ячейку вы как уже наверное догадались нужно поставить выражение Лист.Cells(x, y) в левую часть. Пример выгрузки данных из 1С в Excel представлен ниже:

 

Особенности выгрузки и загрузки данных

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

  • Чтобы документ корректно загрузился на другую платформу необходимо создать при помощи конфигурации «Конвертация данных» файл с расширением;

  • Настройка соответствий между объектами метаданных и реквизитами таблиц обеих программ является ключевой задачей при подготовке правил обмена. Для создания метаописаний данных используются внешние обработки;

  • Выгрузка файлов из программы может осуществляться с группировками строк;

  • Программа 1С: Бухгалтерия не различает формулы, которые мы видим в ячейках MS Excel, для работы с ней используются функции на языке VBA.

Стандартный способ вывода информации из программы 1С в Excel

Данный способ подходит для всех платформ 1С, в том числе и для 1С: Торговля. Программа предлагает несколько форматов хранения файлов: mxl (предназначен для таблиц в 1С), xls (MS Excel), html (размещение на веб-ресурсах), txt (текстовый документ). От выбора формата будет зависеть внешний вид полученного документа. Последовательность действий приведена далее:

  1. Открыть информационную базу, затем выбрать пункты «Операции» − «Справочники» − «Номенклатура»;

  2. Щелкнуть правой кнопкой мышки в любом месте, затем нажать «Вывести список». Появится окно установки;

  3. В открывшемся списке отметить флажком поля, которые будут экспортироваться;

  4. В меню «Выводить в …» следует выбрать текстовый или табличный формат, нажать клавишу«Enter»;

  5. Когда откроется таблица − надо выделить ее. После этого нажать «Файл − Сохранить»;

  6. Ввести название документа и выбрать формат, в котором он будет сохранен.

Если таблица объемная и содержит большой объем данных, для удобства работы с ней в дальнейшем можно выгрузить каждую группу в отдельный документ. MS Excel имеет ограниченный размер, максимальное количество строк – 1048000 (версии от 2007 года выпуска). Так как выгружаемая отчетность содержит важную информацию, желательно, чтобы все операции по экспорту данных выполнял профессионал.

Выгрузка информации из платформы 1С: Бухгалтерия 7.7

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

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

После успешной инсталляции надо открыть пункт меню «Сервис», затем «Дополнительные возможности», и выбрать «Выгрузка данных для 1С». Когда параметры будут определены − нажать кнопку «Загрузить правила обмена». Если перенос данных осуществляется в последний день 2015 года, то следует указать дату выгрузки 01.01.2016. Тогда документы с введенными остатками будут датированы 31.12.2015, а документы с текущими операциями – следующим днем.

Выгрузка данных из программ 1С: Бухгалтерия 8 и 8.2

В системах 1С 8 и 1С 8.2 есть возможность экспорта информационных баз в полном объеме для последующей загрузки на других компьютерах, также можно сохранять отчеты в нескольких форматах, выгружать таблицы и получать информацию с помощью запросов консоли. Чтобы экспортировать базу целиком следует зайти в режим Конфигуратор, выбрать пункт меню «Администрирование», затем нажать «Выгрузить информационную базу». Система попросит пользователя указать наименование файла и его расположение. Если надо загрузить сохраненную информацию в другую базу, следует нажать кнопку «Загрузить информационную базу» и выбрать требуемый файл.

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

Еще один несложный способ – выгрузка печатных форм в Excel. Для получения данных необходимо открыть реестр документов, выбрать из списка нужный, затем открыть печатную форму. После этого нажать сочетание клавиш «Ctrl + S» или «Файл – Сохранить как», система предложит ввести имя файла и выбрать его тип. Сформированный отчет выгружается по похожему алгоритму.

Алгоритм при выгрузке и его реализация в 1С

Последовательность действий при выгрузке из 1С в Excel можно представить следующей последовательностью шагов:

  1. Формируем набор данных, которые необходимо сохранить в Excel;
  2. Создаем подключение к приложению (запускаем его);
  3. Заполняем файл выгружаемыми данными;
  4. Сохраняем файл;
  5. Закрываем открытое приложение.

Формирование набора данных

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

Рис.2

Осуществляем программный запуск приложения

Как было сказано выше, для того, чтобы запуститься, мы будем использовать режим Com-соединения. Код на Рис.3 показывает, как это можно осуществить.

Рис.3

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

Заполнение файла, его сохранение и завершение работы приложения

В первую очередь следует определиться, что мы хотим сделать: выгрузить данные в существующий файл или создать новый:

  • В первом случае нам необходимо запустить диалог выбора файла и получить полное имя существующего хранилища информации;
  • Во втором случае мы должны самостоятельно придумать имя создаваемого файла и определиться с его местоположением (именно из этих двух слагаемых будет создано имя файла).

Решив, где мы будем хранить наши данные, приступим к непосредственному заполнению файла , для этого создадим процедуру и передадим в нее в качестве параметра нашу выборку документов за текущий месяц. (Рис.4)

Рис.4

Как видно из кода, в первую очередь мы создали книгу, в которой будет храниться наша таблица. По умолчанию программа Excel при первом запуске создает в книге три листа. Для внесения данных мы можем выбрать любой из них, просто указав номер листа в качестве параметра для метода WorkSheets(). Если же нам понадобилось бы добавить новый лист в книгу, мы должны бы были записать строку вида:

НовыйЛист=НоваяКнига.Sheets.Add();

На этом мы закончили формировать общую структуру документа и приступаем к его заполнению.

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

Здесь важно иметь ввиду, что индексы строк и колонок таблицы значения в 1С начинаются с 0 и заканчиваются на числе на 1 меньшем, чем количество этих строк и колонок, а нумерация строк и колонок ячеек в Exel начинается с 1.

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

Если на компьютере установлен Microsoft Office версии 2007 года или более поздний, у Вас, вероятно, может возникнуть необходимость в сохранении табличного документа в формате Excel 2003, программно это можно сделать, если указать в качестве второго параметра процедуры SaveAs значение (-4143). Именно это число указывает на формат сохраняемого файла, соответсвующий расширению xls.

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

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

Колонки «Настройки»

Пометка – установкой или снятием флажка в строке определяется, будет ли заполняться соответствующий реквизит.

Представление реквизита – здесь прописывается синоним (наименование) реквизита метаданных, как оно задано в конфигураторе.

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

Описание типов – отображает тип данных, который имеет тот или иной реквизит метаданных.

Режим загрузки – предлагает три варианта на выбор (Рис.3):

Рис.3

  • Искать – будет осуществляться поиск соответствующего элемента, в случае его отсутствия может быть создан новый;
  • Устанавливать – подчиненным образом устанавливается определенное значение;
  • Вычислять – в этом случае в поле создаваемого элемента будет установлен результат вычисления выражения, указанного в колонке «Условие связи/Выражение для значения».

В последнем случае, активация поля Выражение вызовет открытие формы (Рис.4).

Рис.4

Номер колонки – поле, используемое для указания, из какой колонки экселевской таблицы необходимо брать данные для заполнения.

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

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

Вот, в принципе и вся информация, которая доступна на закладке «Настройка».

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

Проверить корректность переносимых данных можно нажатием на кнопку «Контроль заполнения» (Рис.1). После этого можно запускать процесс загрузки. Об успешном выполнении процедуры или нестандартных ситуациях Вы будете оповещены отдельно.

Варианты обработки переноса своими руками

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

  • Через Microsoft ADODB – достаточно быстрый способ, который, как правило, применим и для файлового и для клиент-серверного варианта хранения базы;
  • Через использование Microsoft Office – метод, который иногда сбоит при работе с SQL базами, как правило, работает несколько медленнее первого способа, к тому же требуется установленный Office;
  • Через Libre Office – в отличие от предыдущего метода бесплатен, помимо xls и xlsx форматов поддерживает еще и собственные таблицы, но требует установленного пакета LibreOffice и некоторой подготовки загружаемого файла (первая строка таблицы должна содержать имена колонок).

Через ADODB.Connection

Вообще ADO расшифровывается как ActiveX Data Object и служит для программного доступа к различным базам данных. Самая большая проблема при создании любого подключения к стороннему файлу (в том числе и к экселевскому) – грамотно составить строку подключения.

Для файлов Excel тут возможны три варианта:

  1. Если на компьютере установлено программное обеспечение Microsoft Access Database Engine 2010 Redistributable 32/64 bit, можно использовать строку (Рис.10); Рис.10
  2. Стандартное Windows подключение через драйвер Jet.OLEDB.4.0 будет выглядеть следующим образом (Рис.11) правда, открывать через эту строку таблицы, созданные в Microsoft Office 2007 и более поздних версиях (расширение xslx) невозможно; Рис.11
  3. Кроме этого, можно вызвать драйвер для Эксель, используемый в системе по умолчанию для этих таблиц (Рис.12); Рис.12

Параметры строки подключения:

  • Provider – здесь определяется используемый драйвер;
  • Data Source – определяет имя файла, который мы будем открывать;
  • Extended Properties – здесь можно указать: нужна ли строка-заголовок для таблицы (HDR = YES говорит о том, что данные будут считываться с первой строки, HDR = NO – что со второй), открывается ли файл только для чтения (ReadOnly) и некоторые другие дополнительные параметры.

Создав строку подключения, мы можем соединиться с загружаемым файлом (Рис.13)

Рис.13

Теперь мы можем с помощью простого запроса (Рис.14) запустить выборку информации из загружаемого файла.

Рис.14

В данном случае параметр «Лист» определяет, с каким листом из экселевской книги нам предстоит работать.

Рис.15

Набор записей, хранящихся на листе можно прочитать с помощью объекта Recordset. При этом первую запись листа можно получить параметром BOF (начало файла), а последнюю EOF (конец файла).

Процедура выбора файла

Для того чтобы открыть и выбрать Excel файл из 1С 8.3, необходимо в событии «НачалоВыбора» поля ввода вызвать ДиалогВыбораФайла с заранее установленным фильтром:
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие) Диалог.Заголовок = "Выберите excel - файл" Диалог.ПолноеИмяФайла = "c:" Диалог.Фильтр = "Таблицы (*.xls,*.xlsx)|*.xls;*.xlsx;|Microsoft Excel 97/2000/XP/2003 (*.xls)|*.xls|Microsoft Excel 2007/2010 (*.xlsx)|*.xlsx" Если Диалог.Выбрать() Тогда Объект.ФайлExcel = Диалог.ПолноеИмяФайла КонецЕсли 

Для работы на web-клиенте, в браузере необходимо подключить расширение работы с файлами.

Создание документа и заполнение его данными

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

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

// Проверка корректности заполнения колонок // Имена колонок в Excel файле должны совпадать с именами реквизитов табличной части, в которую загружаются данные // Переменная МассивКолонок содержит список номеров колонок, которые будут перегружаться МассивКолонок = Новый ТаблицаЗначений МассивКолонок.Колонки.Добавить("НомерКолонки") МассивКолонок.Колонки.Добавить("НазваниеКолонки") Для КолонкаОтсчета = 1 по КоличествоКолонок Цикл ИмяКолонки = Excel.Cells(1, КолонкаОтсчета).Text // Удаление лишних пробелов из имен колонок ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ","") // Проверка наличия реквизитов табличной части "Товары" в документе "УстановкаЦен" Если НЕ НаличиеРеквизитаТЧ(ИмяБезПробелов, Метаданные.Документы.УстановкаЦенНоменклатуры, "Товары") Тогда Сообщить("Не найден реквизит с именем " + ИмяБезПробелов + "! Колонка не будет загружена!") Иначе НовСтрока = МассивКолонок.Добавить() НовСтрока.НомерКолонки = КолонкаОтсчета НовСтрока.НазваниеКолонки = ИмяБезПробелов КонецЕсли КонецЦикла 

Вызываемая функция «НаличиеРеквизитаТЧ(ИмяРекв, МетаданныеДок, ИмяТЧ)» проверяет в метаданных документа наличие реквизита выбранной нами табличной части (в данном случае «Товары») по его имени. Функция является универсальной, но если на практике задача загрузки файлов из Excel встречается не часто можно вместо нее сразу указать имена реквизитов табличной части документа для сравнения.

// Проверка наличия реквизита табличной части документа // Возвращает тип Булево // Истина - реквизит найден // Ложь - реквизит не найден &НаСервере Функция НаличиеРеквизитаТЧ(ИмяРекв, МетаданныеДок, ИмяТЧ) // Проверка наличия ТЧ ТЧ = МетаданныеДок.ТабличныеЧасти.Найти(ИмяТЧ) Если ТЧ = Неопределено Тогда // Нет такой таб. части в документе Возврат Ложь Иначе Возврат НЕ (ТЧ.Реквизиты.Найти(ИмяРекв) = Неопределено) КонецЕсли КонецФункции 

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

// Если есть колонки для загрузки // и есть колонка "Номенклатура, которая является обязательным к заполнению реквизитом Если МассивКолонок.Количество() <> 0 и МассивКолонок.НайтиСтроки(Новый Структура("НазваниеКолонки", "Номенклатура")).Количество() <> 0 Тогда // Создание документа и заполнение реквизитов шапки НовыйДокумент = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент() НовыйДокумент.Дата = ТекущаяДата() НовыйДокумент.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Оптовая цена", Истина) НовыйДокумент.Ответственный = ПараметрыСеанса.ТекущийПользователь НовыйДокумент.Комментарий = "Загружено из файла " + Объект.ФайлExcel // Заполнение табличной части "Товары" // Переменная СтрокаОтсчета - номер строки в Excel, с которой начинается заполнение Для СтрокаОтсчета = 2 по КоличествоСтрок Цикл НСтр = НовыйДокумент.Товары.Добавить() НСтр.Валюта = НовыйДокумент.ТипЦен.ВалютаЦены Для каждого СтрокаМассив из МассивКолонок Цикл ТекущееЗначение = Excel.Cells(СтрокаОтсчета, СтрокаМассив.НомерКолонки).Text // Получение имени колонки ИмяКолонки = Excel.Cells(1, СтрокаМассив.НомерКолонки).Text // Заполнение строки данными Если ИмяКолонки = "Номенклатура" Тогда НСтр.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТекущееЗначение, Истина) ИначеЕсли ИмяКолонки = "Цена" Тогда НСтр.Цена = ТекущееЗначение КонецЕсли КонецЦикла КонецЦикла // Запись и проведение документа НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение) Сообщить("Создан и заполнен документ " + Строка(НовыйДокумент)) Иначе Сообщить("В Excel файле не достаточно данных для заполнения документа!") КонецЕсли 

В результате данной обработки был создан, заполнен данными и проведен документ «Установка цен номенклатуры».

После завершения всех манипуляций с Excel файлом, его необходимо закрыть:

Excel.DisplayAlerts = 0 Excel.Quit() Excel.DisplayAlerts = 1 

Подключение внешнего загрузчика

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

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

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

Обмен через ADO

Файл Excel при обмене через ADO представляет собой базу данных, к которой можно обращаться при помощи SQL-запросов. Установка MS Excel не требуется, но обязательно наличие драйвера ODBC, при помощи которого будет осуществляться доступ. Используемый драйвер ODBC определяется при указании строки соединения к файлу. Обычно требуемый драйвер уже установлен на компьютере.

Обмен через ADO заметно быстрее обмена через OLE, но при выгрузке нет возможности использовать функционал Excel для оформления ячеек, разметки страниц, задания формул и т.д.

Пример выгрузки:

// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»

// Установка строки соединения
Соединение.ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=»+ИмяФайла+
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;»
Соединение.Open // Открытие соединения

// Создание COM-объекта для команды
Команда = Новый COMОбъект(«ADODB.Command»
Команда.ActiveConnection = Соединение

// Присвоение текста команды для создания таблицы
Команда.CommandText = «CREATE TABLE [Лист1] (Колонка1 char(255), Колонка2 date, Колонка3 int, Колонка4 float)»
Команда.Execute // Выполнение команды

// Присвоение текста команды для добавления строки таблицы
Команда.CommandText = «INSERT INTO [Лист1] (Колонка1, Колонка2, Колонка3, Колонка4) values (‘абвгдеё’, ‘8/11/2017’, ‘12345’, ‘12345,6789’)»
Команда.Execute(); // Выполнение команды

// Удаление команды и закрытие соединения
Команда = Неопределено;
Соединение.Close
Соединение = Неопределено

Для создания нового листа и формирования его структуры можно воспользоваться объектами ADOX.Catalog и ADOX.Table. В этом случае код примет вид:

// Создание COM-объекта для работы с книгой
Книга = Новый COMОбъект(«ADOX.Catalog»
Книга.ActiveConnection = Соединение

// Создание COM-объекта для работы со структурой данных на листе
Таблица = Новый COMОбъект(«ADOX.Table»
Таблица.Name = «Лист1»
Таблица.Columns.Append(«Колонка1», 202
Таблица.Columns.Append(«Колонка2», 7
Таблица.Columns.Append(«Колонка3», 5
Таблица.Columns.Append(«Колонка4», 5

// Создание в книге листа с описанной структурой
Книга.Tables.Append(Таблица
Таблица = Неопределено;
Книга = Неопределено;

В приведенном примере в методе

Таблица.Columns.Append(«Колонка1», 202

во втором параметре указывается тип колонки. Параметр необязательный, вот некоторые значения типа колонки:

  • 5 — adDouble;
  • 6 — adCurrency;
  • 7 — adDate;
  • 11 — adBoolean;
  • 202 — adVarWChar;
  • 203 — adLongVarWChar.

Пример чтения:

// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»

// Установка строки соединения
Соединение.ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=»+ИмяФайла+
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;»
Соединение.Open // Открытие соединения

// Создание COM-объекта для получения выборки
Выборка = Новый COMОбъект(«ADODB.Recordset»
ТекстЗапроса = «SELECT * FROM [Лист1$]»

// Выполнение запроса
Выборка.Open(ТекстЗапроса, Соединение

// Обход результата выборки
Пока НЕ Выборка.EOF() Цикл
ЗначениеКолонки1 = Выборка.Fields.Item(«Колонка1»).Value// Обращение по имени колонки
ЗначениеКолонки2 = Выборка.Fields.Item(0).Value // Обращение по индексу колонки
Выборка.MoveNext
КонецЦикла;

Выборка.Close
Выборка = Неопределено;
Соединение.Close
Соединение = Неопределено;

В строке соединения параметр HDR определяет как будет восприниматься первая строка на листе. Возможны варианты:

  • YES — первая строка воспринимается как названия колонок. К значениям можно обращаться по имени и по индексу колонки.
  • NO — первая строка воспринимается как данные. К значениям можно обращаться только по индексу колонки.
Источники

  • https://1s83.info/administrirovanie/zagruzka-v-1s-iz-excel.html
  • https://lumpics.ru/uploading-data-from-1c-in-excel/
  • https://makrus.ru/chastye-voprosy-po-1s/id-1s-zagruzka-iz-excel-i-vygruzka-iz-1s-v-excel.html
  • https://setbi.ru/excel/kak-vygruzit-dokument-iz-1s-v-excel-osobennosti-eksporta-faylov-/
  • http://blog.it-terminal.ru/programmirovanie-1s/vygruzka-iz-1s-v-excel.html
  • http://blog.it-terminal.ru/1c-ut/zagruzka-1s-iz-excel.html
  • https://1s83.info/programmirovanie/zagruzka-iz-excel-v-1s-dlya-programmista.html
  • https://lumpics.ru/upload-from-excel-in-1c/
  • https://pro1c8.ru/obmen-excel-1c/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: