Есть обработка с полями для ввода. Во время того, как открыта обработка, выполняется фоновое задание на клиенте запущенное с помощью ПодключитьОбработчикОжидания.
Так вот когда я ввожу текст в поле ввода в обработке и в фоне выполнятся начинает мой обработчик ожидание, то текст в поле ввода пропадает. Как я понял, то очистка текста идет из за серверного вызова в обработчике ожидания. Как мне выполнить свой код так, что бы не пропали данные не сохраненные в БД, то есть просто введенные пользователем на форме? При всем этом я в функции ФоновоеОповещениеОНовыхСообщенияхСервер() работаю с реквизитом формы и без контекста получается передать ее не могу.
Пожалуй вопрос банальный и тупой, но учиться нужно ведь :)
ПодключитьОбработчикОжидания("ФоновоеОповещениеОНовыхСообщениях",10);
&НаКлиенте
Процедура ФоновоеОповещениеОНовыхСообщениях()
--//--
ФоновоеОповещениеОНовыхСообщенияхСервер();
--//--
КонецПроцедуры
&НаСервере
Функция ФоновоеОповещениеОНовыхСообщенияхСервер()
--//--
КонецФункции;
ПоказатьТак вот когда я ввожу текст в поле ввода в обработке и в фоне выполнятся начинает мой обработчик ожидание, то текст в поле ввода пропадает. Как я понял, то очистка текста идет из за серверного вызова в обработчике ожидания. Как мне выполнить свой код так, что бы не пропали данные не сохраненные в БД, то есть просто введенные пользователем на форме? При всем этом я в функции ФоновоеОповещениеОНовыхСообщенияхСервер() работаю с реквизитом формы и без контекста получается передать ее не могу.
Пожалуй вопрос банальный и тупой, но учиться нужно ведь :)
По теме из базы знаний
Найденные решения
(9) Полагаю потому, что пока Вы вводите текст, реквизит его еще не хранит. Грубо говоря: не было смены фокуса ввода и нажатия клавиши "Enter", не было события "ПриИзменении", следовательно не было и сохранения введенного текста в реквизите формы.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Скиньте текст "ФоновоеОповещениеОНовыхСообщенияхСервер".
Возможно в данной процедуре идёт изменение формы, что вызывает её "пересоздание".
Попробуйте закомментировать текст в "ФоновоеОповещениеОНовыхСообщенияхСервер", будет ли стираться вводимый тест.
Возможно в данной процедуре идёт изменение формы, что вызывает её "пересоздание".
Попробуйте закомментировать текст в "ФоновоеОповещениеОНовыхСообщенияхСервер", будет ли стираться вводимый тест.
(2) При вызове функции идет обновление формы клиента, а так как поле, в котором введены данные не передавалось на сервер, то оно просто очищается и все.
Вот я и спрашиваю как сделать что бы не очищалось и вызвать сервер :)
&НаСервере
ФоновоеОповещениеОНовыхСообщенияхСервер()
Вот я и спрашиваю как сделать что бы не очищалось и вызвать сервер :)
(8) Как я понимаю, то при вызове серверной контекстной процедуры передается на сервер объект формы со всеми ее заполненными реквизитами и т.д. Почему тогда реквизит "ТекстСообщения" наполнення в данном случае "лялялятополя" не передается на сервер?
Прикрепленные файлы:
(9) Полагаю потому, что пока Вы вводите текст, реквизит его еще не хранит. Грубо говоря: не было смены фокуса ввода и нажатия клавиши "Enter", не было события "ПриИзменении", следовательно не было и сохранения введенного текста в реквизите формы.
(8) Вот НаКлиенте содержимое элемента и НаСервере.
НаСервере текст редактирования недоступен получается. В итоге сервер обратно возвращает форму клиенту, а поскольку он не получил текстредактирования, то возвращается пустая строка и по этому поле очищается. Выходит так что перед серверным контекстным вызовом нужно насильно перекинуть текстредактирования с формы в реквизит формы, а после серверного вызова вытянуть его с реквизита формы и отобразить на форме в поле ввода. Я правильно мыслю?)
НаСервере текст редактирования недоступен получается. В итоге сервер обратно возвращает форму клиенту, а поскольку он не получил текстредактирования, то возвращается пустая строка и по этому поле очищается. Выходит так что перед серверным контекстным вызовом нужно насильно перекинуть текстредактирования с формы в реквизит формы, а после серверного вызова вытянуть его с реквизита формы и отобразить на форме в поле ввода. Я правильно мыслю?)
Прикрепленные файлы:
(3)
Вот так уже идет очистка (скрин формы обработки выше):
Вот так уже идет очистка (скрин формы обработки выше):
&НаКлиенте
Процедура ВключитьМониторингНовыхСообщений()
ПодключитьОбработчикОжидания("ФоновоеОповещениеОНовыхСообщениях",10);
КонецПроцедуры
&НаКлиенте
Процедура ФоновоеОповещениеОНовыхСообщениях()
МассивЗаявокСОбновлениями=ФоновоеОповещениеОНовыхСообщенияхС ервер();
КонецПроцедуры
&НаСервере
Функция ФоновоеОповещениеОНовыхСообщенияхСервер()
МассивЗаявокСОбновлениями=Новый Массив;
Возврат МассивЗаявокСОбновлениями;
КонецФункции
Показать
(3) У меня есть реквизит формы, который хранит все идентификаторы диалогов и количество сообщений в каждом из диалогов. Данный реквизит заполняется при открытии обработки.
Фоновое задание проверяет количество сообщений по идентификаторам заявок на сервере и в случае, если по какому то идентификатору сообщений стало больше - добавляет ее идентификатор в массив и передает данный массив клиенту. В дальнейшем пользователю вылазит всплывающее уведомление что по такому-то идентификатору поступили новые сообщения.
Фоновое задание проверяет количество сообщений по идентификаторам заявок на сервере и в случае, если по какому то идентификатору сообщений стало больше - добавляет ее идентификатор в массив и передает данный массив клиенту. В дальнейшем пользователю вылазит всплывающее уведомление что по такому-то идентификатору поступили новые сообщения.
Куда проще не тащить контекст на сервер, чем прыгать в противогазе в гамаке, стоя на лыжах с немаленьким шансом получить отличающееся поведение в каком-нибудь веб-клиенте.
С табличными частями сам разберешся
&НаКлиенте
Процедура ФоновоеОповещениеОНовыхСообщениях()
....
ЗначенияРеквизитов = Новый Структура(...);
ЗаполнитьЗначенияСвойств(ЗначенияРеквизитов, ЭтотОбъект);
Результат = ФоновоеОповещениеОНовыхСообщенияхСервер(Данные);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Результат);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ФоновоеОповещениеОНовыхСообщенияхСервер()
...
КонецФункции
ПоказатьС табличными частями сам разберешся
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот