Загрузка из EXCEL в 1С. MS EXCEL.Application

18.04.15

Интеграция - Загрузка и выгрузка в Excel

ПРАКТИЧЕСКОЕ ПОСОБИЕ РАЗРАБОТЧИКА: Метод "MS EXCEL" (EXCEL.Application).
Поддерживаемые типы: *.xls,*.xlsx.

20.08.2014. Новая редакция с возможностью загрузки изображений из файла.

В данной статье приведен функционал, с помощью которого в обработке
"Импорт из EXCEL и др.источников (xls,xlsx,ods,sxc,dbf,mxl,csv,sql) в 1С": //infostart.ru/public/120961/
производится считывание данных из файлов табличного типа *xls, *.xlsx.

Методы загрузки из внешнего источника:
- Метод "MS ADO" (Чтение файлов xls, xlsx средствами Microsoft ADO): //infostart.ru/public/163640/
- Метод "MS EXCEL" (Чтение файлов xls, xlsx с картинками средствами Microsoft Office): //infostart.ru/public/163641/
- Метод "LO CALC" (Чтение файлов xls, xlsx, ods, sxc с картинками средствами LibreOffice): //infostart.ru/public/163642/
- Метод "NativeXLSX" (Чтение файлов xlsx с картинками средствами 1С. ПостроительDOM): //infostart.ru/public/300092/
- Метод "NativeXLSX". Предыдущий вариант (Чтение файлов xlsx средствами 1С. ЧтениеXML):
//infostart.ru/public/225624/
- Метод "Excel1C" (Загрузка на платформе 8.3.6 с картинками. Чтение файлов xls, xlsx, ods): //infostart.ru/public/341855/
- Список листов файла: //infostart.ru/public/163724/


Публикаций на тему загрузки из EXCEL - множество, но
"
— Вам билетёр нужен?
— Был нужен, да уже взяли.
Может и я на что сгожусь?
— Может и сгодишься, если скалиться не будешь ...
"
"НЕУЛОВИМЫЕ МСТИТЕЛИ" (1966).


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ФайлEXCEL= "D:\Товар.xls";
    ИмяЛиста = Новый Структура ("ИмяЛиста, НомерЛиста","СФКартинок (2)", 16);
    СтрокаЗаголовка = 1;
    НачСтрока = 3;
    КонСтрока = 4;
    КолвоСтрокExcel = 0;
    ЗагрузитьМетодом_MSEXCEL_НаСервере(ФайлEXCEL, ИмяЛиста, СтрокаЗаголовка, НачСтрока, КонСтрока, КолвоСтрокExcel);
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьМетодом_MSEXCEL_НаСервере(ФайлEXCEL, ИмяЛиста, СтрокаЗаголовка, НачСтрока, КонСтрока, КолвоСтрокExcel)

    ТаблицаРезультат = ЗагрузитьМетодом_MSEXCEL(ФайлEXCEL, ИмяЛиста, СтрокаЗаголовка, НачСтрока, КонСтрока, КолвоСтрокExcel);

КонецПроцедуры

// Метод "Microsoft EXCEL.Application".
//
// Параметры:
//      ФайлEXCEL - Полное имя файла (путь к файлу с именем файла и расширением)
//      ИмяНомерЛиста - Имя/Номер выбранного листа файла EXCEL.
//      СтрокаЗаголовка (по умолчанию = 1) - Номер строки EXCEL, в которой расположены заголовки колонок.
//          Не используется.
//      В обработке 1-я строка анализируется для сопоставления колонок EXCEL с реквизитами 1С (справочники, докуметны, регистры).
//      НачСтрока (по-умолчанию = 0) - Номер начальной строки, начиная с которой считываются данные из EXCEL.
//      КонСтрока (по-умолчанию = 0) - Номер конечной строки, которой заканчиваются считываемые данные из EXCEL.
//          Если НачСтрока=0 и КонСтрока=0, то считывается вся таблица, находящаяся на листе EXCEL.
//      КолвоСтрокEXCEL - Количество строк на листе "ИмяЛиста" EXCEL. Возвращается в вызываемую процедуру.
//
// Возвращаемые значения:
//      ТаблицаРезультат - Результат считывания с листа "ИмяЛиста" EXCEL.
//
&НаСервере
Функция ЗагрузитьМетодом_MSEXCEL(Знач ФайлEXCEL, Знач ИмяНомерЛиста, Знач СтрокаЗаголовка = 1, НачСтрока = 2, КонСтрока = 0, КолвоСтрокEXCEL)
    Перем ИмяФайлаEXCEL, ИмяЛиста, НомерЛиста;
    Перем EXCELApplication, Book, Sheet;
    Перем ВсегоЛистов, НачальнаяКолонка, НачальнаяСтрока, КонечнаяКолонка, КонечнаяСтрока;
    Перем ДиапазонДанных, СтрокДиапазона, ДиапазонЗаголовка, МассивЗаголовка, МассивЗначений;
    Перем ТекИмя, ПозДоллар, Версия;
    Перем ТаблицаРезультат, МассивИменКолонок, ИмяКолонки, Колонка, Заголовок, НоваяСтрока, нСтроки;

    ИмяФайлаEXCEL = ПолучитьИмяФайлаБезРасширения(ФайлEXCEL);

    // Нумерация MS EXCEL начинается с 1.
    ИмяЛиста    = ИмяНомерЛиста.ИмяЛиста;
    НомерЛиста  = ИмяНомерЛиста.НомерЛиста;

    Попытка
        // Инициализация основного объекта EXCEL.Application: Открытие соединения.
        EXCELApplication = Новый COMОбъект("EXCEL.Application");
        EXCELApplication.Visible       = Ложь;
        EXCELApplication.DisplayAlerts = Ложь;
    Исключение
        Попытка
            EXCELApplication.Application.Quit();
        Исключение
        КонецПопытки;
        EXCELApplication = Неопределено;
        Сообщить(НСтр("ru = '"+ОписаниеОшибки()+"'"), СтатусСообщения.Внимание);
        Возврат Новый ТаблицаЗначений;  // В случае ошибки возвращаем пустую таблицу значений.
    КонецПопытки;

    // Определение версии EXCEL.
    Версия = Лев(EXCELApplication.Version,Найти(EXCELApplication.Version,".")-1);

    // Инициализация дочернего объекта типа Книга EXCEL.
    Book = EXCELApplication.WorkBooks.Open(ФайлEXCEL);
    ВсегоЛистов = Book.Sheets.Count;

    // Инициализация дочернего объекта Книги типа Лист EXCEL.
    Если Лев(ИмяЛиста, 1) = "'" И Прав(ИмяЛиста, 1) = "'" Тогда
        ИмяЛиста = УдалитьКавычки(ИмяЛиста, "'");
    КонецЕсли;
    Если Прав(ИмяЛиста, 1) = "$" Тогда
        УдалитьПоследнийСимволВСтроке(ИмяЛиста, 1);
    КонецЕсли;
    Sheet = Book.WorkSheets(ИмяЛиста);

    // Определение диапазона данных таблицы EXCEL.
    НачальнаяКолонка    = 1;
    НачальнаяСтрока     = 1;
    Если Версия = "8" Тогда
        КонечнаяКолонка = Sheet.Cells.CurrentRegion.Columns.Count;
        КонечнаяСтрока  = Sheet.Cells.CurrentRegion.Rows.Count;
    Иначе
        КонечнаяКолонка = Sheet.Cells.SpecialCells(11).Column;
        КонечнаяСтрока  = Sheet.Cells.SpecialCells(11).Row;
    Конецесли;

    // Параметр возвращаемый в вызывающую процедуру.
    КолвоСтрокEXCEL     = КонечнаяСтрока;

    // Проверка заполненности листа.
    Если КолвоСтрокEXCEL <= 1 И КонечнаяКолонка <= 1 Тогда
        КолвоСтрокEXCEL = 0;
        Сообщить(НСтр("ru = '" + ИмяЛиста + ": Лист, содержащий 1 строку считаем пустым.'"), СтатусСообщения.Внимание);

        // Завершение работы.
        // Закрытие Объектов.
        Попытка
            Book.Close();
        Исключение
        КонецПопытки;
        Попытка
            EXCELApplication.Application.Quit();
        Исключение
        КонецПопытки;
        EXCELApplication = Неопределено;

        Возврат Новый ТаблицаЗначений;  // В случае ошибки возвращаем пустую таблицу значений.
    КонецЕсли;

    НачальнаяСтрока     = ?(НачСтрока = 0   , НачальнаяСтрока   , НачСтрока);
    КонечнаяСтрока      = ?(КонСтрока = 0   , КонечнаяСтрока    , КонСтрока);

    КонечнаяСтрока      = ?(КонечнаяСтрока > КолвоСтрокEXCEL, КолвоСтрокEXCEL, КонечнаяСтрока);
    НачальнаяСтрока     = ?(НачальнаяСтрока > КолвоСтрокEXCEL, КолвоСтрокEXCEL, НачальнаяСтрока);

    // Диапазон: Считываемые данные.
    ДиапазонДанных = Sheet.Range(Sheet.Cells(НачальнаяСтрока, НачальнаяКолонка), Sheet.Cells(КонечнаяСтрока, КонечнаяКолонка));
    СтрокДиапазона = ДиапазонДанных.Rows.Count;

    // Создание результирующей таблицы, в которую будут записываться считанные из EXCEL данные.
    ТаблицаРезультат = Новый ТаблицаЗначений;

    // Формирование колонок результирующей таблицы.

    // "НомерСтроки" - для наглядности и удобства.
    // В зависимости от разрабатываемой обработки.
    // "Сопоставлено" - может быть другим.
    // Здесь же могут быть добавлены другие колонки, не формируемые из содержимого файла EXCEL.
    ТаблицаРезультат.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число"), "№", 4);
    ТаблицаРезультат.Колонки.Добавить("Сопоставлено", Новый ОписаниеТипов("Булево"), "Сопоставлено", 1);

    МассивИменКолонок = Новый Массив;
    Для ит = 1 ПО КонечнаяКолонка Цикл

        ТекИмя = Строка(ит);
        МассивИменКолонок.Добавить(ТекИмя);

        Если ДиапазонДанных.Columns(ит).Hidden Тогда    // Скрытые колонки EXCEL пропустить.
            Продолжить;
        КонецЕсли;

        ИмяКолонки = "N" + ТекИмя;
        ТаблицаРезультат.Колонки.Добавить(ИмяКолонки);

    КонецЦикла;

    // ТаблицаРезультат: 1-я Строка-Заголовок.
    // Если в Вашей обработке в результирующей таблице в качестве 1-ой строки не нужна Строка-Заголовок, то
    // следует закомментировать следующий цикл:
    ДиапазонЗаголовка = Sheet.Range(Sheet.Cells(1, НачальнаяКолонка), Sheet.Cells(1, КонечнаяКолонка));
    МассивЗаголовка = ДиапазонЗаголовка.Value.Выгрузить();

    НоваяСтрока = ТаблицаРезультат.Добавить();
    НоваяСтрока.НомерСтроки = 1;

    ит = -1;
    Для Каждого МассивЗначений ИЗ МассивЗаголовка Цикл

        Для Каждого ЭлементМассива ИЗ МассивЗначений Цикл
            ит = ит + 1;

            ИмяКолонки = "N" + МассивИменКолонок[ит];
            Колонка = ТаблицаРезультат.Колонки.Найти(ИмяКолонки);
            Если Колонка = Неопределено Тогда   // Имена скрытых колонок отсутствуют в массиве.
                Продолжить;
            КонецЕсли;

            НоваяСтрока[ИмяКолонки] = СокрЛП(ЭлементМассива);
        КонецЦикла;

    КонецЦикла;

    // ТаблицаРезультат: формирование строк по указанному диапазону: НачСтрока - КонСтрока.

    ДиапазонДанных = ДиапазонДанных.Value;

    нСтроки = НачальнаяСтрока-1;
    Для НомерСтроки = 1 ПО СтрокДиапазона Цикл

        нСтроки = нСтроки + 1;
        НоваяСтрока = ТаблицаРезультат.Добавить();
        НоваяСтрока.НомерСтроки = нСтроки;

        Для НомерКолонки = 1 ПО КонечнаяКолонка Цикл

            ИмяКолонки = "N" + МассивИменКолонок[НомерКолонки-1];
            Колонка = ТаблицаРезультат.Колонки.Найти(ИмяКолонки);
            Если Колонка = Неопределено Тогда   // Имена скрытых колонок отсутствуют в массиве.
                Продолжить;
            КонецЕсли;

            ЗначениеЯчейки = ДиапазонДанных.GetValue(НомерКолонки, НомерСтроки);            // Считывание данных в соответствии с их типом.

            Если ЗначениеЯчейки = Неопределено Тогда
                ЗначениеЯчейки = ПрочитатьКартинку_MSEXCEL(EXCELApplication, Sheet, НомерКолонки, нСтроки, ИмяФайлаEXCEL, НомерЛиста, "УИД");
            КонецЕсли;

            Если ЗначениеЗаполнено(ЗначениеЯчейки) Тогда

                // Ширина колонки используется при формировании таблицы на форме обработки.
                ШиринаКолонки = ТаблицаРезультат.Колонки[ИмяКолонки].Ширина;
                ДлинаСтроки = СтрДлина(СокрЛП(ЗначениеЯчейки));
                ТаблицаРезультат.Колонки[ИмяКолонки].Ширина = ?(ШиринаКолонки < ДлинаСтроки, ДлинаСтроки, ШиринаКолонки);

                НоваяСтрока[ИмяКолонки] = ЗначениеЯчейки;

            КонецЕсли;

        КонецЦикла;

    КонецЦикла;

    УдалитьКолонкиСНулевойШириной(ТаблицаРезультат);

    // Завершение работы.
    // Закрытие Объектов.
    Попытка
        Book.Close();
    Исключение
    КонецПопытки;
    Попытка
        EXCELApplication.Application.Quit();
    Исключение
    КонецПопытки;
    EXCELApplication = Неопределено;

    Возврат ТаблицаРезультат;

КонецФункции

// Функция осуществляет экспорт изображения во внешний графический файл.
//
// Параметры:
//      EXCELApplication - Объект типа "EXCEL.Application".
//      Sheet - Обект типа "Лист книги EXCEL".
//      НомерКолонки - Номер колонки листа.
//      НомерСтроки - Номер строки листа.
//      ИмяФайлаEXCEL - Короткое имя файла без расширения, из которого производится импорт.
//      НомерЛиста - Номер листа книги EXCEL.
//      ПравилоИмяФайлаКартинки - правило формирования имени выходного графического файла.
//      - "УИД" (по умолчанию).
//      - Иначе на основании имени исходного файла EXCEL, Номера листа, Номера строки, Номера колонки.
//
// Возвращаемые значения:
//      ПолноеИмяФК - Полное имя графического файла.
//
&НаСервере
Функция ПрочитатьКартинку_MSEXCEL(Знач EXCELApplication, Знач Sheet, Знач НомерКолонки, Знач НомерСтроки, Знач ИмяФайлаEXCEL, Знач НомерЛиста, Знач ПравилоИмяФайлаКартинки = "УИД")
    Перем GraphicObject, Chart;
    Перем ПолноеИмяФК, ФайлКартинки;

    Если Sheet.Shapes.Count() = 0 Тогда
        Возврат Неопределено;
    КонецЕсли;

    Для Каждого GraphicObject ИЗ Sheet.Shapes Цикл
        Если GraphicObject.Type = 13 И GraphicObject.TopLeftCell.Column = НомерКолонки И GraphicObject.TopLeftCell.Row = НомерСтроки Тогда

            // GraphicObject.Name.
            Если ПравилоИмяФайлаКартинки = "УИД" Тогда
                ПолноеИмяФК = КаталогВременныхФайлов() + Новый УникальныйИдентификатор() + ".jpg";
            Иначе
                ПолноеИмяФК = КаталогВременныхФайлов() + ИмяФайлаEXCEL + "Л" + НомерЛиста + "С" + НомерСтроки + "К" + НомерКолонки + ".jpg";
            КонецЕсли;

            Попытка
                GraphicObject.ScaleHeight(1,1);     // Истинный размер по высоте.
                GraphicObject.ScaleWidth(1,1);      // Истинный размер по ширине.
                GraphicObject.Copy();

                Chart = EXCELApplication.ActiveSheet.ChartObjects().Add(0, 0, GraphicObject.Width, GraphicObject.Height).Chart();
                Chart.Paste();
                Chart.Export(ПолноеИмяФК);

                Chart = Неопределено;

                ФайлКартинки = Новый Файл(ПолноеИмяФК);
                Если ФайлКартинки.Существует() Тогда
                    Возврат ПолноеИмяФК;
                Иначе
                    Сообщить("Не удалось экспортировать картинку из строки " + НомерСтроки + " колонки " + НомерКолонки + " в " + ПолноеИмяФК);
                    Возврат Неопределено;
                КонецЕсли;
            Исключение
                Сообщить(ОписаниеОшибки());
                Сообщить("Не удалось экспортировать картинку из строки " + НомерСтроки + " колонки " + НомерКолонки + " в " + ПолноеИмяФК);
                Возврат Неопределено;
            КонецПопытки;

        КонецЕсли;
    КонецЦикла;

    Возврат Неопределено;

КонецФункции

&НаСервере
Процедура УдалитьКолонкиСНулевойШириной(ТаблицаРезультат)
    Перем МассивПустыхКолонок;

    // Найдем пустые колонки.
    МассивПустыхКолонок = Новый Массив;
    Для Каждого Колонка ИЗ ТаблицаРезультат.Колонки Цикл
        Если Колонка.Ширина = 0 Тогда
            МассивПустыхКолонок.Добавить(Колонка.Имя);
        КонецЕсли;
    КонецЦикла;

    // Удалим пустые колонки.
    Для Каждого ПустаяКолонка ИЗ МассивПустыхКолонок Цикл
        ТаблицаРезультат.Колонки.Удалить(ПустаяКолонка);
    КонецЦикла;

КонецПроцедуры

// Выделяет из полного имени файла имя файла без расширения.
//
// Параметры
//  ПолноеИмяФайла     – Строка, содержащая имя файла, неважно с именем каталога или без.
//
// Возвращаемое значение:
//   ИмяФайлаБезРасширения – короткое имя файла.
//
&НаСервере
Функция ПолучитьИмяФайлаБезРасширения(ПолноеИмяФайла)
    Перем ФайлТМП, РасширениеФайла, ИмяФайлаБезРасширения;

    ФайлТМП = РазложитьСтрокуВМассивПодстрок(ПолноеИмяФайла, "\");
    ФайлТМП = ФайлТМП[ФайлТМП.Количество()-1];
    РасширениеФайла  = "." + ПолучитьРасширениеИмениФайла(ФайлТМП);
    ИмяФайлаБезРасширения = СтрЗаменить(ФайлТМП, РасширениеФайла, "");

    Возврат ИмяФайлаБезРасширения;

КонецФункции

// Выделяет из имени файла его расширение (набор символов после последней точки).
//
// Параметры
//  ИмяФайла     – Строка, содержащая имя файла, неважно с именем каталога или без.
//
// Возвращаемое значение:
//   Строка – расширение файла.
//
&НаСервере
Функция ПолучитьРасширениеИмениФайла(Знач ИмяФайла)
    Перем Расширение;

    Расширение = ПолучитьСтрокуОтделеннойСимволом(ИмяФайла, ".");
    Возврат Расширение;

КонецФункции

// Удаляет кавычки с начала и конца строки, если они есть.
//
// Параметры:
//  Строка - входная строка;
//
// Возвращаемое значение:
//  Строка - строка без двойных кавычек.
//
&НаСервере
Функция УдалитьКавычки(Знач Строка, Кавычка = """")

    Пока Лев(Строка, 1) = Кавычка Цикл
        Строка = Сред(Строка, 2);
    КонецЦикла;

    Пока Прав(Строка, 1) = Кавычка Цикл
        Строка = Лев(Строка, СтрДлина(Строка) - 1);
    КонецЦикла;

    Возврат Строка;

КонецФункции

// Удаляет из строки указанное количество символов справа.
//
// Параметры:
//  Текст         - Строка - строка, в которой необходимо удалить последние символы;
//  ЧислоСимволов - Число  - количество удаляемых символов.
//
&НаСервере
Процедура УдалитьПоследнийСимволВСтроке(Текст, ЧислоСимволов)

    Текст = Лев(Текст, СтрДлина(Текст) - ЧислоСимволов);

КонецПроцедуры

// Функция "расщепляет" строку на подстроки, используя заданный
//      разделитель. Разделитель может иметь любую длину.
//      Если в качестве разделителя задан пробел, рядом стоящие пробелы
//      считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр
//      игнорируются.
//      Например,
//      РазложитьСтрокуВМассивПодстрок(",один,,,два", ",") возвратит массив значений из пяти элементов,
//      три из которых - пустые строки, а
//      РазложитьСтрокуВМассивПодстрок(" один   два", " ") возвратит массив значений из двух элементов
//
//  Параметры:
//      Стр -           строка, которую необходимо разложить на подстроки.
//                      Параметр передается по значению.
//      Разделитель -   строка-разделитель, по умолчанию - запятая.
//
//  Возвращаемое значение:
//      массив значений, элементы которого - подстроки
//
&НаСервере
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",")

    МассивСтрок = Новый Массив();
    Если Разделитель = " " Тогда
        Стр = СокрЛП(Стр);
        Пока 1 = 1 Цикл
            Поз = Найти(Стр, Разделитель);
            Если Поз = 0 Тогда
                МассивСтрок.Добавить(СокрЛП(Стр));
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(СокрЛП(Лев(Стр, Поз - 1)));
            Стр = СокрЛ(Сред(Стр, Поз));
        КонецЦикла;
    Иначе
        ДлинаРазделителя = СтрДлина(Разделитель);
        Пока 1 = 1 Цикл
            Поз = Найти(Стр, Разделитель);
            Если Поз = 0 Тогда
                Если (СокрЛП(Стр) <> "") Тогда
                    МассивСтрок.Добавить(СокрЛП(Стр));
                КонецЕсли;
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(СокрЛП(Лев(Стр,Поз - 1)));
            Стр = Сред(Стр, Поз + ДлинаРазделителя);
        КонецЦикла;
    КонецЕсли;

КонецФункции

// Функция возвращает часть строки после последнего встреченного символа в строке
&НаСервере
Функция ПолучитьСтрокуОтделеннойСимволом(Знач ИсходнаяСтрока, Знач СимволПоиска)

    ПозицияСимвола = СтрДлина(ИсходнаяСтрока);
    Пока ПозицияСимвола >= 1 Цикл
        Если Сред(ИсходнаяСтрока, ПозицияСимвола, 1) = СимволПоиска Тогда
            Возврат Сред(ИсходнаяСтрока, ПозицияСимвола + 1);
        КонецЕсли;
        ПозицияСимвола = ПозицияСимвола - 1;
    КонецЦикла;

    Возврат "";

КонецФункции


Преимущества:

1.Метод "Microsoft EXCEL" наиболее прост в применении (кодировании).
2. По скорости считывания находится на 2-ом месте после "Microsoft ADODB".

Особенности и Ограничения:

1. Для функционирования метода "Microsoft EXCEL" необходим установленный Microsoft Office. Коммерческий продукт.
2. Метод может не работать в клиент-серверном варианте, если у SQL-пользователя недостаточно прав в Windows.
3. 1-я строка файла EXCEL - строка, содержащая заголовки колонок.

 

МА! С уважением к сообществу МА!

1C Предприятие Импорт Загрузка Чтение Microsoft MS Excel LibreOffice OpenOffice dbf dBase xml mxl ActiveX ADO ADODB Windows

См. также

SALE! 20%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С одним нажатием. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

6000 5100 руб.

09.11.2016    231553    1049    896    

992

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка номенклатуры из файлов Excel (xls, xlsx, ods, csv, mxl) в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

11100 руб.

29.10.2014    216049    651    526    

456

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы сделаете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, "Детский мир", МагнитЭкспресс (быв.Казань-Экспресс), "Леруа Мерлен", ЭНФАНТА (Акушерство), ЛаМода, Летуаль, "Твой дом", "Золотое Яблоко" в документы "Отчет комиссионера (агента) о продажах" и другие, работает в "Бухгалтерия 3", "Бухгалтерия 3 КОРП", УТ 11, УНФ, КА 2, ERP. Возможность подключить любые маркетплейсы. Анализ продаж ОЗОН. 30 дней БЕСПЛАТНОГО пользования!

2400 руб.

12.08.2021    34976    329    66    

150

Маркетплейсы Загрузка и выгрузка в Excel Программист Пользователь Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Загрузка данных отчета о реализации и продаже товаров из сервиса Яндекс.Маркета «Беру» в 1С из Отчетов Excel для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11; Управление торговлей, редакция 10.3; Управление нашей фирмой, редакция 3.0 и Розница, редакция 3.0 в документ «Отчет комиссионера о продажах».

4800 руб.

09.12.2020    24850    245    1    

106

SALE! 30%

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Бухгалтер Пользователь Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания сканов или фото товарных документов в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

8400 5880 руб.

04.06.2019    105959    307    173    

322

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 19.09.2024, версия 9.9 - 9.12)

15600 руб.

20.11.2015    154805    376    377    

510
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. StepByStep 3685 20.08.14 15:50 Сейчас в теме
20.08.2014. Новая редакция с возможностью загрузки изображений из файла.
3. kiv1c 818 02.09.15 17:41 Сейчас в теме
(1) а вот тут http://infostart.ru/public/341855/ в комментариях писали что:
при использовании директивы"&НаСервере" в клиент-серверном варианте файл должен располагаться либо по сетевому пути, либо на сервере, где установлен "Агент сервера 1С:Предприятия 8.3 (x86-64)"
то есть, при клиент-серверной работе, нет возможности открыть файл с локального компьютера пользователя?
4. kiv1c 818 09.09.15 10:02 Сейчас в теме
(1) да, я разобрался, с клиента на сервер можно передать прочитанные из файла двоичные данные, потом на сервере их записать во временный эксель-файл и читать табличным документом из него.
2. KliMich 10.11.14 11:08 Сейчас в теме
Спасибо!
Надо попробовать
5. fieryfist 15 16.09.15 16:32 Сейчас в теме
Странно, Версия определяется 14, но количество строк показывает не верно.
Если считать по версии 8 (в условии), то количество строк верное.
6. bdsmka 15.12.15 14:48 Сейчас в теме
Подскажите пжст в чем может быть проблема:
Использовал эту статью для написания обработки загрузки платежей в БП3
все отлично работало примерно 2 месяца.
После стал долго задумываться и вываливать пустую таблицу значений
----
        КонецПопытки;
        EXCELApplication = Неопределено;
        Сообщить(НСтр("ru = '"+ОписаниеОшибки()+"'"), СтатусСообщения.Внимание);
        Возврат Новый ТаблицаЗначений;  // В случае ошибки возвращаем пустую таблицу значений.
    КонецПопытки;
----

Вначале помогал перезапуск сервера 1с 8.3
А теперь и это перестало помогать.
Что может быть? Ошибки ни какой не выдает, через отладчик тоже ничего....
7. StepByStep 3685 24.12.15 17:28 Сейчас в теме
(6) bdsmka,
Для начала попробуйте попробуйте закомментировать Попытка/Исключение/КонецПопытки, чтобы увидеть ошибку.
8. Lapitskiy 1061 25.05.16 06:10 Сейчас в теме
Вот такая ошибка иногда на некоторых компах выскакивает: Ошибка при вызове конструктура (COMОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса
Это при чтении методом Экселя.
9. StepByStep 3685 07.06.16 11:55 Сейчас в теме
(8) Lapitskiy,
Офис не пробовали переустанавливать ?
10. sokir 2 15.02.17 21:50 Сейчас в теме
Работает однако.
Только
Попытка
            EXCELApplication.Application.Quit();
        Исключение
        КонецПопытки;
        EXCELApplication = Неопределено;
        Сообщить(НСтр("ru = '"+ОписаниеОшибки()+"'"), СтатусСообщения.Внимание);


НЕ верно - Надо Сообщить выше попытки, чтобы она возвращала ошибку открытия, а не закрытия.
11. bpc222 2064 06.06.17 13:38 Сейчас в теме
про извлечение картинок...

дареному коню, конечно, в зубы не смотрят, но...

вы про кэширование не думали? зачем перебирать все изображения всякий раз, когда нужно экспортировать очередное изображение?
12. KAV2 156 25.04.18 11:46 Сейчас в теме
13. Alex10166 33 24.05.19 11:29 Сейчас в теме
Всех приветствую!
Подскажите, пожалуйста, откуда можно брать инфу по методам и свойствам КОМ-объекта windows!

Например вот такое выражение:
EXCELApplication = Новый COMОбъект("EXCEL.Application");
EXCELApplication.Visible       = Ложь;
EXCELApplication.DisplayAlerts = Ложь;


В синтаксис-помощнике это нет, разумеется.
Где описаны методы и свойства самих Ком-Объектов? .Visible , .DisplayAlerts и т.д.
14. pentanom 25 24.05.19 12:08 Сейчас в теме
15. Alex10166 33 24.05.19 12:26 Сейчас в теме
(14) в данном случае - да. но это не суть принципиально, я просто пример привел. через Ком-объект можно разные приложения использовать. Вопрос только в том, где искать инфу - у Майкрософт или 1С.
16. pentanom 25 24.05.19 14:41 Сейчас в теме
(15)Для EXCEL в Майкрософт.
В общем случае - у разработчика приложения.
Оставьте свое сообщение