1с загрузка из excel УФ

Решил для себя сделать обработку-шаблон по загрузке данных из excel (управляемые формы), так как надоело каждый раз лезть в поисковые системы и искать готовые решения, которые либо-требуют регистрации, либо денег (старт мани). Собрал из всевозможных статей интернета более или менее универсальное решение, которое вы бесплатно и без регистрации можете скачать в конце статьи! А так же не забыть поставить палец вверх!.

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

Путь к файлу Excel.
Путь к файлу Excel.

Далее, используя методы и свойства объекта ‘COMОбъект(“Excel.Application”)‘, зададим алгоритм подключения к файлу и отключения от него (по команде ‘ЗагрузитьИзЕксель‘):

Отлично, теперь у нас есть параметры подключения к нашему файлу ‘Excel‘, в том числе и массив всех его страниц! Имея эти данные мы теперь можем начать загружать данные из екселя любым из доступных способов. Рассмотрим первый вариант – загрузка данных их екселя через массив структур:

На выходе получаем массив, элементы которого являются структурой. По идее мы считали данные из екселя, и теперь можем уже с ними строить свои алгоритмы – обрабатывать, приводить типы, загружать в таблицу значений и так далее (все данные в массиве):

Массив данных из ексель.
Массив данных из ексель.

Можно загрузить данные и без перебора всех строк. Используя свойство ‘Range‘ и метод ‘Выгрузить‘ мы можем получить двумерный массив с данными (COMSafeArray) – количество колонок в данном случае будет соответствовать количеству элементов в массиве:

Двумерный массив из ексель.
Двумерный массив из ексель.

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

Так же данные из екселя можно вытащить в табличный документ. Для этого нам в серверной процедуре необходимо его прочитать (метод ‘Прочитать‘ табличного документа) и затем его уже вернуть в клиент на форму. В этом нам помогут следующие методы ‘ПоместитьВоВременноеХранилище‘, ‘ПолучитьИзВременногоХранилища‘, ‘ПолучитьИмяВременногоФайла‘ и реквизит форма с адресом в хранилище ‘АдресВХранилище‘ / ‘Строка‘:

Вывод ексель в табличный документ.
Вывод Ексель в табличный документ.

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

Таблица значений из построителя отчета.
Таблица значений из построителя отчета.

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

Скачать файлыcraft1c_ShablonZagruzkiIzEksel.epf

33+

5 комментария

  1. Р

    Стоит упомянуть что COM ведь только на Виндовс.

    3+
    1. Admin (Автор записи)

      Да верно, стоило бы об этом упомянуть! Еще так же хочу добавить вариант получения количество строк и колонок на листе:
      – ВсегоСтрок = Лист.UsedRange.Rows.Count;
      – ВсегоКолонок = Лист.UsedRange.Columns.Count;

      1+
  2. Admin (Автор записи)

    Если в процессе работы с ексель мы вносим в него изменения и затем хотим их сохранить, стоит добавить в процедуру отключения соединения метод ‘SaveAs’:

    Соответстие["Соединение"].DisplayAlerts = 0;
    Соответстие["ExcelФайл"].SaveAs(ПутьКФайлу);
    Соответстие["ExcelФайл"].Close();

    1+
  3. Рэм

    Здравствуйте, у меня проблемы при работе с вашей обработкой.
    1-я проблема (при нажатии на кнопку “ПоказатьТабличныйДокумент”):

    {ВнешняяОбработка.craft1c_ШаблонЗагрузкиИзЕксель.Форма.Форма.Форма(157)}: Ошибка при вызове метода контекста (Прочитать): Ошибка при выполнении файловой операции ‘C:\Users\Admin\AppData\Local\Temp\v8_6E12_15.xlsx’. Формат файла не поддерживается.

    2-я проблема (при нажатии на кнопку Табличный документ в таблицу значений): ожидает выражение выбрать, видимо это про запрос.

    1+
    1. Admin (Автор записи)

      Привет! Это всего лишь шаблон для работы с загрузкой. У тебя скорее всего вот какие проблемы:
      1: у тебя скорее всего не стоит офис , который поддерживает формат – xlsx / “Файл = ПолучитьИмяВременногоФайла(“xlsx”);”. Попробуй работать с форматом: “xls”
      2: У тебя скорее всего не заполнен макет на форме. Сначала загружаешь данные из ексель. Затем жмешь “ПоказатьТабличныйДокумент”. А уже затем “ТабличныйДокументВТЗ”.
      И все должно работать!

      1+

Оставить комментарий

Ваш адрес email не будет опубликован.