Имя: Пароль:
1C
1С v8
Как у поля текстового документа получить текст редактирования?
,
0 Fragster
 
гуру
26.06.15
18:19
т.е. тот, который в поле формы но до события изменения? Для обычного поля ввода это ТекстРедактирования, а для поля текстового документа?
1 Mirnin
 
26.06.15
20:39
Текст = ПолеТекстовогоДокумента.ПолучитьТекст();

Только вот у поля текстового документа нет событий. По-крайней мере я не вижу возможности их установить в свойствах поля. Разве что самому реализовать вызов такой процедуры..
2 Fragster
 
гуру
26.06.15
20:45
(1) Так получается значение, которое было до того, как ты поменял текст. Задача состоит в том, чтобы находясь внутри поля текстового документа получить текст, который там находится в данный момент.
3 RomanYS
 
26.06.15
20:49
(2) нет там никаких событий, только обработкой ожидания проверять
4 RomanYS
 
26.06.15
20:50
а зачем поле текстового документа, почему не просто поле ввода?
5 Fragster
 
гуру
26.06.15
20:52
(4) там работает переход к строке, отступы по табуляции, поиск/замена и прочие плюшки
6 Fragster
 
гуру
26.06.15
20:52
(3) в обработке ожидания и ловлю. только мне надо анализировать отображаемый текст, а не тот, который в переменной хранится
7 Fragster
 
гуру
26.06.15
20:52
(6)+ они не равны, пока не выйдешь из поля
8 RomanYS
 
26.06.15
20:58
(7) хз, у меня (1) выдает текущий текст из поля
9 RomanYS
 
26.06.15
20:59
*(8) даже в процессе редактирования
10 Fragster
 
гуру
26.06.15
21:02
(9) УФ?
т.е. тупо в обработке ожиания что-то типа
ПолеТекстовогоДокумента2.УстановитьТекст(ПолеТекстовогоДокумента1.ПолучитьТекст);
и они квазисинхронно меняются при редактировании текста1?
11 RomanYS
 
26.06.15
21:02
(10)ОФ
12 Fragster
 
гуру
26.06.15
21:06
(11) у меня УФ
13 RomanYS
 
26.06.15
21:14
(12) попробовал, действительно фигня(
14 RomanYS
 
26.06.15
21:29
(13) поигрался
    Элементы.Реквизит1.УстановитьГраницыВыделения(1,10);
    Реквизит2.УстановитьТекст(Элементы.Реквизит1.ВыделенныйТекст);
    Элементы.Реквизит1.УстановитьГраницыВыделения(1,1);

тоже ничего хорошего не вышло, но ВыделенныйТекст работает онлайн
15 RomanYS
 
26.06.15
22:13
*(14) работающий костыль:)

    //запомнили положение курсора
    й=0;ц=0;у=0;к=0;
    Элементы.Реквизит1.ПолучитьГраницыВыделения(й,ц,у,к);
    
    //поиск конца текста)))
    Мин = 1;
    Макс = 100000000;
    Пока Макс > Мин Цикл
        Попытка
            //выделяем весь текст
            Элементы.Реквизит1.УстановитьГраницыВыделения(1,Макс);
            Мин = Макс;
            Макс = Цел(1.5*Макс)
        Исключение
            Макс = Цел((Мин+Макс)/2)
        КонецПопытки;
    КонецЦикла;
    
    Реквизит2.УстановитьТекст(Элементы.Реквизит1.ВыделенныйТекст);
    //вернули положение кусрора/выделения
    Элементы.Реквизит1.УстановитьГраницыВыделения(й,ц,у,к);
16 RomanYS
 
26.06.15
22:19
*(15) с поиском конца немного накосячил, но идея понятна.

Макс = Цел(1.5*Макс)
заменить на
Макс = 2*Макс
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.