перенос строк в поле ввода #811345


#0 by vadymdymdym
Всем бобра. С праздниками прошедшими и еще не наступившими всех. Смотрите какая интересная проблема. Имеем управляемую форму и элемент ПолеФормы на ней с видом ПолеТекстовогоДокумента. Когда набираю длинный текст, он не переносится на следующую строку, а очень хотелось бы, чтобы переносилось. Конечно, сейчас найдутся хейтеры, которые скажут, а на фейхоа тебе сдалось поле текстового документа, если можно тупо использовать ПолеВвода, поставить там МногострочныйРежим=Истина, РасширенноеРедактирование=Истина и будет тебе великое счастье. Так-то оно так, дамы и господа, но есть небольшая проблемка. Дело в том, что у меня на форме каждые 10 секунд срабатывает процедура обработчика ожидания, которая ломится на сервер. Я все сделал для того, чтобы она ломилась без контекста, но это не помогает. Дело в том, что при возращении оттуда весь текст в поле ввода оказывается стертым. Т.е. писал, писал человек и на тебе. Чтобы он не был стерт, необходимо в течение 10 секунд успевать "сохраняться" (сходить с поля ввода), только тогда переменная, которая связана с полем ввода примет значение, которое там записано. Так вот, мне необходимо либо как-то умудриться реализовать перенос в первом случае, либо что-то сделать с текстом во-втором. Есть какие-нибудь идейки?))
#1 by Волшебник
Не надо ломиться на сервер каждые 10 минут
#2 by jsmith82
А форматированный документ?
#3 by Гипервизор
Что делает обработчик ожидания?
#4 by vadymdymdym
Не 10 минут, а 10 секунд)). Спасибо, конечно, но... не могу не ломиться. Надо)) На форматированном документе проблем нет, совершенно верно, но... мне надо, чтобы документ не форматировался)). Тем более, что на форме и так уже есть форматированный документ и человек выбирает между форматированным и неформатированным. Такие дела)) Обработчик ожидания смотрит, не изменилось ли состояние базы и если что-то изменилось, отображает это изменение на форме. Так сказать, имитация в режиме реального времени)))
#5 by vadymdymdym
Я вот уже начинаю думать, а может jsmith82 прав? Может мне действительно вместо текстового документа сделать форматированный, только кнопки форматирования убрать?... Интересная идейка, между прочим. Подумаю)
#6 by Гипервизор
Все равно. Или я чего-то не догоняю и дьявол в деталях, или вся ваша концепция не верна.
#7 by patya
> Я все сделал для того, чтобы она ломилась без контекста
#8 by vadymdymdym
Не совсем понял, что Вам непонятно?))
#9 by vadymdymdym
Я имею в виду, что использую директиву &НаСервереБезКонтекста :)
#10 by Гипервизор
Для чего это вообще все реализовано именно так? У вас состязание между пользователем и обработчиком. Быстрее наберет текст юзер или с сервера придет инфа, что реквизит еще пустой? Потому мне такая реализация непонятна.
#11 by patya
Где?
#12 by vadymdymdym
Да нет. Пользователь вводит текст и записывает изменения в базу. Одновременно и другие пользователи могут делать то же самое. Этот обработчик ожидания просто информирует пользователя, не записали ли подобным образом другие пользователи что-то в базу
#13 by vadymdymdym
В процедуре, которая запускается из процедуры обработчика ожидания
#14 by МимохожийОднако
"Смотрите какая интересная проблема".Не стой на своём. Это больно. ИМХО. Сам себе проблему создал обработчиком ожидания.
#15 by patya
Показывай
#16 by vadymdymdym
Больно. согласен с Вами)) Жизнь - боль
#17 by vadymdymdym
Что вам конкретно показать?
#18 by patya
Обработчик ожидания и сигнатуры того что он вызыаает
#19 by vadymdymdym
Я не могу понять, Вам код прислать? Или обработку целиком? Извините, код не пришлю. Выглядит это так:
#20 by vadymdymdym
#21 by Гипервизор
Мда.. А в 1С-то не знают, что обрабатывать попытку записи изменений несколькими пользователями в один и тот же объект надо с помощью обработчиков ожидания..
#22 by vadymdymdym
Что предлагаете?
#23 by patya
> Извините, код не пришлю Успехов тебе, счастья в новом году и много-много закрывающих скобочек
#24 by vadymdymdym
Спасибо. Вас тем же концом по тому же месту))
#25 by vadymdymdym
Может Вы не поняли меня. Запись не происходит в один и тот же объект. Запись происходит в один и тот же регистр сведений. Реализацию с динамическим списком не предлагать. Слишком мудреный список получается. Во-первых, в таблице значений на форме есть поля, которые не отобразить в динамическом списке из-за проблемности их получения (Например, в одном и том же поле в таблице у меня строка и в скобках дата. Тут запросом сконкатенировать большая проблема). Во-вторых, мне нужно не все данные а только лишь некоторые последние (т.е. в запросе дин. списка нужно сделать что-то типа Упорядочить По и Выбрать Первые), в третьих, содержимое этого списка меняется в зависимости от того, куда щелкнет пользователь, т.е. мне нужно программно реализовать отборы по щелчку или установку параметров. По факту отображается от 4 до 10 записей регистра. Ради них делать динамический список?
#26 by Гипервизор
И не понял, и продолжаю не понимать. Платформенная реализация уникальности записей регистра сведений чем вас не устраивает?
#27 by vadymdymdym
Записи и так уникальны. Мне нужно в реальном времени отображать изменения в регистре сведений, которые сделали пользователи. Т.е. по сути мне надо, грубо говоря, динамический список регистра сведений с автообновлением каждые 10 секунд. Т.е. чтобы пользователь видел с этим интервалом не изменилось ли состояние регистра. Только я не пошел по пути динамического списка, а пошел по пути таблицы значений, которая красиво отформатирована и раскрашена, потому что мне не нужен весь регистр, а нужны только несколько последних записей)). И поэтому я использую обработчик ожидания, чтобы обновить таблицу на форме. Вот в чем дело))
#28 by Волшебник
Если надо, то ССЗБ (сам себе злобный Буратино)
#29 by Волшебник
Добавь уже кнопку "обновить". Пусть юзеры её жмут, когда ИМ надо.
#30 by vadymdymdym
Согласен. Сам себе создал проблему, сам себе злобный Буратиборг)) Тоже, кстати, интересный вариант. Однако, сам смысл обработки как раз и заключается в том, чтобы они постоянно не жмакали никуда, а чтобы они подождали... и у них выскочило. Ибо таково было ТЗ. А если обработка закрыта, то им еще и оповещалка приходила, шо дескать откройте обработку. Тама вас сюрприз ждет)). Кроме того, если кто-то из пользователей уже что-то пытается набрать в этом текстовом поле, то у других пользователей в обработке меняется шрифт, текст в таблице и еще сообщается, что вот такой-то вот пользователь что-то набирает. Будьте внимательны. Сейчас появится)) Я вот уже думаю, может правда заморочиться с дин. списком уже. Очень муторно будет, но можно попробовать, если толк будет. Итого сегодня мне предложили 3 варианта: 1. Самый простой - кнопка Обновить 2. Форматированный документ. Чуть посложнее 3. Самый сложный, но наверное, самый красивый. Динамический список. Правда он будет со сложным запросом, несколькими параметрами и/или отбором Что ж, всем спасибо. Если есть еще идеи - отписывайтесь
#31 by DrZombi
Интересная идея. В момент редактирования отключать обработчик ожидания, по окончанию редактирования замерять время прошедшее между началом и концом редактирования, и если все ОК то запускать обработчик ожидания, при этом обработать обработчик "вручную" (вызвать насильно) И так по кругу, пользователь что-то пишет, форма периодически обновляется. Проблема только настает, когда пользователь слишком долго пишет :)
#32 by vadymdymdym
Спасибо огромное. Я об этом думал. Но вы вот сами ответили на вопрос. Проблема, если пользователь слишком долго пишет)). Мне эта мысль в голову тоже приходила)
#33 by Волшебник
Переложите проблемы пользователей на них самих.
#34 by DrZombi
Пользователь не будет слишком долго писать, если его обучить к работе с тонким клиентом. Научится выходить из режима редактирования.
#35 by vadymdymdym
Как вариант можно)) Будет. Они любят это дело)). Поле многострочное. Более того, у них есть выбор, писать в текстовом поле или в форматированном документе, где они вообще зависнут надолго)) Итак, четвертая идея - отключать обработчик ожидания в момент активизации поля ввода))
#36 by Волшебник
Совсем его отключи и будет тебе щастье
#37 by Волшебник
— Доктор, когда я делаю вот так, мне больно. — Не делайте так...
#38 by vadymdymdym
Я понял Вас. Вы это уже предлагали в . Ну... совсем отключить... нежелательно бы. Мне тогда надо что-то заказчику в альтернативу предложить, ибо задание было такое, чтоб... в реальном времени все было. Вот кнопка "Обновить" - в-принципе, неплохая альтернатива. Достаточно аргументированная. Если заказчик согласиться - можно будет последовать Вашему совету
#39 by vadymdymdym
согласится*. Совсем с русским языком проблемы начались
#40 by Волшебник
Вместо дефиса ещё нужна запятая. Не парься на тему русского языка. У тебя с 1С проблемы.
#41 by vadymdymdym
Ну тут спорный вопрос. Я там не дефис, а тире вставлял. Обновить - альтернатива. При таком формате, подлежащее - сказуемое ставится тире, насколько я помню. Хотя... действительно неважно. Что у меня с 1С-то не так?). Я ж не виноват, что заказчик так требует). 1С вообще не предназначена для того, что он просит, если вдуматься. Но... выкручиваться как-то надо)). Вот и пришлось извращаться))
#42 by Волшебник
Ты виноват, что не объяснил заказчику цену и последствия его решения.
#43 by vadymdymdym
Тут не поспоришь(((
#44 by Волшебник
Покайся и будет тебе щастье! Отключи обработчик ожидания! Сделай добро людям!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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