Имя: Пароль:
1C
1С v8
Получить текст файла docx
0 Kyrtizanka
 
30.07.13
10:47
Добрый день, изначально задача состоит, создать письмо "Outlook.Application" , тело письма будет в следующем виде
Пример.
Вася
План -100
Продажи-50
...
потом идет талица с данными, которой я формирую в Скд.
Я сделала следующим образом:
первую часть, я сгенерировала-
Вася
План -100
Продажи-50

потом отраюотал макетСкд, данные я сохранила в файл с типом DOCX
А потом у меня возникает проблема, я пытаюсь прочитать и скопировать текст из этого вордовского файла, но у меня иероглифы читаются

Делаю так
     НовыйТекст.Прочитать(ПолноеИмяФайла);
     Ном = 0;
     КоличествоСтрок = НовыйТекст.КоличествоСтрок();
     Пока Ном <= КоличествоСтрок Цикл
    Текст = Текст + Символы.ПС+ НовыйТекст.ПолучитьСтроку(ном);
         Ном = Ном+1;
     КонецЦикла ;
можно было просто ПолучитьТекст(), но по описанию
Описание:

Получает строку текстового документа по номеру.
а не для файла типа ворд и возвращает строку, а меня там таблица так же хранится
Подскажите пожалуйста как вставить таблицу в тело письма
1 Arxangel06
 
30.07.13
10:57
Вопрос номер раз: после обработки, но перед выводом в файл данные где хранятся? Источник данных СКД - Запрос? Если так, то почему бы не выгрузить результат запроса в таблицу значений, а таблицу в свою очередь - в табличный документ? или в HTML-текст, он вполне может табличку нарисовать. Вопрос номер два: а с каких пор DOCX-файл стал текстовым? он же XML, упакованный в ZIP... С таким чудом можно работать только через COM-объект, если быстро. Если быстро не обязательно - можно собрать свой распаковщик, потом парсер... полуить текст...
2 Kyrtizanka
 
30.07.13
11:05
а можно поподробнее, я не знаю как это сделать программно через
HTML-текст
3 Jaap Vduul
 
30.07.13
11:06
Можно ИзвлечениеТекста использовать (обычно в виндах IFilter для docx имеется), но на выходе будет именно голый текст, без форматирования.
4 Kyrtizanka
 
30.07.13
11:08
когда делаешь
     ФайлМесяц.Записать(ПолноеИмяФайла,ТипФайлаТабличногоДокумента.HTML);
     НовыйТекст =  Новый ТекстовыйДокумент;
     НовыйТекст.Прочитать(ПолноеИмяФайла);
     Текст = Текст + Символы.ПС+ НовыйТекст.ПолучитьТекст();
там абра-кадабра получается
5 Kyrtizanka
 
30.07.13
11:08
мне же табличка нужна
6 Arxangel06
 
30.07.13
11:16
(2) Просто:
Функция СформироватьХТМЛКопиюТаблицы(Таблица)    
    ХТМЛТекст = "<table border=1><tr>";    
    Для Каждого Колонка Из Таблица.Колонки Цикл
        ХТМЛТекст = ХТМЛТекст + "<td><b>" + Колонка.Заголовок + "</b></td>";
    КонецЦикла;    
    ХТМЛТекст = ХТМЛТекст + "</tr>";    
    Для Каждого СтрокаТаблицы Из Таблица Цикл        
        ХТМЛТекст = ХТМЛТекст + "<tr>";        
        Для Каждого Колонка Из Таблица.Колонки Цикл
            ХТМЛТекст = ХТМЛТекст + "<td>" + СтрокаТаблицы[Колонка.Имя] + "</td>";
        КонецЦикла;        
        ХТМЛТекст = ХТМЛТекст + "</tr>";        
    КонецЦикла;    
    ХТМЛТекст = ХТМЛТекст + "</table>";    
    Возврат ХТМЛТекст;    
КонецФункции
7 Kyrtizanka
 
30.07.13
11:22
Таблица - должна быть Таблицей значения как я понимаю
8 Arxangel06
 
30.07.13
11:29
(7) Это само собой.
9 Kyrtizanka
 
30.07.13
11:32
а у меня табличный документ с данными после отработки СКД
10 Kyrtizanka
 
30.07.13
11:43
нет больше подсказок((
11 arsik
 
гуру
30.07.13
12:28
(4) В браузере кодировку по умолчанию поменяй
12 cw014
 
30.07.13
12:29
> данные я сохранила в файл с типом DOCX
А разве это не Вордовский формат?
13 Kyrtizanka
 
30.07.13
12:29
вордовский
14 Kyrtizanka
 
30.07.13
12:31
может я задачу как то непонятно описала. мне непринципиально в чем сохранять файл с таблицей, мне нужно понять как скопировать данные этого файла
15 Kyrtizanka
 
30.07.13
12:32
просто я думала сохранить в ворд, потом как то программно нажать что-то типа  ctrl-A? ctrl-insert , а потом сделать ctrl-shift
16 Масянька
 
30.07.13
12:33
(15) Нужно к генерить письмо, текст которое заполняется программно?
17 Kyrtizanka
 
30.07.13
12:34
можно и через Эксель это сдлеать, именно не получается этот обмен через буфер, как это программно
18 cw014
 
30.07.13
12:35
(13) Тогда для его прочтения тебе нужен 'Новый COMОбъект("Word.Application)"'
19 Kyrtizanka
 
30.07.13
12:35
да, тело письма программно создается
20 exwill
 
30.07.13
12:37
(0) ИзвлечениеТекста() используй.
21 Kyrtizanka
 
30.07.13
12:41
ИзвлечениеТекста ты сам пробовал???
22 Kyrtizanka
 
30.07.13
12:51
мне то нужна таблица
Возвращаемое значение:

Тип: Строка.
23 Arxangel06
 
30.07.13
13:15
(9) Стоп-стоп-стоп. если у тебя табличный документ после обработки, то зачем его куда-то выгружать? И КАК вообще у тебя получается табличный документ??? Еще раз - источник данных СКД - запрос? Возьми этот запрос, засунь его в код, таблица= запрос.выполнить().Выгрузить(). Получишь таблицу значений. СКД эту же таблицу значений пихает в табличный документ. А я предлагаю вообще отказаться от СКД. Просто таблицу-результат запроса выгрузи в ХТМЛ, код я уже показывал. И вообще ВСЕ письмо целиком надо формировать в ХТМЛ. Тогда там и текст будет, и таблица.
24 Arxangel06
 
30.07.13
13:16
(15) Какой еще буфер обмена внутри одного приложения? У тебя есть объект - таблица, ну и выгрузи эту таблицу не в файл, а в текст письма, в чем проблема-то?
25 Arxangel06
 
30.07.13
13:19
А если уж так хочется извращений - сохраняешь свой макет СКД в эксель, потом идешь в MSDN и смотришь, как в Word.Application вставить табличку из файла XLS. Я не ошибся, именно в WORD, т.к. редактор писем - именно он и есть, Outlook сам письма не редактирует.
26 Kyrtizanka
 
30.07.13
13:35
потом идешь в MSDN и смотришь, как в Word.Application вставить табличку из файла XLS
в этом то и проблема
27 Kyrtizanka
 
30.07.13
13:36
а пользуюсь СКД, т.к я использую 2 запроса и там талица в опред виде
28 Kyrtizanka
 
30.07.13
13:37
мне нужно из файл вытащить текст, который содержит таблицу и красиво этот текст вставить в тело письма
29 Kyrtizanka
 
30.07.13
13:39
короче так и не нашла я для себя какого-то решения оптимального, ведь можно это сщделать, неужели никто не делал
30 Arxangel06
 
30.07.13
14:06
(26) В чем проблема? в MSDN? http://msdn.microsoft.com/en-us/library/bb726436(v=office.12).aspx
Пожалуйте, как говорится.
(27) Два запроса. Объединение? Отладчик отменили? В форме останавливаешься отладчиком и смотришь, какой запрос СКД отправляет в БД. Таблица определенного вида - ну так положи её в эксель. Существует способ вставить таблицу из файла, как раз этот способ и нужно найти в MSDN.
31 Arxangel06
 
30.07.13
14:07
в дополнение к (30) только это уже несколько не одинэсинг, это VBA...
32 Kyrtizanka
 
30.07.13
14:09
Товарищи . Существует способ вставить таблицу из файла - вот я и пытаюсь узнать какой это способ
33 Kyrtizanka
 
30.07.13
14:11
короче все что-то знают, но ничего не определнного, видимо не далал никто
34 Arxangel06
 
30.07.13
14:18
(33) Т.е. это я должен пойти в MSDN, перерыть его весь, чтобы найти этот кусок VBA-кода? Ну золотце, это уже за гранью добра и зла.
P.S. Вообще такими извращениями ОЧЕНЬ редко страдают... у меня например все письма, рассылаемые из 1с, формируются в HTML-формате, и таблички туда прекрасно вставляются. Таки да, таблички плоские, без группировок и прочей мишуры. Но если вы хотите вставлять в письма полноценные отчеты, то может быть все-таки вставлять их не в текст, а приложением к тексту?
35 Kyrtizanka
 
30.07.13
14:22
спасибо за помощь, буду думать как извратиться, но меньшей кровью
36 Arxangel06
 
30.07.13
14:29
(35) и почему меня теперь совесть гложет?
37 Kyrtizanka
 
30.07.13
14:33
))) ну не знаю
38 Arxangel06
 
30.07.13
14:34
я вот не помню, здесь разрешена отсылка на внешние ресурсы, или я сейчас бан схлопочу?
39 Arxangel06
 
30.07.13
14:36
стучись в аську, будем отдельно разгребать.
40 Kyrtizanka
 
30.07.13
14:37
хорошо
41 Arxangel06
 
30.07.13
14:49
(40) я вот не пойму, кому из нас это надо? ;)
42 Kyrtizanka
 
30.07.13
15:08
нам ася на работе запрещена я могу только из дома
43 Kyrtizanka
 
30.07.13
15:13
могу по почте только на работе
44 Arxangel06
 
30.07.13
15:21
вот только почта скрыта...
45 Kyrtizanka
 
30.07.13
15:22
почему же то, все открыто,временно)
46 Arxangel06
 
30.07.13
15:23
вот так бы сразу :)
47 Arxangel06
 
30.07.13
15:29
Хватит, или еще подкинуть? ;)
48 Kyrtizanka
 
30.07.13
15:36
обязательно подкинуть