Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: импорт из Word в 1С 8.2
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
I_Stranger
Всем доброго времени суток.

Столкнулась со следующей проблемой:
есть строка в ворде (ниже)

AL162805 PIN. FASTENER 2 2 1.606 61.63 123.26 (- где "PIN. FASTENER" - одно наименование товара)

которая при считывании делится почему то на 2 строки
1. AL162805 PIN.
2. FASTENER 2 2 1.606 61.63 123.26

На точки между цифрами - никак не реагирует, нормально идес процес. Подскажите, кто знает, по какой причине наличие точки между символами делает перенос строки? и как с этим бороться? :/

код собственно:
WordПриложение = Новый COMОбъект("Word.Application");
Состояние("Открытие файла Microsoft Word...");
WordПриложение.Visible = Истина;
WordПриложение.Documents.Open(Путь);
Документ = WordПриложение.ActiveDocument();
Для н = 1 по Документ.Sentences.Count Цикл
    Текст = Документ.Sentences(н).Text;
.....
pablo
А между PIN. и FASTENER специальный символ случаем не поставить? например - неразрывный пробел?
I_Stranger
Пробел есть. Если убрать точку - считывает тоже нормально.
pablo
извините за оперативную правку собственных сообщений. Вы считываете текст по предложениям, поэтому такая закавыка. Если точка окружена с обеих сторон непробельными символами, то ворд не воспринимает ее, как конец предложения.
I_Stranger
Вроде поняла. Так, получается, нужно в файле Ворда править позиции с наименованием Товара? При считывании никак исправить нельзя?
pablo
При считывании при помощи Sentences - никак. Можно попытаться через другие свойства, например - Paragraph, но все зависит от того - какой именно у вас там формат входных данных и насколько можно сделать правку в Ворде. Путей много.
I_Stranger
Спасибо, за развернутый ответ

И если не сложно, прокомментируйте, почему тогда такую строку - не разбивает на части?

"R167971 A21127 US WASHER 1 1 .005 2.34 2.34"

ведь, явные пробелы перед точкой на этом участке присутствуют " 1 .005 "
pablo
точка и потом цифры - ворд воспринимает как дробное число. Например 0.5 == .5
I_Stranger
Решение проблемы:
Было
Для н = 1 по Документ.Sentences.Count Цикл
    Текст = Документ.Sentences(н).Text;

Стало
Для н = 1 по Документ.Paragraphs.Count Цикл
    Текст = Документ.Paragraphs(н).Range.Text;


Считывает все также, построчно, теперь уже не смотря, когда там окончание строки у ворда. Правда, это может быть, только для наших типов инвойсов.

Еще раз спасибо smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.