1С загрузить из excel в таблицу значений

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

Итак, условие задачи: организовать загрузку данных из файла Эксель в табличную часть элемента справочника. Приложение Майкрософт Эксель установлено только на рабочем компьютере. На сервере его нет.

Первым делом создаём форму справочника, если её ещё нет, и размещаем на форме команду «Загрузить из Эксель».

В модуле формы клиентская процедура:

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

В результате имеем табличную часть справочника, заполненную из файла Эксель.

Нужно загрузить большой объем данных из Экселя в 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-объект и проводим все технические настройки:

Получите 267 видеоуроков по 1С бесплатно:

После того как мы получили все данные из файла, мы считываем 1 строку файла и генерируем колонки на форме с наименованиями из файла:

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

В результате мы получаем загруженные данные из excel c такими же колонками:

Не забудьте закрыть Эксель в 1С после выполнения процедур с помощью кода:

Универсальную загрузку из excel в 1C можно бесплатно скачать тут.

Обратите внимание, эта обработка написана в режиме «обычного приложения 1С».

Если у Вас всё же возникли проблемы с загрузкой, Вы можете обратиться за помощью к опытному программисту 1C.

Видеоурок по загрузке товаров в 1С из файлов Excel:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Функция получения таблицы значений из файла Excel. Использует запрос в среде самого Excel.
Параметры функции:
ПутьКФайлу (строка) – полный путь к файлу Excel
ИмяНомерСтраницы – имя (строка) или порядковый номер (число) страницы файла Excel
Заголовок (булево) – является ли первая строка строкой заголовка. Если Истина, то колонки будущей ТЗ проименуются из строки заголовка Excel, если Ложь, то колонки проименуются системно "F1", "F2" и т.д
ПерваяСтрока (число) – номер первой строки считывания с листа Excel

Читайте также:  Рисунки из символов в одну строчку

ВАЖНО. Типы колонок будущей ТЗ будут определяться типом первой строки данных Excel (именно данных, не заголовка). Поэтому важно соблюдать в Excel тип колонок данных

Функцию достаточно разместить в общем модуле своей конфигурации.

// Функция возвращает таблицу значений ТЗ из данных файла Excel
//
// ПутьКФайлу (строка) – полный путь к файлу Excel
// ИмяНомерСтраницы – имя (строка) или порядковый номер (число) страницы файла Excel
// Заголовок (булево) – является ли первая строка строкой заголовка. Если Истина, то колонки будущей ТЗ проименуются из строки заголовка Excel, если Ложь, то колонки проименуются системно "F1", "F2" и т.д
// ПерваяСтрока (число) – номер первой строки считывания с листа Excel

// ВАЖНО. Типы колонок будущей ТЗ будут определяться типом первой строки данных Excel (именно данных, не заголовка). Поэтому важно соблюдать в Excel тип колонок данных

Функция ПолучитьТЗИзEXCEL ( ПутьКФайлу , ИмяНомерСтраницы , Заголовок = Истина, ПерваяСтрока = 0 ) Экспорт

ТЗ = Новый ТаблицаЗначений ;

#Если Клиент Тогда
Состояние ( "Подключение к файлу Excel. " );
#КонецЕсли
//
Попытка
Эксель = Новый COMОбъект ( "Excel.Application" );
Версия = СтрПолучитьСтроку ( СтрЗаменить ( Эксель . Version , "." , Символы . ПС ), 1 );
Исключение
СообщениеТекста ( "Ошибка подключения к " + ПутьКФайлу + " : " + ОписаниеОшибки (),, СтатусСообщения . Важное );
Возврат ТЗ ;
КонецПопытки;
//
Книга = Эксель . WorkBooks . Open ( ПутьКФайлу );
// Выбираем данные запросом из таблицы файла по имени страницы
Если ТипЗнч ( ИмяНомерСтраницы ) = Тип ( "Число" ) Тогда
Лист = Книга . WorkSheets ( ИмяНомерСтраницы );
ИмяСтраницы = Лист . Name ;
Иначе
ИмяСтраницы = ИмяНомерСтраницы ;
КонецЕсли;
//
// Определим диапазон данных Excel
ПослЯчейка = СтрЗаменить ( Книга . WorkSheets ( ИмяСтраницы ). Cells ( 1 , 1 ). SpecialCells ( 11 ). Address , "$" , "" );
//
Эксель . Application . Quit ();
//
Эксель = неопределено;
Книга = неопределено;
Лист = неопределено;

Читайте также:  Глянцевый или матовый экран телевизора

Connection = Новый COMОбъект ( "ADODB.Connection" );
Если Версия = "12" ИЛИ Версия = "14" Тогда
СтрокаПодключения = "Prov > + ПутьКФайлу + ";Extended Properties=""Excel 12.0 Xml;HDR=" +?( Заголовок , "YES" , "NO" )+ ";IMEX=1""" ;
Иначе
СтрокаПодключения = "Prov > + ПутьКФайлу + ";Extended Properties=""Excel 8.0;HDR=" +?( Заголовок , "YES" , "NO" )+ ";IMEX=1""" ;
КонецЕсли;

Попытка
Connection . Open ( СтрокаПодключения );
Исключение
СообщениеТекста ( "Ошибка подключения!" + ОписаниеОшибки (), , СтатусСообщения . ОченьВажное );
Возврат ТЗ ;
КонецПопытки;

Command =Новый COMОбъект ( "ADODB.Command" );
Command . ActiveConnection = Connection ;
Command . CommandText = ?( ПерваяСтрока = 0 , "Select * From [" + ИмяСтраницы + "$]" , "Select * From [" + ИмяСтраницы + "$A" + ПерваяСтрока + ":" + ПослЯчейка + "]" );

Попытка
Записи = Command . Execute ();
Исключение
СообщениеТекста ( "Ошибка при выполнении запроса!" + ОписаниеОшибки (), , СтатусСообщения . ОченьВажное );
Возврат ТЗ ;
КонецПопытки;

Для НомерПоля = 0 По Записи . Fields . Count – 1 Цикл
СтрКолонка = Строка ( Записи . Fields . Item ( НомерПоля ). Name );
СтрКолонка = СтрЗаменить ( СтрКолонка , "№" , "Num" );
НедопустимыеСимволы = "

`!@""#№$;%^:&?*()-+=/|.," ;
Для i = 1 По СтрДлина ( НедопустимыеСимволы ) Цикл
СтрКолонка = СтрЗаменить ( СтрКолонка , M >( НедопустимыеСимволы , i , 1 ), "_" )
КонецЦикла;
ИмяКолонки = СокрЛП ( СтрКолонка );
ТЗ . Колонки . Добавить ( ИмяКолонки , , СтрКолонка );
КонецЦикла;

Пока НЕ Записи . EOF () Цикл
НоваяСтрока = ТЗ . Добавить ();
Для НомерПоля = 0 По Записи . Fields . Count – 1 Цикл
НоваяСтрока [ НомерПоля ] = Записи . Fields ( Записи . Fields . Item ( НомерПоля ). Name ). Value ;
КонецЦикла;
Записи . MoveNext ();
КонецЦикла;

Command = Неопределено;
Записи = Неопределено;

Оцените статью
ПК Знаток
Добавить комментарий

Adblock
detector