Сервер-клиентский вызов

16.02.18

Разработка - Инструментарий разработчика

Передача управления с сервера на клиента с использованием системы взаимодействия. На примере отображения индикатора в управляемой форме.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Сервер- клиентский вызов:
.epf 7,12Kb
23 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Для отображения индикатора в управляемой форме самый распространенный способ (ИМХО) такой-

запуск фонового задания ( или без него :) ), которое помещает данные во временное хранилище , а на клиенте запуск обработчика ожидания , которое читает это значение и отображает индикатор.

 

Платформа 1С развивается, появилась система взаимодействия  Ссылка на Зазеркалье.

В версии 8.3.11

Реализована возможность отправлять сообщения со стороны сервера «1С:Предприятия» на сторону клиентского приложения. Передача сообщений использует в качестве транспорта настроенную систему взаимодействия.  Ссылка на источник

Я развернул у себя сервер взаимодействия и реализовал вывод индикатора с помощью этого нового функционала сервера взаимодействия.

 

Идея такая:

 

  • Создается служебное обсуждение
  • Создается подписка на новые сообщения в этом обсуждении - эта обработка и будет отображать индикатор на стороне клиента 
  • На сервере выполняется обработка , которая создает сообщения в служебном обсуждении . Новые сообщения обрабатываются подпиской

Это все, что нужно.

В прилагаемой обработке - реализация этой идеи.

 

Форма обработки выглядит так:

Кнопка "Информирование клиента " запускает код, в котором происходит

  • поиск служебного обсуждения
  • подключение обработчика новых сообщений этого служебного сообщения
  • запуск выполнения на сервере - где формируются новые сообщения для обработчика.  Ниже текст процедуры
    
    &НаКлиенте
    Процедура ИнформированиеКлиента(Команда)
                
         ИдентификаторОбсуждения=ПолучитьСлужебноеСообщение();  
                 //Получаю идентификатор служебного сообщения
                
         Если ИдентификаторОбсуждения<>Неопределено Тогда
                            
             Попытка
                 ОповещениеКлиента=Новый ОписаниеОповещения("ОбработкаСообщенийССервера",ЭтотОбъект); 
                          //Эта обработка будет отображать индикатор на клиенте
                 СистемаВзаимодействия.НачатьПодключениеОбработчикаНовыхСообщений(,
                                 ИдентификаторОбсуждения,
                                  ОповещениеКлиента); 
                //Здесь я подключаю обработчик новых сообщений, получаемых от сервера взаимодействия
                                    
                 Элементы.ЗначениеИндикатора.Видимость=Истина; 
                          //Включаю видимость индикатора
                                     
                 ВызовПроцедурыНаСервере(ИдентификаторОбсуждения); 
                          //Ухожу на сервер
                                       
             Исключение
                 Сообщить(ОписаниеОшибки());
             КонецПопытки;
         Иначе
              Сообщить("Идентификтор обсуждения на клиенте не определен");
         КонецЕсли;
                
    КонецПроцедуры
    
    
    

    Ниже текст процедуры , которая выполняется на сервере - в процедуре создаются сообщения служебного обсуждения

    &НаСервере
    Процедура ВызовПроцедурыНаСервере(ИдентификаторОбсуждения)
                
          Если ИдентификаторОбсуждения<>Неопределено Тогда
                            
             Для шаг=1 по 100 цикл
                                       
                 пСообщение=СистемаВзаимодействия.СоздатьСообщение(ИдентификаторОбсуждения);
                 пСообщение.Текст  = шаг;
                 пСообщение.Данные = шаг;
                 пСообщение.Записать();
                                   
             КонецЦикла;
                            
          Иначе
             Сообщить("Идентификтор сообщения не определен");
          КонецЕсли;      
                
    КонецПроцедуры
    

    Созданные на сервере сообщения отображаются на клиенте процедурой , текст которой ниже

    &НаКлиенте
    Процедура ОбработкаСообщенийССервера(Сообщение,ДополнительныеПараметры) Экспорт
                
                Обработано=Число(Сообщение.Данные);
                ОбщееКоличество=100;
                ЗначениеИндикатора=Цел(Обработано/ОбщееКоличество*100);
                
                Элементы.ЗначениеИндикатора.Заголовок="Обработка данных ( "+Строка(Обработано)+" из "+ Строка(ОбщееКоличество)+" )"
                
    КонецПроцедуры
    

     

 

Логотип взят отсюда 

Вступайте в нашу телеграмм-группу Инфостарт

Система взаимодействия сервер- клиентский вызов отображение индикатора в управляемой форме

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    63496    332    162    

297

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    251073    1392    421    

1145

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

15250 руб.

25.08.2025    47768    99    27    

111

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22570 руб.

06.10.2023    36503    96    40    

116

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    24283    92    42    

101

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9500 руб.

17.05.2024    51096    180    63    

209

SALE! %

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

5000 4000 руб.

25.02.2026    2487    12    1    

13
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. top_1c 4027 16.02.18 17:01 Сейчас в теме
Забавная идея, понравилась, но имхо костыль))

А зачем было брать логотип у Курсов1С?)
16. TreeDogNight 22 13.11.19 14:14 Сейчас в теме
(1) В чем именно вы увидели костыль?
2. ВикторП 357 16.02.18 17:09 Сейчас в теме
Костыль или нет- посмотрим как эта система будет развиваться.
Пока я заметил там несколько ошибок - удивительно было видеть счетчик равный 500 в цикле до 100 :(

Никакой другой рисунок не нашел, поэтому взял у Курсов.
3. Yashazz 4905 17.02.18 13:17 Сейчас в теме
Ну идея-то была очевидна с момента, ещё как опубликовали в Зазеркалье анонс этого "взаимодействия". Подозреваю, сама 1С вскоре озаботится нормальными прогресс-барами, их за это шпыняют постоянно)
TreeDogNight; DrAku1a; top_1c; +3 Ответить
5. ВикторП 357 17.02.18 20:10 Сейчас в теме
(3) отображение индикатора выбрано из-за его наглядности
6. Yashazz 4905 17.02.18 22:56 Сейчас в теме
(5) Понимаю. Оно напрашивалось, сам бы делал так же) А вообще bulpi прав, идейно это всё страхолюдно выглядит...
7. ВикторП 357 18.02.18 08:29 Сейчас в теме
(6) у меня другое мнение про идею :).

Когда у вас есть развернутый сервер взаимодействия, то его можно использовать для возврата с сервера - я написал про это.
TreeDogNight; 7OH; +2 Ответить
9. Infactum 319 19.02.18 08:46 Сейчас в теме
(3) В УНФ уже давно видел закомментированный код, реализующий работу прогресс-баров через систему взаимодействия. Кажется еще до релиза 8.3.11 было.
10. ВикторП 357 19.02.18 09:23 Сейчас в теме
(9) Интересно, кинете код? Потому что возможность с сообщениями на сервере появилась в 8.3.11 - я привожу цитату в статье.
Видимо, по другому реализовали, раз до 8.3.11
11. Infactum 319 19.02.18 09:26 Сейчас в теме
(10) Код искать точно не буду. Тут либо поверьте на слово, либо нет :)
Но возможность использовать систему взаимодействия была в 8.3.10.
Другие дело, что на тот момент её нельзя было развернуть у себя. Только сервер 1cDialog.com
https://its.1c.ru/db/v8310doc#bookmark:dev:TI000001900
12. ВикторП 357 19.02.18 09:39 Сейчас в теме
(11) Возможность использования есть в 8.3.10. Интересно узнать как было реализовано без сообщений - вопрос про это
13. Infactum 319 19.02.18 09:47 Сейчас в теме
(12) Как я уже говорил, код был закомментирован. То есть не работал. Детали я не помню.
Очевидно, что принципиально другой реализации тут быть не может. Пушем с сервера приходит информация о прогрессе.. все так же, как в других языках/платформах.
14. ВикторП 357 19.02.18 09:55 Сейчас в теме
17. TreeDogNight 22 13.11.19 14:17 Сейчас в теме
(13) В платформах 8.3.10 - 8.3.11 насколько я помню ещё не было возможности подписываться на оповещение о новых сообщениях.
4. bulpi 218 17.02.18 14:43 Сейчас в теме
Как обычно, через Ж. Но это упрек не автору, автору плюс.
uri1978; pm74; top_1c; +3 Ответить
8. ВикторП 357 18.02.18 18:55 Сейчас в теме
(4) есть идея на эту тему ?
15. 7OH 70 06.05.18 23:42 Сейчас в теме
Переделал для наглядности себе на 2 обработки: клиент и сервер (чтобы ещё и все пользователи могли сообщение увидеть).
А то пример не совсем информативный - цикл то крутится тут же и не даёт пользоваться программой до окончания цикла - так оно и сейчас может ))).
---
Плюс есть ошибка небольшая в начале работы.
У меня база была не зарегистрирована - но открыть обработку дало.
Я не закрывая зарегил и при попытке нажатия кнопки получил ошибку.
Для отправки сообщения требуется регистрация/авторизация