Очистка введенных данных на форме

1. SantiouS 12.03.19 11:17 Сейчас в теме
Есть обработка с полями для ввода. Во время того, как открыта обработка, выполняется фоновое задание на клиенте запущенное с помощью ПодключитьОбработчикОжидания.
ПодключитьОбработчикОжидания("ФоновоеОповещениеОНовыхСообщениях",10); 


&НаКлиенте
Процедура ФоновоеОповещениеОНовыхСообщениях()
         --//--	
        ФоновоеОповещениеОНовыхСообщенияхСервер();
	--//--
КонецПроцедуры

&НаСервере
Функция ФоновоеОповещениеОНовыхСообщенияхСервер()
         --//--
КонецФункции;
Показать


Так вот когда я ввожу текст в поле ввода в обработке и в фоне выполнятся начинает мой обработчик ожидание, то текст в поле ввода пропадает. Как я понял, то очистка текста идет из за серверного вызова в обработчике ожидания. Как мне выполнить свой код так, что бы не пропали данные не сохраненные в БД, то есть просто введенные пользователем на форме? При всем этом я в функции ФоновоеОповещениеОНовыхСообщенияхСервер() работаю с реквизитом формы и без контекста получается передать ее не могу.
Пожалуй вопрос банальный и тупой, но учиться нужно ведь :)
По теме из базы знаний
Найденные решения
10. dhurricane 12.03.19 11:57 Сейчас в теме
(9) Полагаю потому, что пока Вы вводите текст, реквизит его еще не хранит. Грубо говоря: не было смены фокуса ввода и нажатия клавиши "Enter", не было события "ПриИзменении", следовательно не было и сохранения введенного текста в реквизите формы.
SagittariusA; SantiouS; alex-l19041; +3 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sakhatyr_Vitaliy 12.03.19 11:23 Сейчас в теме
(1) Скиньте текст "ФоновоеОповещениеОНовыхСообщенияхСервер".
Возможно в данной процедуре идёт изменение формы, что вызывает её "пересоздание".
Попробуйте закомментировать текст в "ФоновоеОповещениеОНовыхСообщенияхСервер", будет ли стираться вводимый тест.
alex-l19041; +1 Ответить
4. SantiouS 12.03.19 11:27 Сейчас в теме
(2) Не стирается текст, если не выполнять серверный вызов.
Если я делаю серверный вызов, то форма автоматически чистится, а именно текст введенный вот здесь:
Прикрепленные файлы:
7. SantiouS 12.03.19 11:37 Сейчас в теме
(2) При вызове функции идет обновление формы клиента, а так как поле, в котором введены данные не передавалось на сервер, то оно просто очищается и все.
&НаСервере
ФоновоеОповещениеОНовыхСообщенияхСервер()

Вот я и спрашиваю как сделать что бы не очищалось и вызвать сервер :)
8. dhurricane 12.03.19 11:39 Сейчас в теме
(1) Попробуйте отказаться от контекстного вызова сервера в пользу внеконтекстного.
SantiouS; +1 Ответить
9. SantiouS 12.03.19 11:48 Сейчас в теме
(8) Как я понимаю, то при вызове серверной контекстной процедуры передается на сервер объект формы со всеми ее заполненными реквизитами и т.д. Почему тогда реквизит "ТекстСообщения" наполнення в данном случае "лялялятополя" не передается на сервер?
Прикрепленные файлы:
10. dhurricane 12.03.19 11:57 Сейчас в теме
(9) Полагаю потому, что пока Вы вводите текст, реквизит его еще не хранит. Грубо говоря: не было смены фокуса ввода и нажатия клавиши "Enter", не было события "ПриИзменении", следовательно не было и сохранения введенного текста в реквизите формы.
SagittariusA; SantiouS; alex-l19041; +3 Ответить
12. SantiouS 12.03.19 11:59 Сейчас в теме
(10) Получается нужно делать так, как я описал выше, а именно принудительно закинуть текст в реквизит в случае контекстных вызовов сервера?
11. SantiouS 12.03.19 11:57 Сейчас в теме
(8) Вот НаКлиенте содержимое элемента и НаСервере.
НаСервере текст редактирования недоступен получается. В итоге сервер обратно возвращает форму клиенту, а поскольку он не получил текстредактирования, то возвращается пустая строка и по этому поле очищается. Выходит так что перед серверным контекстным вызовом нужно насильно перекинуть текстредактирования с формы в реквизит формы, а после серверного вызова вытянуть его с реквизита формы и отобразить на форме в поле ввода. Я правильно мыслю?)
Прикрепленные файлы:
13. dhurricane 12.03.19 11:59 Сейчас в теме
(11) Наверное так, если таки не выходит использовать безконтекстный вызов сервера.
SantiouS; +1 Ответить
14. SantiouS 12.03.19 12:01 Сейчас в теме
(13) Понял. Спасибо Вам большое. Буду думать как переписать вызов сервера на безконтекстный.
Вы очень мне помогли в понимании логики работы в данной ситуации. Добра Вам :)
3. soft_wind 12.03.19 11:24 Сейчас в теме
так разнесите поля
отдельно для ввода пользователем
отдельно для фоновых сообщений
(вообще не очень понятно что у вас почему пропадает, наверно весь код нужен)
5. SantiouS 12.03.19 11:29 Сейчас в теме
(3)
Вот так уже идет очистка (скрин формы обработки выше):
&НаКлиенте
Процедура ВключитьМониторингНовыхСообщений()
	ПодключитьОбработчикОжидания("ФоновоеОповещениеОНовыхСообщениях",10);	
КонецПроцедуры

&НаКлиенте
Процедура ФоновоеОповещениеОНовыхСообщениях()
	МассивЗаявокСОбновлениями=ФоновоеОповещениеОНовыхСообщенияхС­ервер();
КонецПроцедуры

&НаСервере
Функция ФоновоеОповещениеОНовыхСообщенияхСервер()
	МассивЗаявокСОбновлениями=Новый Массив;
	Возврат МассивЗаявокСОбновлениями;
КонецФункции
Показать
6. SantiouS 12.03.19 11:32 Сейчас в теме
(3) У меня есть реквизит формы, который хранит все идентификаторы диалогов и количество сообщений в каждом из диалогов. Данный реквизит заполняется при открытии обработки.
Фоновое задание проверяет количество сообщений по идентификаторам заявок на сервере и в случае, если по какому то идентификатору сообщений стало больше - добавляет ее идентификатор в массив и передает данный массив клиенту. В дальнейшем пользователю вылазит всплывающее уведомление что по такому-то идентификатору поступили новые сообщения.
15. alsion2 184 30.03.23 22:06 Сейчас в теме
Мне помогло в этой ситуации отщелкнуть галку "Сохранение"
16. NewNick 21.02.24 16:56 Сейчас в теме
(6) Столкнулся с такой же проблемой. У поля ввода есть свойство "ОбновлениеТекстаРедактирования". Поставить его в "Не использовать" и очистка поля пропадет.
17. Gaster 17.04.24 17:25 Сейчас в теме
(16) Очистка поля пропадает, но появляется другая проблема: при вводе нового значения оно не сохраняется и на сервер не передаётся...
18. Gaster 17.04.24 18:04 Сейчас в теме
(16)а нет, вроде нормально отрабатывает. Спасибо!
19. Gaster 18.04.24 14:26 Сейчас в теме
(16)Всё-таки когда надо программно изменить этот реквизит, то он не обновляется. Этот метод подходит в случае если реквизит изменяется исключительно только при интерактивном вводе.
20. Gaster 22.04.24 14:20 Сейчас в теме
(16)Установил в режим "При изменении значения"
21. user1880116 23.04.24 16:39 Сейчас в теме
Куда проще не тащить контекст на сервер, чем прыгать в противогазе в гамаке, стоя на лыжах с немаленьким шансом получить отличающееся поведение в каком-нибудь веб-клиенте.
&НаКлиенте
Процедура ФоновоеОповещениеОНовыхСообщениях()
    ....
    ЗначенияРеквизитов = Новый Структура(...);
    ЗаполнитьЗначенияСвойств(ЗначенияРеквизитов, ЭтотОбъект);

    Результат = ФоновоеОповещениеОНовыхСообщенияхСервер(Данные);
    ЗаполнитьЗначенияСвойств(ЭтотОбъект, Результат);

КонецПроцедуры

&НаСервереБезКонтекста
Функция ФоновоеОповещениеОНовыхСообщенияхСервер()
    ...
КонецФункции
Показать

С табличными частями сам разберешся
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот