v7: Поиск по шаблону и подсчет количества слов в документе Word из 1С 7.7 #767383


#0 by Angellisa
1. Есть справочник "Слова". В него занесено 10 слов. 2. Есть справочник "Обработка документа Ворд". 3. Есть справочник "Слова из документа". Подчинен справочнику "Обработка документа Ворд". На форме элемента справочник "Обработка документа Ворд" есть кнопка "Обработать". Открывается нужный вордовский файл, идет поиск слов из справочника "Слова" по указанному документу. При нахождении - вопрос:" Нашли вхождение... Заполнить справочник "Слова из документа"?" Если да, то заполняется подчиненный справочник. Все работает отлично, но хотелось добавить 2 вещи: 1. Вытащить через команду "Сообщить" все предложение (или абзац), содержащее искомый шаблон. 2. Посчитать количество слов в этом документе ворд. ActiveDocument.Words.Count работает криво, возвращает слова с учетом переносов и пр. На ComputeStatistics(wdStatisticWords) - ругается 1С. В процедуре:
#1 by Garykom
Можно спросить? А нафуя в задаче word?
#2 by Garykom
+ забыл классическое "а фото?"
#3 by Angellisa
Как зачем? Мне не нужно хранить в 1С текст вордовского файла, а только найденные вхождения определенных слов из него. Мухи и котлеты отдельно))
#4 by Смотрящий
Фотка где ?
#5 by Garykom
ну так берете просто весь текст из файлов ворд по очереди и анализируем прямо в 1С... ворд то зачем для анаиза?
#6 by Angellisa
Давненько не была на форумах.Фотка чего?))
#7 by Garykom
Авторши конечно, чего же еще ? ;)
#8 by Garykom
+ для избавления от "переносов" слов можно глянуть какой символ переноса в полученном из ворда в 1С тексте и СтрЗаменить(...)
#9 by Смотрящий
Вставлять фотку  профиль - плата твоя за помощь
#10 by Garykom
"ню" = "готовый код" ?
#11 by Смотрящий
готовый код это если как в анекдоте: блондинка и фото на паспорт
#12 by Garykom
это уже XXX какой то )) с таким ракурсом будет "золотой вип абонемент"
#13 by Angellisa
Код простейший:
#14 by Смотрящий
А тут то что нетак ?
#15 by Garykom
код можно упростить и все что делается через word вынести в 1С будет слегка надежнее, в вашем примере пока не ответили на вопрос документ ворда висит открытый если попробовать открыть другой документ ворда возможны разные глюки или если 1С вылетает то ворд то остается в памяти и мешается
#16 by Garykom
+ самый главный + код получается не привязан совсем к типу файлов (word) можно его будет использовать почти для любого текста к примеру без проблем с документами libreoffice и прочими
#17 by Angellisa
Я же говорю - все отлично работает. Но нужно еще: 1. Вытащить через команду "Сообщить" все предложение (или абзац), содержащее искомый шаблон. Т.е. когда идет предупреждение, что слово найдено, хотелось бы посмотреть в каком предложении и уже тогда отвечать заносить это слово в справочник или нет. 2. Посчитать количество слов в этом документе ворд. ActiveDocument.Words.Count работает криво, возвращает слова с учетом переносов и пр. На ComputeStatistics(wdStatisticWords) - ругается 1С.
#18 by Angellisa
А как "все что делается через word вынести в 1С"? Скопипастить в текстовый реквизит? А если там 500 стр?
#19 by Смотрящий
код Текст_Найти дай На ComputeStatistics(wdStatisticWords) - ругается 1С. Как вызывается ? дословно что пищет 1С ?
#20 by Garykom
1. абзац это либо символ конца строки 2. статистика по словам банально убрать смиволы переноса, заменит " " на "РазделительСтрок" затем циклом обойти и добавить все слова в ТЗ, добавить колонку "Количество", заполнить ее "1" и ТЗ.Свернуть("Слова", "Количество") без разницы сколько там страниц, программно же начало кода будет такое же
#21 by Garykom
+ 1. абзацы банально находятся при поиске слов сразу не в целом тексте, а в каждом абзаце искать в цикле и если нашли то его выводить куда надо
#22 by Angellisa
Переменная не определена (wdStatisticWords) При проверке модуля обнаружены синтаксические ошибки!
#23 by Garykom
код "Текст_Найти" в
#24 by Angellisa
Я с ума сойду копипастить тысячу документов))
#25 by Смотрящий
wdStatisticWords определено в VBA как wdStatisticWords = $0 попробуй использовать Сообщить(Оле.ActiveDocument.ComputeStatistics);
#26 by Angellisa
Вау!!! Заработало! Мерси,мерси)) Теперь бы еще вторую задачку решить и будет мне счастье))
#27 by Смотрящий
я нетверезв, а вба был настолько давно что с ходу не изменю код в - вспоминать надо, и читать опять по новой
#28 by Смотрящий
По идее Текст_Найти должна третьим параметром возвращать предложение в которм найден текст
#29 by Garykom
да не надо ничего копипастить то )) просто целиком текст из ворда получаем из каждого файла кодом и далее в 1С его крутим (этот полученный текст)
#30 by Angellisa
Нашла в инете: 'получить текст слова 2, в предложении 1,в параграфе 2 WordApp.ActiveDocument.Paragraphs.Range.Sentences.Words.Text Крутила по-всякому, но никак.
#31 by Смотрящий
У тебя в Текст_Найти(Оле, аТекст) оператор Оле.Selection.Find.Found возвращает найдено/ненайдено. А вот где найдено, в каком параграфе/строке - неизвестно. Надо искать как выдрать средствами вба предложение в котором найдено - условно: сканировать строку к началу до точки (до начала параграфа) и к концу до точки (до начала параграфа)
#32 by Garykom
а не проще по очереди брать каждый параграф из ворда в 1С и в нем искать? но есть, есть любители преодолевать трудности.... "стоя и в гамаке"
#33 by Смотрящий
ну на первом десятке параграфов перебор, может и будет иметь смысл. а вот на сотне - будет виснуть нхрен; надолго
#34 by Angellisa
"Expand — расширить выделение на слово, предложение, абзац и т.п. — в зависимости от переданного параметра. Метод Extend позволяет расширить выделение (вместо слова — предложение, вместо предложения — абзац и т.п.). Метод, обратный методу Expand — Shrink." И как это прикрутить?
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С