Имя: Пароль:
1C
1С v8
Сообщать с процедуры на сервере прогресс на клиент
0 Double_Medved
 
31.01.13
11:07
Подскажите пожалуйста, мне нужно перезаписать регистр сведений, это происходит на сервере, а как мне можно попробовать передавать на клиент и выводить сообщение о прогрессе - о том, сколько записей перезаписалось?
Код такой:

&НаКлиенте
Процедура Обработать(Команда)
   Обработ();    
КонецПроцедуры

&НаСервере
Процедура Обработ()
   НаборЗаписей = РегистрыСведений.КартыЛояльностиСведения.СоздатьНаборЗаписей();
       НаборЗаписей.Прочитать();
       Для Каждого Запись из НаборЗаписей Цикл
               СуммаНакоплПоКарте = Запись.СуммаНакопления;
               СкидПоКарте        = Запись.ПроцентСкидки;
               Карта = Запись.КартаЛояльности;
               
               МенеджерЗаписи = РегистрыСведений.КартыЛояльностиСведения.СоздатьМенеджерЗаписи();
               МенеджерЗаписи.КартаЛояльности = Карта;
               МенеджерЗаписи.ПроцентСкидки = СкидПоКарте;
               МенеджерЗаписи.СуммаНакопления = СуммаНакоплПоКарте;
               Попытка    
                   МенеджерЗаписи.Записать();
               Исключение
                   Сообщить(Описаниеошибки());
               КонецПопытки;
       КонецЦикла;
КонецПроцедуры
1 Double_Medved
 
31.01.13
11:09
То есть как можно передавать на клиент какое-нибудь число? Может есть какая-нибудь функция типа СообщитьНаКлиенте()?
2 Бешеная Нога
 
31.01.13
11:09
нет.
3 Double_Medved
 
31.01.13
11:11
Вот блин
4 mikecool
 
31.01.13
11:11
обрабатывай пачками
5 Double_Medved
 
31.01.13
11:14
А НаборЗаписей это будет тут таблица значений? Тогда можно будет обходить ее по номеру? Например обработать 100 номеров, вернуть номер последнего на клиент, сообщить, потом передать на сервер последний номер и т.д?
6 acsent
 
31.01.13
11:15
а чем суть процедуры то?
7 Defender aka LINN
 
31.01.13
11:15
(5) И нафига? Чтобы пользователь себя спокойнее чувствовал?
8 Double_Medved
 
31.01.13
11:28
Нафига? Просто там надо перезаписать регистр, чтобы он попал в обмен, потому что раньше не был включен в план обмена, а сообщать количество - чтобы я знал сколько примерно осталось и был уверен что ничего не зависло просто
9 Double_Medved
 
31.01.13
11:29
Вот такой скорокод получился
&НаКлиенте
Процедура Обработать(Команда)
   Н = 0;
   Пока Н<= 999999999 Цикл
       Н = Обработ(Н);
       Сообщить(Н);
   
   КонецЦикла;
КонецПроцедуры

&НаСервере
Функция Обработ(Номер)
   НаборЗаписей = РегистрыСведений.КартыЛояльностиСведения.СоздатьНаборЗаписей();
       НаборЗаписей.Прочитать();
       Колич = НаборЗаписей.Количество()-1;
       н =  Номер;
       КолН = Н + 3;
       Пока  (н<=КолН) И (н<=Колич) Цикл
           МенеджерЗаписи = РегистрыСведений.КартыЛояльностиСведения.СоздатьМенеджерЗаписи();
           МенеджерЗаписи.КартаЛояльности = НаборЗаписей[н].КартаЛояльности;
           МенеджерЗаписи.ПроцентСкидки = НаборЗаписей[н].ПроцентСкидки;
           МенеджерЗаписи.СуммаНакопления = НаборЗаписей[н].СуммаНакопления;
               Попытка    
                   МенеджерЗаписи.Записать();
               Исключение
                   Сообщить(Описаниеошибки());
               КонецПопытки;
           н = н + 1;
       КонецЦикла;
       Если Н >= Колич  Тогда
       
           Н = 999999999;
       
       КонецЕсли;
       Возврат Н;
КонецФункции;
10 Double_Medved
 
31.01.13
11:31
Проблема - просто при Сообщить() быстро забивается это боковое окно и выводятся сообщения уже вне поля зрения блин, а промотать вниз не дает, то типа занят
11 Evrepid
 
31.01.13
12:07
Глобальные переменные и параметры сеанса не рулят?
12 Defender aka LINN
 
31.01.13
12:20
(11) Хватит давать советы космического масштаба и космической же глупости.
(9) Нормальные пацаны юзают функцию "Состояние". Хотя еще более нормальные вообще такой фигней не заморачиваются.
13 ДенисЧ
 
31.01.13
12:21
(12) Состояние на сервере?
14 Defender aka LINN
 
31.01.13
12:23
(13) На клиенте. Аффтар же ж все равно туда-сюда бегает, таская с собой контекст обработки туда-сюда
15 Double_Medved
 
31.01.13
12:27
Использовал ПоказатьОповещениеПользователя(), в окошке меняются цифры, виден процесс. Всем спасибо. Про "Состояние" теперь тоже буду знать
16 Evrepid
 
31.01.13
12:27
2(12) Вумный?

Функцию состояние на сервере?
17 Defender aka LINN
 
31.01.13
12:28
(16) Хорошо. Лично тебе разрешаю использовать ее на сервере.
18 mistеr
 
31.01.13
12:28
Фоновое задание
ПолучитьСообщенияПользователю
19 Evrepid
 
31.01.13
13:16
2(17) Что ума не хватает так оскорбления? Самооценку повышаешь? Бабы не дают из маленького достоинства и большой машины? :)
Независимо от того, куда вы едете — это в гору и против ветра!