Имя: Пароль:
1C
1С v8
Нужен ли Excel на сервере где лежит база (база серверная)
0 moonq4
 
01.10.15
16:00
Такая ситуация:
Имеется серверная база, написал для нее обработку по загрузке номенклатуры из эекселя (упр. прил.). У меня на локальной работает, на серверной (рабочей) нет.
Я грешу на то, что самого экселя нету на сервере и поэтому проблемы с  "Новый COMОбъект("Excel.Application")", в чем может быть проблема?
1 Попытка1С
 
01.10.15
16:00
В этом и есть проблема, что нет кома объекта екселя.
2 ДенисЧ
 
01.10.15
16:01
Грузить из xls можно и без екселя
3 Попытка1С
 
01.10.15
16:03
4 moonq4
 
01.10.15
16:07
(2) А xlsx?
5 Fragster
 
гуру
01.10.15
16:08
(4) тоже можно
6 Fragster
 
гуру
01.10.15
16:09
а загрузка должна быть неинтерактивной? или форма все-такие есть, и в ней работает пользователь?
7 moonq4
 
01.10.15
16:12
(6) Мне вообще для одно разовой загрузки, просто есть внешняя обработка с одной кнопкой и полем для файла, код такой:
&НаСервере
Функция ЗагрузкаИзExel_В_ТЧ()
    
    //Открываем файл Excel..
    Попытка
        
        Excel    = Новый COMОбъект("Excel.Application");
        WB        = Excel.Workbooks.Open(ИмяФайла);
        WS        = WB.ActiveSheet;
        arr        = WS.UsedRange.Value;
        WB.Close(0);
        
    Исключение
        
        Сообщить("Внимание! Файл не открыт." + Символы.ПС + "Попробуйте открыть и пересохранить данный файл программой MS Excel.");
        Возврат Неопределено;
        
    КонецПопытки;
    
    МассивКолонок        = arr.Выгрузить();
    КоличествоКолонок    = МассивКолонок.ВГраница();
    КоличествоСтрок        = МассивКолонок.Получить(0).Количество();
    
    ТаблицаЗначений = Новый ТаблицаЗначений;
    
    Для Колонка = 0 По КоличествоКолонок Цикл
        
        ИмяКолонки = "Колонка" + (Колонка + 1);
        ТаблицаЗначений.Колонки.Добавить(ИмяКолонки);
        
    КонецЦикла;
    
    Для Строка = 1 По КоличествоСтрок Цикл
        
        ТаблицаЗначений.Добавить();
        
    КонецЦикла;
    
    Сч = 0;
    Для каждого Колонка Из МассивКолонок Цикл
        
        ИмяКолонки = ТаблицаЗначений.Колонки.Получить(Сч).Имя;
        ТаблицаЗначений.ЗагрузитьКолонку(Колонка, ИмяКолонки);
        Сч = Сч + 1;            
    КонецЦикла;      
    
    Возврат ТаблицаЗначений;
    
КонецФункции

Может просто закинуть комобъект на клиент и все?
8 Fragster
 
гуру
01.10.15
16:13
(7) норм вариант
9 Fish
 
01.10.15
16:13
(7) Делай на клиенте, раз одноразовая.
10 moonq4
 
01.10.15
16:15
Спасибо за ответы
11 Живой Ископаемый
 
01.10.15
16:17
Грузить нужно через АДО будет и быстрее и екселя не нужно. Вот если бы ты записывал, да еще и с формулами, вот тогда бы нужен был Ком екселя на сервере
12 Fragster
 
гуру
01.10.15
16:18
(11) воообще через ADO можно и писать в эксель. ну и да - сильно быстрее чем через comsafearray не будет. по крайней мере основнаячасть времени в любом случае будет не на вытягивании данных из экселя.
13 mehfk
 
01.10.15
16:26
(0) В 8.3.6 объект ТабличныйДокумент умеет загружать XLS
14 Timon1405
 
01.10.15
16:28
(13) киньте ссылкой подробнее
15 mehfk
 
01.10.15
16:45
ТабличныйДокумент.Прочитать (SpreadsheetDocument.Read)
ТабличныйДокумент (SpreadsheetDocument)
Прочитать (Read)
Синтаксис:

Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>)
Параметры:

<ИмяФайла> (обязательный)

Тип: Строка.
Имя файла табличного документа.
<СпособЧтенияЗначений> (необязательный)

Тип: СпособЧтенияЗначенийТабличногоДокумента.
Определяет, каким образом нужно интерпретировать значения, считываемые из исходного документа XLS, XLSX или ODS.
При загрузке табличного документа из формата Excel 97 - 2010 и OpenOffice Calc, в случае если в ячейке исходного документа содержалось значение типа Дата или Число, то в ячейку результирующего табличного документа это значение попадает в зависимости от значения этого параметра.
Значение по умолчанию: Текст.
Описание:

Считывает табличный документ из файла.
Позволяет считывать табличный документ из файла табличного документа Microsoft Excel 97 - 2010 ( *.xls и *.xlsx) или электронной таблицы OpenOffice Calc ( *.ods).

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Пример:

ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("C:\My Documents\Таблица1.mxl");


--------------------------------------------------------------------------------

     Методическая информация
16 UFO
 
01.10.15
16:55
xlsx формат это один из клонов xml
17 UFO
 
01.10.15
16:56
Его можно открывать xml viewer который в фаре есть
18 Живой Ископаемый
 
01.10.15
16:58
2(12) Формулы к сожалению в ячейки через АДО не запишешь...
Ну или я был бы здорово рад ошибиться.
19 organizm
 
01.10.15
17:00
Использовать ADO на сервере то же никак.
Вариант 1) Microsoft Data Access Components (MDAC) 2.8 SP1 http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=5793 на 64х сервере не ставится
2) Microsoft Access Database Engine 2010 http://www.microsoft.com/en-us/download/details.aspx?id=13255
требует аксесса...

Грузите на  клиенте...
20 stix2010
 
01.10.15
17:00
Для чтения:
8.3.6  - табличный документ читает этот ваш xls,
остальное yoksel в пакете может сохранить xls в mxl.
все остальное неправославно
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn