Имя: Пароль:
1C
1С v8
Вывод сообщений при 100% загруженности
,
0 Cyrix
 
25.02.21
10:44
Всем привет! Подскажите такую штуку: Управляемое приложение. Работает цикл получения номенклатуры (объект), меняю реквизит и записываю. В цикле предусмотрено сообщение о текущей номенклатуре Сообщить(ОбъектСпр); Пока цикл работает 1С подвисает, мышка - вращающийся кружочек и на этом всё. После завершения цикла 1С-ку отпускает и в сообщениях появляется список всей обработанной номенклатуры. А как сделать чтобы я в мог видеть текущую обрабатываемою номенклатуру в цикле, а не потом, когда уже не надо? Может в цикле что-то нужно прописать, чтобы 1С приостановилась, вывела сообщение и потом продолжила цикл? В обычных формах всё работало.
1 ДенисЧ
 
25.02.21
10:48
А потому, что у тебя обработка идёт на сервере. И пока оттедова не вернётся управление - ты ничего не увидишь.
Изучай бспшные ДлительныеОперации и у тебя будет шансик.
2 dka80
 
25.02.21
10:49
Потому что ты "Сообщить" делаешь на сервере, а по факту сообщения выводятся на клиенте. Как вариант: формируй список обрабатываемых объектов на сервере, возвращай его на клиент, далее с клиента запускаешь обработку по одному объекту и сообщаешь с клиента
3 ДенисЧ
 
25.02.21
10:54
(2) Плохой вариант...
4 Kassern
 
25.02.21
10:57
5 Shur1cIT
 
25.02.21
11:07
(0) выше уже сказали причину,
сервер не общается с клиентом постоянно, а только когда закончит выполнять процедуру функцию на сервере в конце вызова, тогда он и скидывает на клиент все сразу что он в сообщить накидал.
можно через временное хранилище.
когда грузил из одной базы в другую писал состояние в HTML  документ (перезаписывал текст) для каждого потока даже строку состояния добавлял. очень удобно :-)
6 Cyrix
 
25.02.21
11:19
Спасибо за ответы! Пошёл курить ДлительныеОперации.
7 butterbean
 
25.02.21
11:38
Выполнение перенести в фоновое задание и оттуда периодически читать сообщения
8 Бычье сердце
 
25.02.21
12:02
(0)
Цикл на клиенте. В цикле в состояние выводишь текущую позицию. Отправляешь номенклатуру на сервер через параметр с использованием &НаСервереБезКонтекста, обрабатываешь номенклатуру.
Данный способ также будет тебе кружочек отображать, заблокирует всю работу.

А то что советовали коллеги через длительные операции - лучше.
9 ДенисЧ
 
25.02.21
12:07
(8) Рррррррастрелять.
10 Вафель
 
25.02.21
12:10
либо в фоне
http://catalog.mista.ru/public/943888/
либо на клиенте
http://catalog.mista.ru/public/76309/
11 Бычье сердце
 
25.02.21
12:15
(9)
Лишь бы расстрелять))))))
в (10) также советуют. Удалять?))
12 ДенисЧ
 
25.02.21
12:45
(11) Я в (1) уже написал. А вы всё свои циклы на клиенте пихаете...
И велосипеды с квадратными (спасибо, что не треугольными) колёсами изобретаете...
13 программистище
 
25.02.21
13:24
эту проблему призвана решить система взаимодействия
14 Cyrix
 
25.02.21
13:36
(13) а поподробнее?
15 Бычье сердце
 
25.02.21
13:47
(12)
Поспорил бы
16 timurhv
 
25.02.21
13:59
(8) как замедлить работу в 10 раз.
17 ДенисЧ
 
25.02.21
14:00
(15) Спорь. Я что, против?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший