Имя: Пароль:
1C
1С v8
Чтение документов формата Doc (1c на linux)
0 spiller26
 
15.08.16
11:14
Кто нибудь пробовал чтение документов Doc в Linux?
1с полностью на linux машинах.
1 spiller26
 
15.08.16
11:15
подскажите компоненту, если есть такая в природе.
2 stix2010
 
15.08.16
11:20
libre office
3 spiller26
 
15.08.16
11:23
(2) ну стоит, а толку.
с 1с к нему достучишься. Тем более если база на сервере.
4 spiller26
 
15.08.16
11:25
По сути doc это запакованый zip архив.
Там файлы:
WordDocument - тут по ходу текст
1Table - тут таблица
5 Gary417
 
15.08.16
11:26
тот который zip Архив его платформа читать умеет
6 Gary417
 
15.08.16
11:26
docx уже давно помоему с 8.3.6..если даже не с 3.5 платформой поддерживается
7 stix2010
 
15.08.16
11:27
Вы бы сначала описали, что хотите.
8 spiller26
 
15.08.16
11:27
(5) Переименовываешь doc в zip. потом распаковываешь.
9 Gary417
 
15.08.16
11:27
(8) нет, я к этому (6)
10 spiller26
 
15.08.16
11:28
(6) с Docx проблем нет, там xml
11 Gary417
 
15.08.16
11:28
(9) zip архив это docx, а есть ещё просто doc (тот который Word 2003)
12 spiller26
 
15.08.16
11:28
(7) хочу выдернуть только текст.
13 spiller26
 
15.08.16
11:29
(11) и doc - тоже архив если что, попробуй.
14 stix2010
 
15.08.16
11:31
если чо, то libre office поддерживает конвертацию форматов из командной строки
15 stix2010
 
15.08.16
11:32
там хоть в txt, и потом чтение
16 spiller26
 
15.08.16
11:33
(7) Краткая история: В конфигурации "Документооборот" при внесения файлов в базу, автоматически происходит чтение файла (вытаскивание текста) для полнотекстового поиска.
Но...
они не стали заморачиваться и тупо поставили если платформа не Windows то "болты".
Пришлось своё дописывать для linux, остался формат *.doc.
17 spiller26
 
15.08.16
11:34
(14) Текст кода есть для такой реализации?
18 Gary417
 
15.08.16
11:39
(17) ну чё вы в самом деле

Реализована возможность импорта содержимого файлов в форматах XLS (Microsoft Excel 97), Microsoft Office OpenXML (Microsoft Excel 2007- 2010) и ODS (OpenDocument) в табличный документ. Данная возможность доступна как в интерактивном режиме, так и из встроенного языка.

Реализовано системное перечисление СпособЧтенияЗначенийТабличногоДокумента.

Для метода Прочитать() объекта ТабличныйДокумент реализован параметр СпособЧтенияЗначений.
19 stix2010
 
15.08.16
11:39
https://help.libreoffice.org/Common/Starting_the_Software_With_Parameters/ru

--convert-to output_file_extension[:output_filter_name] [--outdir output_dir] files


еще есть утилька  antiword  
$antiword   Договор.doc > Договор.txt
20 stix2010
 
15.08.16
11:40
(18) где тут про doc?
21 Gary417
 
15.08.16
11:40
(20) да действительно...(чешу в затылке)...хмм...
22 spiller26
 
15.08.16
11:43
(18) Вот с этим как раз проблем и нет
23 spiller26
 
15.08.16
11:47
(19) вот супер с antiword
только теперь научить 1с терминалу посылать команды
24 stix2010
 
15.08.16
11:52
Вот пример:
СтрокаПриложения=Символ(34)+ПутьЛибреОфис+Символ(34)+" --headless --convert-to txt --outdir "+ Символ(34)+КаталогКонвертации+Символ(34) + " "+Символ(34)+КонвертируемыйФайл+Символ(34);

ЗапуститьПриложение(СтрокаПриложения,,Истина);

(23) ЗапуститьПриложение не хватит?
25 spiller26
 
15.08.16
11:55
(25) попробую с antiword
26 spiller26
 
15.08.16
12:43
Вот код

    ИзвлеченныйТекст = "";
    
    #Если Не ВебКлиент Тогда
        ВременныйDocФайл = ПолучитьИмяВременногоФайла("doc");
        КопироватьФайл(ПутьКФайлу, ВременныйDocФайл);
        ВременныйТексДокумент = ПолучитьИмяВременногоФайла();
        
        ТекстДокумента = новый ТекстовыйДокумент;
        Попытка
            СтрокаКонсольнойКоманды = "antiword " + ВременныйDocФайл + " > " + ВременныйТексДокумент;
            ЗапуститьПриложение(СтрокаКонсольнойКоманды);
        Исключение
        КонецПопытки;
        
        Попытка
            ТекстДокумента.Прочитать(ВременныйТексДокумент);
            ИзвлеченныйТекст = ТекстДокумента.ПолучитьТекст();
        Исключение
        КонецПопытки;    
    #КонецЕсли
    
    УдалитьФайлы(ВременныйDocФайл);
    УдалитьФайлы(ВременныйТексДокумент);

    Возврат ИзвлеченныйТекст;

только вот после ЗапуститьПриложение(СтрокаКонсольнойКоманды)
нужно задержку, чтобы система успела переконвертировать файл.
27 Кирпич
 
15.08.16
13:09
(26) А что на Linux параметр "ДождатьсяЗавершения" не работает?
28 Кирпич
 
15.08.16
13:09
ЗапуститьПриложение(СтрокаКонсольнойКоманды,,Истина);
29 Serginio1
 
15.08.16
16:36
30 Serginio1
 
19.08.16
12:07
Сейчас доделываю чтение через openxml
Скачал отсюда https://github.com/ph1ll/Open-XML-SDK/tree/netstandard
Скомпилировал под NetStandart1.6. Правда его в проектах без NuGet нельзя использовать, но через мою приблуду в 1С можно.

Если вдруг нужно, скоро выложу
31 lodger
 
19.08.16
12:29
(29) у меня одного глаз чешется когда читаю "Native ВК"? с какого перепугу он Native, если это ВНЕШНЯЯ Компонента?
(30) твоя приблуда умеет в .doc ?
32 DDwe
 
19.08.16
12:32
Так хочется сказать, что Serginio1 достал! Но не скажу, т.к. невежливо.
33 PRO100 NigGaZ
 
19.08.16
12:48
(32) человек который пытается привнести в систему новое, свободное и хорошее - достал, яснопонятно
как говорят уточки в пруду - зря-зря-зря
34 Mauser
 
19.08.16
13:10
(33) Аборигены всегда кушали миссионеров, смирись.
35 Mauser
 
19.08.16
13:10
И не зря, надо сказать, кушали
36 lodger
 
19.08.16
13:30
(33) ну открывать темы и устраивать срачики и проповеди там - прекрасно, с одобрения администрации. а заходить в каждую едва касательную тему и постить не-решение вопроса - это уже как свидетели иеговы.
(34) а прикольно (24) 6 раз сослался заранее.
37 Serginio1
 
19.08.16
14:02
(31) Есть два вида ВК через COM и Native API. Первые под линукс не подходят.
(30) Моя Приблуда только вызвает методы объектов. А вот
https://github.com/ph1ll/Open-XML-SDK/tree/netstandard
Умеет читать и писать в DOC
https://msdn.microsoft.com/ru-ru/library/office/cc850833.aspx
38 Serginio1
 
22.08.16
14:50