Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
14 Дек 2017, 22:15
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Обновление формы по событию, методы Оповестить() + ОбработкаОповещения()  (Прочитано 19846 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
Коллеги!
Стоит такая задача: есть некая форма (форма задач пользователя), которая должна обновляться при определенных событиях. Я это реализовал связкой методов Оповестить() при возникновении события и ОбработкаОповещения() в форме. Все это прекрасно работает внутри одного сеанса, но этого мало: нужно, чтобы оповещение отправлялось всем открытым формам во всех сеансах (буквально, задача такая: при выполнении задач одним пользователем, состав задач других пользователей может измениться, о чем они должны узнать – форма задач должна обновиться).
Что делать? Как заставить эту штуку работать для всех сеансов? Если это невозможно, какие есть иные пути решения?
Клиент «толстый» - обычное приложение.


Оффлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6558
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
Пиши флаг изменения в константу или в регистр сведений и читай периодически.

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
ПодключитьОбработчикОжидания() правильно я понял? это не даст дополнительной нагрузки на работу системы и как следствие - тормозов? я надеялся все же обойтись без обработчика ожидания - хотелось бы, чтобы обновление происходило в режиме "онлайн" именно при возникновении событий, без запускающейся с каким-то интервалом "простукивалки". Во-первых, "простукивалка" будет работать с задержкой (если конечно не сделать проверку каждую секунду), во вторых я боюсь, это приведет к "тормозам".

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
Итак, еще раз суть проблемы коротко:
Нужно обновлять форму во всех открытых сеансах. Обновление формы – это запрос. Выполнение запроса по расписанию (допустим, каждые 5 секунд) может привести к тормозам (убедиться в этом можно только на опыте), поэтому хочется найти другое решение: чтобы обновление ВО ВСЕХ СЕАНСАХ, где открыта форма задач, происходило по событию, а не по расписанию раз в 5 секнунд.

Оффлайн sadovod

  • ****
  • Сообщений: 289
  • РЕПУТАЦИЯ: 53
  • КПД: 18%
  • Регистрация: 2012-02-19
  • Сайт: 
  • Профессия: Программист 1С
На каком-то ресурсе, убей не помню на каком (м.б. на инфостарте?), читал ветку по этой проблеме. Народ пришел к выводу, что штатными средствами 1С - никак, нужен какой-нибудь сторонний софт. Ну и по ходу дела там предлагались и net send, и "WinSent Messenger" и чуть ли не WinPopUp :)

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
решение найдено. без "простукивалки" правда не обойтись, но можно облегчить задачу, не выполняя весь запрос, в общем вариация, решения предложенного MuI_I_Ika, только доработанная (в предложенном им решении нет ответа на 1 важный вопрос: если будет константа - когда надо снимать флаг обратно в ложь). в общем чуть позже опишу как сделал. пока занят...

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Определенное Событие на каждом клиенте пишет в регистр сведений что нужно обновить задачи (Наверное можно даже указывать для какого пользователя) "простукивалка" опрашивает этот РС на каждом клиенте с отбором по пользователю видит что значение появилось обновляет список задач - далее - значение либо удаляет (что наверное как раз затормозит это выполнение...) либо меняет значение для пользователя на противоположный (типа БУЛЕВО или 1-0)

Как то так?
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
почти. идея была озвучена MuI_I_Ika, но там не хватало одного - самого главного - идентификатора соединения. это была главная проблема: как понять, что флаг относится к текущему соединению. один добрый человек за пределами форума подсказал: есть методы глобального контекста ПолучитьСоединенияИнформационнойБазы() и НомерСеансаИнформационнойБазы(). первый получает список всех открытых соединений, второй - идентификатор текущего соединения. вот собственно через эту связку: по событию регистр событий очищается (с отбором по нужному типу событий), в регистр пишутся все идентификаторы соединений, затем простукивалка лезет в регистр, получает список всех соединений и если находит там себя (идентификатор текущего соединения) - выполняет обновление формы по нужным событиям (там несколько вариантов), после чего удаляет запись о необходимости обновления из регистра (чтобы они там не плодились, хотя плодиться они все равно будут, поэтому наверно нужно будет регламентное задание, которое по ночам будет регистр чистить).


Теги:
 

Не работает метод Сдвинуть() по отношению к программно добавляемой колонке1С:Предприятие 8.3 (8.3.10.2561) Управление производственным предприятием, редакция 1.4 Приветствую, я добавляю программно свою колонку в методе ПриОткрытии() модуля формы, вот так

Автор InsiderРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 290
Последний ответ 21 Сен 2017, 10:33
от Insider
Редактирование формы "Настройки пользователя".

Автор t955938Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 4814
Последний ответ 03 Авг 2011, 11:45
от t955938
получаю значение реквизита формы, дает значение 0

Автор mikel10Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 3409
Последний ответ 12 Июл 2013, 15:35
от mikel10
Как обратиться к функции модуля формы из модуля Менеджера?

Автор TreeDogNightРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 4991
Последний ответ 10 Июл 2014, 14:05
от cska-fanat-kz
Настройка формы "Заполнение товаров"

Автор ЖаннаРаздел Пользователям "1С - Предприятие 8"

Ответов: 2
Просмотров: 584
Последний ответ 10 Мар 2017, 21:00
от Жанна

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
184 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
50 Сообщений
andron81_81
40 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
29 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 332
  • Точка Скрытых: 0
  • Точка Пользователей: 8
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal