Имя: Пароль:
1C
1С v8
Сохранить в формате XLS на сервере
0 ssserg
 
24.12.14
09:11
Добрый день.
Как известно в 8.1 нет возможности сохранить на сервере(вызов метода осуществляется через фоновое задание) табличный документ в формате XLS
Можно только в MXL или в TXT. А нужно сохранять в XLS

Кто то на форуме советовал запускать отдельный сеанс через COM-соединение, в котором и сохранять в XLS
Я так попробовал сделать, но, по какой то причине, табличный документ по-прежнему сохраняется в формате MXL.

Вызов COM-соединения на сервере производится так:
// формируем табличный документ
ДокументРезультат = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
// Путь к файлу    
ФайлВФорматеMXL = ПутьКПапкеОтчетов+ИмяОтчета;
ДокументРезультат.Вывод=ИспользованиеВывода.Разрешить;
СохранитьВXLS(ДокументРезультат,ФайлВФорматеMXL);


Процедура СохранитьВXLS(ДокументРезультат,ФайлВФорматеMXL)
V8 = Новый COMObject("V81.COMConnector");
СтрокаСоединенияИБ = "File=D:\dummy;";
Соединение = V8.Connect(СтрокаСоединенияИБ);
Обработка = Соединение.Обработки.MXL2XLS.Создать();
Обработка.СконвертироватьВXLS(ДокументРезультат, ФайлВФорматеMXL);
КонецПроцедуры

В базе, которая находится по пути D:\dummy; (тоже 8.1) есть одна обработка MXL2XLS с процедурой в модуле объекта СконвертироватьВXLS, код которой следующий:

Процедура СконвертироватьВXLS(ДокументРезультат, ФайлВФорматеMXL) Экспорт
ДокументРезультат.Записать(ФайлВФорматеMXL,ТипФайлаТабличногоДокумента.xls); // Рабочий вариант
КонецПроцедуры
1 Галахад
 
гуру
24.12.14
09:31
Наверное весь смысл делать через COM, что бы запустить на другой платформе.
Т.е.  D:\dummy; (должна быть  8.2 или 8.3)
2 b_ru
 
24.12.14
09:43
На сервере можно Ёксель установить? Если да, то
Yoksel.exe ТвойФайл.mxl --output_file ТвойФайл.xls --output_format xls --close
3 Biker
 
24.12.14
09:56
в последней бсп есть функция сохранения без использования кома,сохраняет в xlsx
4 ssserg
 
24.12.14
13:52
> Наверное весь смысл делать через COM, что бы запустить на другой платформе.

Нет, смысл в том, что выполнить процедуру сохранения На клиенте, а не на сервере т.к. на клиенте доступно сохранение в xls(проверял - работает,а перестает работать при использовании COM-соединения)

> Т.е.  D:\dummy; (должна быть  8.2 или 8.3)

Даже в таком случае не срабатывает правильно.
5 Jaap Vduul
 
24.12.14
13:57
Надо не COMConnector, а Application
6 ssserg
 
24.12.14
14:00
> На сервере можно Ёксель установить? Если да, то
Yoksel.exe ТвойФайл.mxl --output_file ТвойФайл.xls --output_format xls --close

Вариант standalone? Версия 1.1.02?
когда запускаю, то ругается на параметры: "ошибка при анализе командной строки: unknown option output_file".
Эта ошибка выходит даже при запуске yoksel из командной строки.
7 ssserg
 
24.12.14
14:07
> в последней бсп есть функция сохранения без использования кома,сохраняет в xlsx

гляну, но боюсь, что там какая нить фигня будет, которая поддерживается последними версиями платформы.
8 ssserg
 
24.12.14
14:22
(5)
> Надо не COMConnector, а Application

Выходит ошибка:

"Ошибка при вызове конструктора (COMObject): Интерфейс не поддерживается
    V8 = Новый COMObject("V81.Application");
по причине:
Интерфейс не поддерживается."
9 Jaap Vduul
 
24.12.14
14:26
(8)Прав не хватает.
10 ssserg
 
24.12.14
14:33
(9)
Добавил "Все" в список пользователей папки, где лежит база dummy. Не помогает.
11 Jaap Vduul
 
24.12.14
14:37
(10)Не файловые права, DCOM.

dcomcnfg.exe
12 ssserg
 
24.12.14
14:47
(11) нда уж, нашел dllку, но что то на добавлять пользователй я к ней не могу, хоть и под юзером с админскими правами.
13 ssserg
 
24.12.14
14:54
(7) (3)

сделал поиск xlsx по всей конфигурации БСП(версия 2.2.4.45) -  ничего подходящего не нашел. Есть только обработка ЗагрузкаДанныхИзФайла а про выгрузку или сохранение ни слова.
14 Jaap Vduul
 
24.12.14
14:58
(12)Попробуй запустить dcomcnfg.exe "именем администратора".
15 ssserg
 
24.12.14
15:29
Добавил все галочки для пользователя USR1CV81 но безрезультатно
https://dl.dropboxusercontent.com/u/15525241/DCOM.png
16 ssserg
 
24.12.14
15:34
(15) на всякий случай те же действия проделал и для пользователя ОС, из под которого запускаю 1C- эффекта нет. Хотя по идее этого делать не нужно.
17 Jaap Vduul
 
24.12.14
15:47
(15)
На картинке галочки добавлены для пользователя System
18 ssserg
 
24.12.14
16:06
(17) неправильный скриншот сделал, для USR1CV81 то же самое.
https://dl.dropboxusercontent.com/u/15525241/DCOM.png
19 ssserg
 
24.12.14
16:09
(2) (6) Похоже я просто какую то левую версию скачал(хотя качал с sourceforge последнюю)

Надо было качать с http://yoksel.net.ru/Hotfixes
файлик:
http://yoksel.net.ru/files/release/yoksel_stand_alone_hotfix_2012_04_20.rar

по крайней мере через командную строку он работает, сейчас попробую через 1С-ку
20 ssserg
 
25.12.14
09:06
Сделал через yoksel, который запускается через ком-объект "wScript.Shell", однако, там тоже не всё просто. Нужно запускать через cmd /C  а также внимательно проэкранировать все кавычки.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой