Имя: Пароль:
1C
1С v8
Выгрузка из 1С в Word с помощью ADO
0 Росберг
 
31.07.13
15:31
Хочу найти в Рунете информацию о выгрузке данных в ворд. Информации нашлось много, но все через COM-объекты. А начальство не хочет загружать через COM, так как выгрузка идет долго, и часто виснет. Хотелось бы выгружать через ADO. Да еще с применением автотекста. Кто подскажет, где найти информацию обо всем этом?
1 Ёпрст
 
31.07.13
15:32
в msdn
2 Росберг
 
31.07.13
15:34
(1) А в Рунете есть что-нибудь подобное?
3 Aleks73
 
31.07.13
15:37
до чего люди ленивые пошли - не могут на букву Я нажать сами...
4 Росберг
 
31.07.13
15:41
(3) нажимал. Результата нет, выборка пустая.
5 shuhard_серый
 
31.07.13
15:45
(0) брому начальству плесни, ADODB с Word-ом не работает
6 Серго62
 
31.07.13
15:47
пишем в строке поиска "Word.Application"
получаем в первой же строке
http://citforum.ru/programming/vb/vba_word/2.shtml
7 Росберг
 
31.07.13
15:48
(5) Тогда можно переформулировать вопрос: как работать с вордом, кроме COM-а?
8 Aleks73
 
31.07.13
15:48
(4) и букву я найти правильно не могут...
9 Росберг
 
31.07.13
15:50
(6) слишком теоретизированно. Нельзя ли поближе к практике?
10 Серго62
 
31.07.13
15:55
11 МихаилМ
 
31.07.13
15:55
ды Вы оказвается спамер
http://www.voloshin.ws/
12 Росберг
 
31.07.13
15:56
(11) это было давно и неправда.
13 Росберг
 
31.07.13
15:59
(10) ну дык получается, что АДО все-таки работает с вордом.
14 Серго62
 
31.07.13
16:12
(13) ну так одной и той же фирмы изделия...
15 Serginio1
 
31.07.13
16:21
(13) В 10 применяется str = Новый COMОбъект(ADODB.Stream);
Для того, что бы ускорить склеивание строк.

str = Новый COMОбъект(ADODB.Stream);
str.Open();
СтрочкаТаблицы = ЭлементыФормы.Нарушения.ТекущиеДанные;
Для Каждого СтрочкаТаблицы Из Нарушения Цикл
str.WriteText( + СтрочкаТаблицы.Описание +  Нарушены требования СНИПФЗГОСТ:  + СтрочкаТаблицы.СНИПФЗГОСТ  +  Статья:  + СтрочкаТаблицы.ЧастьСтатья  + Символ(13),0);
КонецЦикла;
str.Position = 0;
НарушенияТекст = str.readText();

никакого отношени к ворду не имеет
16 Росберг
 
31.07.13
16:29
(15) - то есть я правильно понял, что это таки COM-овский метод?
17 Serginio1
 
31.07.13
16:30
http://www.microsoft.com/en-us/download/details.aspx?id=23734

This download will install a set of components that facilitate the transfer of data between existing Microsoft Office files such as Microsoft Office Access 2007 (*.mdb and *.accdb) files and Microsoft Office Excel 2007 (*.xls, *.xlsx, and *.xlsb) files to other data sources such as Microsoft SQL Server. Connectivity to existing text files is also supported.

ODBC and OLEDB drivers are installed for application developers to use in developing their applications with connectivity to Office file formats.

(16) Да
18 Serginio1
 
31.07.13
16:32
С вордом работай как с текстовым файлом http://it-proposition.blogspot.ru/2011/08/schemaini-microsoftaceoledb120.html
19 Росберг
 
31.07.13
16:36
(18) тогда не получится с автотекстом работать.
20 Serginio1
 
31.07.13
16:39
21 Серго62
 
31.07.13
16:42
(20) опять же com-объекты...
22 Serginio1
 
31.07.13
16:46
(21) Только СОМ объекты разные
COMОбъект("ADODB.Recordset");
COMОбъект("MSWord.Application");
23 shuhard_серый
 
31.07.13
16:47
(13) и себе брому
24 Серго62
 
31.07.13
16:50
(22) Согласен, разные. Вот только не пойму, как Recordset прямо в word что-то запишет?
25 Serginio1
 
31.07.13
16:54
(24) смотри 15
26 Серго62
 
31.07.13
17:02
(25) ок, убедил, в 15 тоже не в ворд пишется
27 Жан Пердежон
 
31.07.13
17:07
а типа ADO уже не COM?
28 Кирпич
 
31.07.13
17:18
(27) типа в ADO нет драйвера для WORD
29 Кирпич
 
31.07.13
17:21
(0) сделай чтобы выгрузка в word через COM делалась быстро. или выгружайте не в word. вобщем напиши чего вы там делаете и тебе тут умные люди посоветуют.
а то часто бывает, что автор упорно требует от форума одного, а ему надо совсем другое.
30 Пеппи
 
31.07.13
17:22
Насколько помню Word весьма закрытый формат и не раскрывается фирмой Microsoft.
31 Серго62
 
31.07.13
17:24
Еще можно через OLE с вордом работать
http://look-study.ru/faq/rabota_s_ms_word_cherez_ole/
32 Кирпич
 
31.07.13
17:25
(30) да всё там открыто. вон open office работает с файлами word почти как с родными. только париться с форматом долго и дорого. да и не ясно чего надо автору.
33 Кирпич
 
31.07.13
17:25
(31) здрасти. автор как раз так и не хочет.
34 Серго62
 
31.07.13
17:29
(33) Ну тогда надо понять что он хочет.
Через ADO не получится так как (28)
35 Darklight
 
31.07.13
18:25
(15) Прикольный метод ускорения. Сначала пять 1С-овских конкатенаций, а затем одна COM-овская - и так в цикле Откуда ускорение - не ясно.

Единственный грамотный способ работы из 1С MS Word - это OLE Automation (он же COMОбъект("MSWord.Application")).
Но есть и другой - обратный путь:
Работая в MS Word через VBA: там, в скрипте уже подключаться через ADO к SQL базе 1С и запросами фигарить в WORD данные ;)
36 Serginio1
 
31.07.13
18:36
(35) Когда комовских будет за 1000 ты это почувствуешь.
Смотря как построен внутри стрим например на списках страниц или с резервированием памяти увеличивающимся при полном заполнении в 2 раза, это будет значительно эффективнее чем выделение памяти копировании при конкатенаций строк.
37 Darklight
 
31.07.13
18:53
(36)Почувствую... незначительно!
Я не говорю, что конкатенация через COM.STREAM не на много эффективнее конкатенации строк 1С. Я про то, что их (1С) в этом примере на много больше и они как тормозили, так и будут тормозить.
Правильно было бы создать COM-массив строк и его сконкатенировать одной COM-коммандой
38 Serginio1
 
31.07.13
19:01
(37) А вообще это вопрос почему в 1С нет аналогов StringBuilder которые активно применяются во всех языках.
А на 100 000 точно почувствуешь. Помню в 7 ке писал конкатенаций списка рекурсивно собирая по 10 строк
39 Serginio1
 
31.07.13
19:03
Хотя для этого должен подходить ТекстовыйДокумент.
40 Жан Пердежон
 
31.07.13
19:12
если документ не сильно навороченный - есть вариант выгружать в rtf.
41 Холст
 
31.07.13
19:17
(40) rtf собирать-разбирать по тегам муторно
42 Jaap Vduul
 
31.07.13
23:45
43 Serginio1
 
01.08.13
10:16
(42) Спасибо, интересно, буду знать
44 Darklight
 
01.08.13
10:44
(42)Стопудово, спаисбо
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.