Имя: Пароль:
1C
1С v8
Создание excel файла со вкладками в 1С на линуксе
0 Double_Medved
 
27.08.18
11:00
Добрый день!

Ковырял гугл, яндекс, и все что ковыряется, не выходит каменный цветок, прошу помощи.

Есть обработка, которая формирует файл xlsx, а в нем ВКЛАДОЧКИ, листы, каждый со своими данными. Винда, COM-объект, WorkBooks, копирование листов. В винде вообщем все работает.

Подскажите пожалуйста, как это можно сделать в линуксе? COM-объектов там нет, екселя нет. Как сохранить просто отчет в xls-понятно. А как в файлике добавить вкладочки-листы?
1 Dmitry1c
 
27.08.18
11:04
секс :)
2 Double_Medved
 
27.08.18
11:04
(1)С чем?
3 Timon1405
 
27.08.18
11:15
(0) переходите на 8.3.12 там есть
ПакетОтображаемыхДокументов
4 Cyberhawk
 
27.08.18
11:17
Делай xlsx-файл как xml-файл в zip-архиве и получишь полный контроль
5 Вафель
 
27.08.18
11:17
вроде 1с сама сейчас умеет так
6 Double_Medved
 
27.08.18
11:20
(4)Можно поподробнее? Там же ячейки, цвета, шрифты, закрепляемые области. Как это все запихать в xml?
7 Garikk
 
27.08.18
11:20
(6) есть описание формата от майкрософт на 100500 страницах
8 Cyberhawk
 
27.08.18
11:21
Открываешь xlsx-файл как zip-архив и смотришь. Либо читаешь на MSDN описание этого формата.
9 Вафель
 
27.08.18
11:23
может проще через вайн?
10 Флориан
 
27.08.18
11:23
(0) Автору рекомендовал бы смотреть в сторону OpenOffice
11 Garikk
 
27.08.18
11:24
(10) а как к нему коннектится, куда автору смотреть?
12 Кирпич
 
27.08.18
11:26
(0) Написать внешнюю прогу на языке, где есть поддержка Excel. Python, Ruby, FreePascal.
13 yzimin
 
27.08.18
11:27
а чем всех советующих решение из (3) не устроило?
14 Флориан
 
27.08.18
11:29
15 Garikk
 
27.08.18
11:32
(14) вас не смущает что разговор о линуксе, а в скрипте
    ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
    ScrptCtrl.Language="vbscript";

?
16 Флориан
 
27.08.18
11:41
17 Double_Medved
 
27.08.18
11:47
(3)ПакетОтображаемыхДокументов (RepresentableDocumentBatch)
ЗаписатьФайлДляПечати (WriteFileForPrinting)
Синтаксис:

ЗаписатьФайлДляПечати(<ИмяФайла>)
Параметры:

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

Тип: Строка.
Содержит полное имя файла, в который нужно записать документы.
Описание:

Записывает файл, который в дальнейшем можно использовать для печати пакета.

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

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

Я так понял на сервере не смогу это сделать?

Сервер на линуксе, смысл в том чтобы сделать регламентное задание короче, то есть нужно сохранять файл на сервере
18 Garikk
 
27.08.18
11:53
(16) ну там нет однозначного решения. это полюбому костылестроение
19 Флориан
 
27.08.18
11:53
20 spiller26
 
27.08.18
12:00
Может поможет тебе http://v8.1c.ru/overview/release_8_3_12/
21 Timon1405
 
27.08.18
12:02
(17) там же есть
Пакет.Записать("\\Путь\1.xls", ТипФайлаПакетаОтображаемыхДокументов.XLS);
честно говоря в чем отличие Записать от ЗаписатьФайлДляПечати я не понял.
22 Флориан
 
27.08.18
12:06
к (19) это "Чтение/Запись документа Excel 2007 без офиса, без внешних компонент. (с примером для 7.7, 8.1 и 8.2 на управляемых формах)" как писали в (4)
23 arsik
 
гуру
27.08.18
12:26
Может развернуть вебсервис на виндовом 1С. Туда несколько mxl, обратно xls.
24 Кирпич
 
27.08.18
12:54
(23) я бы не стал городить. накарябал скрипт на питоне и все дела.
https://habr.com/post/232291/#lib
25 Double_Medved
 
27.08.18
14:32
Сделал через ПакетОтображаемыхДокументов, теперь вопрос - как можно переименовывать вкладочки? Чтоб был не "Лист" и "Лист2", а типа "Закупки","Продажи", и т.д.?

Пакет = Новый ПакетОтображаемыхДокументов;

УИД = Новый УникальныйИдентификатор;
ЭлементПакета1 = Пакет.Состав.Добавить();
ЭлементПакета1.Данные = ПоместитьВоВременноеХранилище(ТабДокЗакупки ,УИД);
ЭлементПакета2 = Пакет.Состав.Добавить();
ЭлементПакета2.Данные = ПоместитьВоВременноеХранилище(ТабДокПродажи ,УИД);
Пакет.Записать(ПутьКФайлам+"\"+ИмяФайла,ТипФайлаПакетаОтображаемыхДокументов.XLS);
26 Timon1405
 
27.08.18
14:47
ЭлементПакета1.Наименование = "Закупки"; //подойдет?
27 Флориан
 
27.08.18
14:54
При этом реализована возможность сохранения каждого табличного документа пакета на отдельном листе результирующего документа.
Реализовано свойство ЭлементПакетаОтображаемыхДокументов.Наименование, которое используется для указания имени листа.


Источник: http://downloads.v8.1c.ru/content//Platform/8_3_12_1595/1cv8upd_8_3_12_1595.htm#8eb981c1-9877-11e7-a3f7-0050569f678a
28 Double_Medved
 
27.08.18
14:55
(26) Ого, получилось! Че-то в описании не увидел что есть свойство Наименование. Спасибо
29 Флориан
 
27.08.18
15:38
(6) а это автор уже реализовал? стандартное сохранение из 1с не всё форматирование поддерживает