Приемы эффективной загрузки данных из Excel в 1С
В публикации показаны приемы по загрузке данных из файла Excel в таблицу значений..
Протестировано на версии платформы 1С:Предприятие 8.3 (8.3.9.1818).
В версии 8.3 для 1с загрузки из excel существует альтернатива COM объекту. У табличного документа есть метод Прочитать.
Особенно актуально для файлов больших объемов, т.к. табличный документ обрабатывается гораздо быстрее.
А табличный документ легко трансформируется в таблицу значений через построитель запроса.
Во вложении обработка — пример загрузки и вывода в табличный документ и таблицу значений.
Рабочий код занимает несколько строк:
//Вывод в табличный документ
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Прочитать(Файл, СпособЧтенияЗначенийТабличногоДокумента.Значение);
//вывод в таблицу значений
ПЗ = Новый ПостроительЗапроса;
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());
ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
ПЗ.ЗаполнитьНастройки();
ПЗ.Выполнить();
ТаблицаЗначений = ПЗ.Результат.Выгрузить();
P.S. При выводе в таблицу значений через построитель запроса, названия колонок в источнике данных должны быть первой строкой, иначе построитель не сможет получить и преобразовать их в колонки таблицы значений и выдаст ошибку.
Во внешней обработке демонстрация загрузки.
Нужно загрузить большой объем данных из Экселя в 1С? Настроить постоянную загрузку накладных и товаров? Обратитесь к нам! Оставьте заявку в форме выше или позвоните нам по телефону +7 499 350 29 00.
Несомненно, одним из самых распространенных способов массового занесения информации в информационную систему является загрузка информации в 1С 8.3 из Excel. Ниже я рассмотрю пошаговое создание обработки загрузки данных и дам ссылку на скачивание её.
Данная инструкция написана для программистов, для пользователей 1С скорее подойдут следующие статьи:
- Загрузка данных штатными методами в 1С — Загрузка из Excel на примере прайс-листа.
- Если вам необходимо загрузить номенклатуру в 1С — пример загрузки товаров в 1С 8.3.
Самые популярные данные, которые требуются для загрузки в 1С из Excel:
- номенклатура и её штрих-коды, в том числе с картинками;
- накладные от поставщика;
- прайс-листы от контрагентов;
- начальные остатки по складам или бухгалтерскому учету.
MS Excel — программа для работы с электронными таблицами, созданная компанией Microsoft. Она предоставляет возможности экономико-статистических расчетов, графические инструменты и язык макропрограммирования VBA. Excel является одним из наиболее популярных приложений в мире.

Обработку мы будем делать универсальную, подобно той, что мы делали для загрузки файлов csv в 1С.
1. Создание обработки загрузки и её формы

Тут мы особо ничего не будем придумывать, сделаем поле ввода для выбора файла на диске, кнопку «Прочитать» для чтения файла и заполнения табличной части.
2 Обработчик выбора файла
Тут всё сделаем как в загрузке из CSV:
При нажатии на выбор файла необходимо отображать диалог выбора файла в ОС. Сделать это очень просто. Необходимо на обработчик “НачалоВыбора” в поле ввода файла указать следующий код:
ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбора.Заголовок = “Выберите файл”; Если ДиалогВыбора.Выбрать() Тогда ИмяФайла = ДиалогВыбора.ПолноеИмяФайла; КонецЕсли;
3 Обработка данных из Excel и загрузка в 1С 8.3
Для начала мы очищаем информацию в таблице, находим файл на диске, подключаемся к Excel через COM-объект и проводим все технические настройки:
//очищаем таблицу и удаляем колонки Таблица.Очистить(); Таблица.Колонки.Очистить(); ЭлементыФормы.Таблица.Колонки.Очистить();
//подключаемся к эксель
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Состояние("Обработка файла Microsoft Excel...");
Исключение
Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Попытка
//Открываем необходимый лист
Excel.Sheets(1).Select(); // лист 1, по умолчанию
Исключение
//Закрываем Excel
Excel.ActiveWorkbook.Close();
Excel = 0;
Сообщить("Файл "+Строка(ИмяФайла)+" не соответствует необходимому формату! Первый лист не найден!");
ОтменитьТранзакцию();
Возврат;
КонецПопытки;
//Получим количество строк и колонок.
//В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
Если Версия = "8" тогда
ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
Иначе
ФайлСтрок = Excel.Cells(1,1).SpecialCells(11).Row;
ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column;
Конецесли;
После того как мы получили все данные из файла, мы считываем 1 строку файла и генерируем колонки на форме с наименованиями из файла:
//считываем первую строку и генерируем колонки Сч = 1; Пока ЗначениеЗаполнено(Excel.Cells(1, Сч).Text) Цикл ИмяКолонки = Excel.Cells(1, Сч).Text; ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ",""); // убираем из имени колонок пробелы Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки); НоваяКолонка = ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов, ИмяКолонки); НоваяКолонка.Данные = ИмяБезПробелов; Сч = Сч + 1; КонецЦикла;
После формирования колонок считываем тело файла эксель и построчно заносим данные в табличное поле:
Для НС = 2 по ФайлСтрок Цикл // НС указываем с какой строки начинать обработку
Состояние("Файл "+Строка(ИмяФайла)+": Обрабатывается первый лист "+Строка(Формат(?(ФайлСтрок=0,0,((100*НС)/ФайлСтрок)),"ЧЦ=3; ЧДЦ=0"))+" %");
ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break
НоваяСтрока = Таблица.Добавить();
Для НомерКолонки = 1 по Таблица.Колонки.Количество() Цикл
//заполняем строку значениями
ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Text;
ИмяКолонки = Таблица.Колонки[НомерКолонки-1].Имя;
НоваяСтрока[ИмяКолонки] = ТекущееЗначение;
КонецЦикла;
КонецЦикла;
В результате мы получаем загруженные данные из excel c такими же колонками:

Не забудьте закрыть Эксель в 1С после выполнения процедур с помощью кода:
Excel.DisplayAlerts = 0; Excel.Quit(); Excel.DisplayAlerts = 1;
Универсальную загрузку из excel в 1C можно бесплатно скачать тут.
Обратите внимание, эта обработка написана в режиме «обычного приложения 1С».
Если у Вас всё же возникли проблемы с загрузкой, Вы можете обратиться за помощью к опытному программисту 1C.