Загрузка данных из книги Excel в программу 1С

Уже давно самой популярной программой среди бухгалтеров, планировщиков, экономистов и управленцев стало приложение 1C. Оно имеет не только разнообразное количество конфигураций для различных видов деятельности, но и локализации под стандарты учета в нескольких странах мира. Все больше предприятий переходят на ведение учета именно в этой программе. Но процедура переноса данных вручную из других программ учета в 1C — довольно долгое и скучное занятие, отнимающее массу времени. Если на предприятии велся учет с помощью Excel, то процесс переноса можно существенно автоматизировать и ускорить.
Перенос данных из Эксель в 1С
Производить перенос данных из Excel в 1С требуется не только на начальном периоде работы с данной программой. Иногда наступает необходимость подобного, когда по ходу деятельности нужно занести какие-то списки, хранящиеся в книге табличного процессора. Например, если требуется перенести прайс-листы или заказы из онлайн-магазина. В случае, когда списки небольшие, то их можно вбить и вручную, но что делать, если они содержат сотни наименований? Для того, чтобы ускорить процедуру, можно прибегнуть к некоторым дополнительным возможностям.
Для автоматической загрузки подойдут практически все типы документов:
- Список номенклатуры;
- Список контрагентов;
- Список прайсов;
- Перечень заказов;
- Информация о покупках или продажах и т.д.
Сразу нужно отметить, что в 1С нет встроенных инструментов, которые позволяли бы переносить данные из Эксель. Для этих целей нужно подключить внешний загрузчик, который представляет собой файл в формате epf.
Подготовка данных
Нам нужно будет подготовить данные в самой таблице Excel.

-
Любой список, загружаемый в 1С, должен быть однородно структурирован. Нельзя выполнять загрузку при наличии в одном столбце или ячейке данных нескольких типов, например, имя человека и его телефонный номер. В этом случае, такие двойные записи обязательно следует разделять в разные столбцы.
Открывается окно сохранения. В поле «Тип файла» по умолчанию будет указан формат xlsx. Меняем его на «Книга Excel 97-2003» и жмем на кнопку «Сохранить».

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

- Запускается окно открытия файла. Переходим в директорию его расположения, выделяем тот объект и жмем на кнопку «Открыть».

- После этого загрузчик запустится в 1С.
Одной из основных баз данных, с которыми работает 1C, является список номенклатуры товаров и услуг. Поэтому для описания процедуры загрузки из Excel остановимся на примере переноса именно этого типа данных.
- Возвращаемся к окну обработки. Так как мы будем загружать номенклатуру товаров, то в параметре «Загрузка в» переключатель должен стоять в позиции «Справочник». Впрочем, он так установлен по умолчанию. Переключать его следует только тогда, когда вы собрались переносить другой тип данных: табличную часть или регистр сведений. Далее в поле «Вид справочника» кликаем по кнопке, на которой изображено многоточие. Открывается выпадающий список. В нем нам следует выбрать пункт «Номенклатура».

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

- Теперь опять открываем переносимый документ Excel. Если наименование его колонок отличается от наименования полей справочника 1С, которые содержат соответствующие, то нужно переименовать эти столбцы в Экселе так, чтобы названия полностью совпадали. Если в таблице имеются столбцы, для которых в справочнике нет аналогов, то их следует удалить. В нашем случае такими столбцами являются «Количество» и «Цена». Также следует добавить, что порядок расстановки столбцов в документе должен строго совпадать с тем, который представлен в обработке. Если для некоторых столбцов, которые отображены в загрузчике, у вас нет данных, то эти колонки можно оставлять пустыми, но нумерация тех столбцов, где имеются данные, должна совпадать. Для удобства и быстроты редактирования можно применять специальную возможность Эксель для быстрого перемещения колонок местами.
Мы проследили процедуру добавления данных в справочник номенклатуры в программе 1C 8.3. Для других справочников и документов загрузка будет проводиться по тому же принципу, но с некоторыми нюансами, с которыми пользователь сможет разобраться самостоятельно. Также нужно заметить, что у различных сторонних загрузчиков процедура может отличаться, но общий подход остается у всех одинаковый: сначала обработчик загружает из файла информацию в окно, где производится её редактирование, а уже потом она добавляется непосредственно в базу данных 1С.
Загрузка номенклатуры из Excel в документ 1С
Перейдите в раздел «Справочники», выберите пункт «Номенклатура».

Нажмите на кнопку «Загрузить».

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

Нажмите на кнопку «Далее».

Номенклатура загружена в 1С.
Второй способ
Загрузить номенклатуру в документ, например «Счет покупателю» в 1С, можно с помощью сервиса «Инструменты бухгалтера» (данная обработка через веб-браузер недоступна, нужно запускать через ТК или Линк 42).

Откройте обработку «Загрузка данных из табличного документа».

Выберите пункт «Табличную часть». В поле «Табличная часть» укажите «Товары». В поле «Ссылка» выберите нужный вид документа, например «Счет от поставщика».

Создайте новый счет на оплату или выберите созданный документ.

Перейдите на закладку «Настройки» и укажите необходимые параметры. Объекты для загрузки, которые вы выберите, – это будут колонки.

Перейдите на закладку «Табличный документ». Нажмите на кнопку «Обновить».

Колонки готовы для копирования данных. Вы можете взять тот же документ Excel, который вы использовали ранее для загрузки номенклатуры. Выделите и скопируйте нужные колонки из файла Excel.

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

Перед загрузкой проверьте уникальность товара по кнопке «Контроль заполнения». Затем выберите команду «Загрузить данные».


Вы увидите, что в документе заполнены все поля, кроме суммы (не всегда есть возможность добавить ее в документ). Чтобы это исправить, в самом документе выделите все позиции (нажмите на клавиатуре комбинацию клавиш CTRL+A) и выберите команду «Скопировать строки» (CTRL + Shift +C).

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

Все позиции в документе удалятся. Выберите команду «Вставить» (CTRL + Shift +V).

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

Нажмите на кнопку «Провести».

С помощью обработки «Загрузка данных из табличного документа» вы можете массово заполнять позициями номенклатуры (с ценой и количеством) практически любые документы в 1С. Главное, чтобы эта номенклатура изначально была создана в 1С.
Преобразование EXCEL в таблицу значений без COM и других извращений

Данная статья не претендует на оригинальность и не является конечным решением.
Подходы решения задач и примеры программного кода несут исключительно обучающий характер.
Существует масса подходов загрузки данных из EXCEL в 1С. Большинство решений основаны на COM или еще более сложных возможностях платформы.
Для себя разработал наиболее оптимальный вариант:
EXCEL -> Табличный документ -> Построитель запроса -> Таблица значений
- Прочитать Excel файл на клиенте, для передачи на сервер:
Визуализировать таблицу значений:
Описание преобразования данных:
- Получаем исходный файл на клиенте;
- На основании файла создаем двоичные данные и получаем расширение файла;
- Передаем двоичные данные на сервер;
- Создаем дубль файла excel на сервере;
- Читаем файл в новый табличный документ;
- Получаем область табличного документа, где находятся полезные данные (ТабличныйДокумент.Область(8, 1, ТабличныйДокумент.ВысотаТаблицы, ТабличныйДокумент.ШиринаТаблицы) );
- Создаем новый построитель запроса и установим в качестве источника данных — область полезных данных;
- Выполним построитель и получим результат запроса;
- Результат запроса выгрузим в таблицу значений.
- Скорость работы по сравнению с COM EXCEL
- Возможно выполнять загрузку где EXCEL нет вообще (MAC | LINUX | etc…)
- Простота реализации
Related Posts
41 Comments
Не нужно плодить временные сущностифайлы!
Заменить на одну строку:
ни фига себе , я тут сидел изучал Адо , как преобразовать xlsx в xml … все тлен ..
Автор гений Спасибо.
(2)через поток читает только ods и mxl, к сожалению.
(5)поясню: листы перечислены в областях документа, сортировать их можно по признаку «Верх» , т.е. где он начинается. Есть так же многоэтажные шапки, которые часто делают Экселеводы, для них сделал отдельную функцию. Ещё метод прочитать может читать как ячейки как строку, а может с теми типами, которые указаны в экселе(но это рисково, надо контролировать, особенно если надо использовать эту таблицу в запросе).
Это работает только для xlsx
К сожалению, xls не прочитает.
Вот здесь человек проделал огромный труд, читайте: https://infostart.ru/public/120961/
(0) О Боже автор наконец-то освоил уже устаревший метод Прочитать!
(7) С какого это перепуга не сработает. Все прекрасно там работает!
Метод1С «Прочитать эксель в табличный документ» намертво на несколько часов виснет если на одном из листов >30000 строк, в этом случае весь документ не доступен и работать не возможно, поэтому «прочитать» можно использовать только для маленьких файлов. А для больших — можно делать на основе быстрого парсера https://infostart.ru/public/139556/
(7) при условии если не хотим убить сутки на разбирательство с https://infostart.ru/public/120961/ которую рядовые пользователи не смогут осилить
Ну что за грязь! Назвать функцию «EXCELВТаблицуЗначений», а возвращать из неё «ТабличныйДокумент»…
Тем более, что статья писана для начинающих, и это обязательно будет вводить их в ступор и/или приучать к бардаку в коде.
Ну раз уж выложили свою статью на всеобщий суд, так хоть немного причешите код, что ли…
(12) Добрый день! Сухая критика автора ни к чему не приведёт. Вот что действительно поможет комьюнити, напишете как сделали бы Вы, или поделитесь полезными ссылочками дабы предотвратить бардак в коде.
(8) Больше поражает сколько плюсов статья получила))
(11) Если количество листов в документе больше 20, то так же виснет намертво
(13) она универсальная, а не заточенная под конкретную задачу, если и удастся самому приложив усилия импортировать конкретный документ и все сопутствующие справочники и регистры сведений, то никак не получится заставить ей пользоваться рядовых пользователей в ежедневной рутинной работе.
(14) А как мне еще «размочить» критику? Я указал на конкретную, грубую ошибку, заключающуюся в том, что наименование основной функции описывает один ТИП возвращаемого значения, а по факту возвращает ДРУГОЙ ТИП значения. Исполняться такой код будет, но ведь исполнение кода не является единственным критерием оценки его качества.
Как в том афоризме: «он — начинающий программист, и пока еще кодит под себя»…
(9) А что плохого в построителе?
(9) Отнюдь, удобней способа выгрузить табличный документ в ТЗ и наоборот ещё поискать
А как насчет метода копипаста? Почему то никто тут про него не вспоминает…. Самый быстрый способ, под winwows так точно. через Буфер обмена можно под wsShell отправкой ctrl+C потом в своей таблице ctrl + V или «стандартными» методами Excel — select — copy. Потом в 1с из буфера вставить… Так независимо от версии 1с… Хоть с 8.1 и то работает…
Есть минус… Excel. Или хотя бы OpenOffice должен быть установлен.… 2) должно быть открыто, моргает при открытии 3) при многократной (более 20) вставке… Exсel умирает… ошибка завершения, а процесс остаётся висеть
Почему нельзя вынести работу с файлом на клиент? А уже полученный Табличный документ передать на сервер? Тогда временный файл вроде как не нужен
я на платформе 8.3.13 из 1с просто открыл файл эксель (через меню Файл-Открыть) — открылся табличный документ mxl.
при этом эксель не был установлен на компе.
а так как я не использую чтение эксель, а использую для обработки информации mxl, то мне этого достаточно (можете мои загрузки из эксель поизучать)
(9) 1. в защиту ПостроителяЗапроса — вот моя разработка https://infostart.ru/public/933060/ — которая использует ПостроительЗапроса — реализовал полгода назад — считаю объект ПостроительЗапроса — очень интересным и малоизученным программистами
8.3 — это платформа — у меня все программы на обычных формах работают на 8.3 — ут 10.3, бп 2.0.
в ут 10.3 до сих пор многие механизмы на ПостроителеЗапроса — к примеру, отчеты или отборы в документе Инвентаризация товаров.
(11) спасибо за информацию! значит используем предложенный способ для небольших списков товаров — к примеру, при загрузке приходных накладных — к примеру в небольшом магазине игрушек…
(14) критика обидна, поскольку в такой критикующей форме идет общение, но раз другой нет — то приходится учиться принимать ее в таком виде — в результате, если автор услышит суть, уберет эмоции критикующего, то ему будет полезно.
(15) загрузка из Эксель одна из самых популярных задач — не зря же 1С развивает эту тему….поэтому любые нововведения встречают на «ура»
ОбластьТаблицы = ТабличныйДокумент.Область(8, 1, ТабличныйДокумент.ВысотаТаблицы, ТабличныйДокумент.ШиринаТаблицы);
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьТаблицы);
А что, так можно было?)
Не знал, спасибо, автор)
Автор хотел донести общую суть самого простого способа загрузки из Excel.
— Старые форматы excel не прочитает.
— Открытый файл не прочитает.
— Ну и на а 8.2, разумеется, не заработает.
Когда однажды столкнешься с проблемой доступа к файлу на сервере, по пути выбранном на клиенте, тогда поймешь что «детали» и работоспособность на файловом и клиент-серверном варианте это разные вещи
Данное решение не пригодно для больших таблиц потому что платформа 1С8 пока не умеет работать с табличными документами так же быстро как это делает Эксель. Данное решение пригодно исключительно для мелких файлов.
(15) Ну дык примитив всегда поражает воображение: «всего N строчек и вау-вау!». А про нормальную работу через ADO итд автор не знает, да и специфику внутренних преобразований эксельных таблиц внутри платформы никто не знает точно. Зато вау.
(9) Это ещё автор не в курсе, какие у построителя ограничения по производительности, да как он обойдётся с ячейками сложных форматов, да что будет делать с объединёнными областями… Гы, много автору суждено открытий чудных. И тем, кто повёлся на этот способ, тоже)
(24) Соглашусь. Построитель иногда очень эффективен. И я в своё время его много изучал, и сейчас использую. Любой инструмент должен быть адекватен своему контексту применения.
Отличная реализация частой задачи!
Можно читать и через ТабДок, но есть ньюансы .
(9) Построитель запроса (не путать с построителем отчета!!) очень даже хороший инструмент, незаслуженно обделенный вниманием. Позволяет по сути уйти от всеми нами «любимых» СтрЗаменить или склеек условий. Построитель запроса это младший брат СКД, никто не ругается же на СКД в 1С.
(38) а про нюансы люди сами узнают, когда попытаются это применить))) плюсов, смотрю, вообще уже запредельное количество. Как и желающих с размаху встать на грабли)
Плюсанул только за функцию ТаблицаЗначенийВТабличныйДокумент, как то запамятовал что построитель отчета может по таблице значений выводить табличный документ. Иногда нужно вывести какую нибудь простенькую таблицу ошибок обработки например или какую нибудь отладочную инфу пользователю, а городить макет и вывод в табдок не хочется.. вот тут то эта функция будет самое оно. Кстати функция прокатит и для РезультатаЗапроса, а не только для ТаблицыЗначений.
А по поводу загрузки из экселя функция увы совсем не универсальная будет из за построителя запроса, он совсем не все подряд кушает, но если есть простенькая четко структурированная табличка, то вполне прокатит.
(41) Алекс, а если люди ещё почитают про ОписаниеИсточникаДанных, а потом сравнят, что в СП написано про «ИсточникДанных» и что про конструктор описания, будет ещё много открытий)
Ну раз подобное теперь «выбор экспертов», то у меня уже просто нет слов…
(42) это да, хотя с другой стороны каждую неделю какую нибудь годноту типа перфоленты никто выкладывать не сможет, а выбор экспертов надо чем-то наполнять…