Вход | Регистрация


1С:Предприятие ::

Метки: 

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

Я
   vadymdymdym
 
08.01.18 - 13:35
Всем бобра. С праздниками прошедшими и еще не наступившими всех. Смотрите какая интересная проблема. Имеем управляемую форму и элемент ПолеФормы на ней с видом ПолеТекстовогоДокумента. Когда набираю длинный текст, он не переносится на следующую строку, а очень хотелось бы, чтобы переносилось. Конечно, сейчас найдутся хейтеры, которые скажут, а на фейхоа тебе сдалось поле текстового документа, если можно тупо использовать ПолеВвода, поставить там МногострочныйРежим=Истина, РасширенноеРедактирование=Истина и будет тебе великое счастье. Так-то оно так, дамы и господа, но есть небольшая проблемка. Дело в том, что у меня на форме каждые 10 секунд срабатывает процедура обработчика ожидания, которая ломится на сервер. Я все сделал для того, чтобы она ломилась без контекста, но это не помогает. Дело в том, что при возращении оттуда весь текст в поле ввода оказывается стертым. Т.е. писал, писал человек и на тебе. Чтобы он не был стерт, необходимо в течение 10 секунд успевать "сохраняться" (сходить с поля ввода), только тогда переменная, которая связана с полем ввода примет значение, которое там записано. Так вот, мне необходимо либо как-то умудриться реализовать перенос в первом случае, либо что-то сделать с текстом во-втором. Есть какие-нибудь идейки?))
 
 
   Волшебник
 
Модератор
1 - 08.01.18 - 13:40
Не надо ломиться на сервер каждые 10 минут
   jsmith82
 
2 - 08.01.18 - 13:41
А форматированный документ?
   Гипервизор
 
3 - 08.01.18 - 13:41
Что делает обработчик ожидания?
   vadymdymdym
 
4 - 08.01.18 - 13:44
(1) Не 10 минут, а 10 секунд)). Спасибо, конечно, но... не могу не ломиться. Надо))
(2) На форматированном документе проблем нет, совершенно верно, но... мне надо, чтобы документ не форматировался)). Тем более, что на форме и так уже есть форматированный документ и человек выбирает между форматированным и неформатированным. Такие дела))
(3) Обработчик ожидания смотрит, не изменилось ли состояние базы и если что-то изменилось, отображает это изменение на форме. Так сказать, имитация в режиме реального времени)))
   vadymdymdym
 
5 - 08.01.18 - 13:48
Я вот уже начинаю думать, а может jsmith82 прав? Может мне действительно вместо текстового документа сделать форматированный, только кнопки форматирования убрать?... Интересная идейка, между прочим. Подумаю)
   Гипервизор
 
6 - 08.01.18 - 13:50
(5) Все равно. Или я чего-то не догоняю и дьявол в деталях, или вся ваша концепция не верна.
   patya
 
7 - 08.01.18 - 13:52
(0) > Я все сделал для того, чтобы она ломилась без контекста

https://otvet.imgsmail.ru/download/c914757572c87a649e63cb92d49b45ae_i-75.jpg
   vadymdymdym
 
8 - 08.01.18 - 13:53
(6) Не совсем понял, что Вам непонятно?))
   vadymdymdym
 
9 - 08.01.18 - 13:54
(7) Я имею в виду, что использую директиву &НаСервереБезКонтекста :)
   Гипервизор
 
10 - 08.01.18 - 13:57
(8) Для чего это вообще все реализовано именно так? У вас состязание между пользователем и обработчиком. Быстрее наберет текст юзер или с сервера придет инфа, что реквизит еще пустой? Потому мне такая реализация непонятна.
 
 Рекламное место пустует
   patya
 
11 - 08.01.18 - 14:00
(9) Где?
   vadymdymdym
 
12 - 08.01.18 - 14:00
(10)Да нет. Пользователь вводит текст и записывает изменения в базу. Одновременно и другие пользователи могут делать то же самое. Этот обработчик ожидания просто информирует пользователя, не записали ли подобным образом другие пользователи что-то в базу
   vadymdymdym
 
13 - 08.01.18 - 14:01
(11) В процедуре, которая запускается из процедуры обработчика ожидания
   МимохожийОднако
 
14 - 08.01.18 - 14:02
"Смотрите какая интересная проблема".Не стой на своём. Это больно. ИМХО. Сам себе проблему создал обработчиком ожидания.
   patya
 
15 - 08.01.18 - 14:02
(13) Показывай
   vadymdymdym
 
16 - 08.01.18 - 14:03
(14) Больно. согласен с Вами)) Жизнь - боль
   vadymdymdym
 
17 - 08.01.18 - 14:03
(15) Что вам конкретно показать?
   patya
 
18 - 08.01.18 - 14:04
(17) Обработчик ожидания и сигнатуры того что он вызыаает
   vadymdymdym
 
19 - 08.01.18 - 14:05
(18) Я не могу понять, Вам код прислать? Или обработку целиком? Извините, код не пришлю. Выглядит это так:
   vadymdymdym
 
20 - 08.01.18 - 14:06
&НаКлиенте
Процедура НазваниеПроцедурыОбработкиОжидания()
    НазваниеПроцедурыНаСервере()
КонецПроцедуры

&НаСервереБезКонтекста
Процедура НазваниеПроцедурыНаСервере()
    //код процедуры

КонецПроцедуры
   Гипервизор
 
21 - 08.01.18 - 14:06
Мда.. А в 1С-то не знают, что обрабатывать попытку записи изменений несколькими пользователями в один и тот же объект надо с помощью обработчиков ожидания..
   vadymdymdym
 
22 - 08.01.18 - 14:08
(21) Что предлагаете?
   patya
 
23 - 08.01.18 - 14:09
(19) > Извините, код не пришлю
Успехов тебе, счастья в новом году и много-много закрывающих скобочек
   vadymdymdym
 
24 - 08.01.18 - 14:11
(23)Спасибо. Вас тем же концом по тому же месту))
   vadymdymdym
 
25 - 08.01.18 - 14:17
(21)Может Вы не поняли меня. Запись не происходит в один и тот же объект. Запись происходит в один и тот же регистр сведений. Реализацию с динамическим списком не предлагать. Слишком мудреный список получается. Во-первых, в таблице значений на форме есть поля, которые не отобразить в динамическом списке из-за проблемности их получения (Например, в одном и том же поле в таблице у меня строка и в скобках дата. Тут запросом сконкатенировать большая проблема). Во-вторых, мне нужно не все данные а только лишь некоторые последние (т.е. в запросе дин. списка нужно сделать что-то типа Упорядочить По и Выбрать Первые), в третьих, содержимое этого списка меняется в зависимости от того, куда щелкнет пользователь, т.е. мне нужно программно реализовать отборы по щелчку или установку параметров. По факту отображается от 4 до 10 записей регистра. Ради них делать динамический список?
   Гипервизор
 
26 - 08.01.18 - 14:26
(25) И не понял, и продолжаю не понимать. Платформенная реализация уникальности записей регистра сведений чем вас не устраивает?
   vadymdymdym
 
27 - 08.01.18 - 14:31
(26)Записи и так уникальны. Мне нужно в реальном времени отображать изменения в регистре сведений, которые сделали пользователи. Т.е. по сути мне надо, грубо говоря, динамический список регистра сведений с автообновлением каждые 10 секунд. Т.е. чтобы пользователь видел с этим интервалом не изменилось ли состояние регистра. Только я не пошел по пути динамического списка, а пошел по пути таблицы значений, которая красиво отформатирована и раскрашена, потому что мне не нужен весь регистр, а нужны только несколько последних записей)). И поэтому я использую обработчик ожидания, чтобы обновить таблицу на форме. Вот в чем дело))
   Волшебник
 
Модератор
28 - 08.01.18 - 14:39
(4) Если надо, то ССЗБ (сам себе злобный Буратино)
   Волшебник
 
Модератор
29 - 08.01.18 - 14:40
(27) Добавь уже кнопку "обновить". Пусть юзеры её жмут, когда ИМ надо.
   vadymdymdym
 
30 - 08.01.18 - 14:50
(28) Согласен. Сам себе создал проблему, сам себе злобный Буратиборг))
(29) Тоже, кстати, интересный вариант. Однако, сам смысл обработки как раз и заключается в том, чтобы они постоянно не жмакали никуда, а чтобы они подождали... и у них выскочило. Ибо таково было ТЗ. А если обработка закрыта, то им еще и оповещалка приходила, шо дескать откройте обработку. Тама вас сюрприз ждет)). Кроме того, если кто-то из пользователей уже что-то пытается набрать в этом текстовом поле, то у других пользователей в обработке меняется шрифт, текст в таблице и еще сообщается, что вот такой-то вот пользователь что-то набирает. Будьте внимательны. Сейчас появится))

Я вот уже думаю, может правда заморочиться с дин. списком уже. Очень муторно будет, но можно попробовать, если толк будет.

Итого сегодня мне предложили 3 варианта:
1. Самый простой - кнопка Обновить
2. Форматированный документ. Чуть посложнее
3. Самый сложный, но наверное, самый красивый. Динамический список. Правда он будет со сложным запросом, несколькими параметрами и/или отбором

Что ж, всем спасибо. Если есть еще идеи - отписывайтесь
   DrZombi
 
31 - 08.01.18 - 14:50
(29) Интересная идея.
В момент редактирования отключать обработчик ожидания,
по окончанию редактирования замерять время прошедшее между началом и концом редактирования, и если все ОК то запускать обработчик ожидания, при этом обработать обработчик "вручную" (вызвать насильно)
И так по кругу, пользователь что-то пишет, форма периодически обновляется.
Проблема только настает, когда пользователь слишком долго пишет :)
   vadymdymdym
 
32 - 08.01.18 - 14:51
(31) Спасибо огромное. Я об этом думал. Но вы вот сами ответили на вопрос. Проблема, если пользователь слишком долго пишет)). Мне эта мысль в голову тоже приходила)
   Волшебник
 
Модератор
33 - 08.01.18 - 14:52
(32) Переложите проблемы пользователей на них самих.
 
 
   DrZombi
 
34 - 08.01.18 - 14:52
(32) Пользователь не будет слишком долго писать, если его обучить к работе с тонким клиентом.
Научится выходить из режима редактирования.
   vadymdymdym
 
35 - 08.01.18 - 14:56
(33) Как вариант можно))
(34) Будет. Они любят это дело)). Поле многострочное. Более того, у них есть выбор, писать в текстовом поле или в форматированном документе, где они вообще зависнут надолго))

Итак, четвертая идея - отключать обработчик ожидания в момент активизации поля ввода))
   Волшебник
 
Модератор
36 - 08.01.18 - 15:06
(35) Совсем его отключи и будет тебе щастье
   Волшебник
 
Модератор
37 - 08.01.18 - 15:07
— Доктор, когда я делаю вот так, мне больно.
— Не делайте так...
   vadymdymdym
 
38 - 08.01.18 - 15:09
(36) Я понял Вас. Вы это уже предлагали в (1). Ну... совсем отключить... нежелательно бы. Мне тогда надо что-то заказчику в альтернативу предложить, ибо задание было такое, чтоб... в реальном времени все было. Вот кнопка "Обновить" - в-принципе, неплохая альтернатива. Достаточно аргументированная. Если заказчик согласиться - можно будет последовать Вашему совету
   vadymdymdym
 
39 - 08.01.18 - 15:11
согласится*. Совсем с русским языком проблемы начались
   Волшебник
 
Модератор
40 - 08.01.18 - 15:35
(39) Вместо дефиса ещё нужна запятая. Не парься на тему русского языка. У тебя с 1С проблемы.
   vadymdymdym
 
41 - 08.01.18 - 15:44
(40) Ну тут спорный вопрос. Я там не дефис, а тире вставлял. Обновить - альтернатива. При таком формате, подлежащее - сказуемое ставится тире, насколько я помню. Хотя... действительно неважно. Что у меня с 1С-то не так?). Я ж не виноват, что заказчик так требует). 1С вообще не предназначена для того, что он просит, если вдуматься. Но... выкручиваться как-то надо)). Вот и пришлось извращаться))
   Волшебник
 
Модератор
42 - 08.01.18 - 16:03
(41) Ты виноват, что не объяснил заказчику цену и последствия его решения.
   vadymdymdym
 
43 - 08.01.18 - 16:06
(42) Тут не поспоришь(((
   Волшебник
 
Модератор
44 - 08.01.18 - 16:07
(43) Покайся и будет тебе щастье! Отключи обработчик ожидания! Сделай добро людям!



Список тем форума
Рекламное место пустует Рекламное место пустует
Здесь можно задать вопрос "Как сделать?" и получить кучу ответов, что тебе это делать не надо. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует