Имя: Пароль:
1C
1С v8
Как оптимизировать процедуру клиента и серверную функцию?
0 temsa
 
25.08.13
12:23
Есть процедура и функция на сервере.
Хочу чтобы  на сервер не шли ото и список.
Те.е вместо &НаСервере хочу &НаСервереБезКонтекста

Но не получается. Стоит ли заморачиватся? Овчинка выделки стоит???

У меня иногда отображение на клиенте фото идет 8-9 секунд.

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    Если СокрЛП(Данные) <> "" Тогда
        Результат = ОбработкаДанныхСотрудника(Данные);
        Если Результат = "" Тогда
            ЗаписатьДанныеОПитающимся();
            Если СписокПоСотрудникам.Количество() > 4 тогда
                СписокПоСотрудникам.Удалить(0);
                Элементы.СписокПоСотрудникам.ТекущаяСтрока = СписокПоСотрудникам.Количество();
            Иначе
                Элементы.СписокПоСотрудникам.ТекущаяСтрока = СписокПоСотрудникам.Количество()-1;
            КонецЕсли;    
            
        ИначеЕсли Результат = -1  Тогда
            стр = "Выбранный сотрудник уже питался в текущий период !!!";
            Строка1 = Новый ФорматированнаяСтрока(стр, Новый Шрифт(,15,Истина,Ложь),WebЦвета.Красный);
            Предупреждение(Строка1, 5, "Состояние");
            АдресФото = ПоместитьВоВременноеХранилище(БиблиотекаКартинок.Ложка);
        Иначе    
            Элементы.СписокПоСотрудникам.ТекущаяСтрока = Результат;
        КонецЕсли;
        Если глПодключаемоеОборудование.Статус Тогда
            глПодключаемоеОборудование.Включить();
        КонецЕсли;    
    КонецЕсли;    
КонецПроцедуры

и еще

&НаСервере
Функция ОбработкаДанныхСотрудника(Данные)
    тСотрудник = Справочники.ФизическиеЛица.НайтиПоРеквизиту("ЭлектронныйКодСотрудника", СокрЛП(Данные));
    Если тСотрудник.Пустая() Тогда
        ТекущийСотрудник = Справочники.ФизическиеЛица.ПустаяСсылка();
        АдресФото = "";
        Элементы.ОбщаяИнформация.Заголовок = "Сотрудник не определен";
        Возврат "Код сотрудника не зарегистрирован в базе данных";
    Иначе
        оСотрудник = тСотрудник.ПолучитьОбъект();
        АдресФото = ПолучитьНавигационнуюСсылку(оСотрудник.ФайлИзображения,"Хранилище");
        Элементы.ОбщаяИнформация.Заголовок = тСотрудник.Наименование;
        Элементы.ФотоСотрудника.РазмерКартинки = РазмерКартинки.Растянуть;
        ....
        ТекущийСотрудник = тСотрудник;
        ....
    КонецЕсли;    
КонецФункции
1 temsa
 
25.08.13
12:24
" не шли ото" читать  "не шли Фото"
2 temsa
 
25.08.13
18:32
тишинаа
3 GROOVY
 
25.08.13
19:10
Так тут на сервер все данные формы сейчас передаются. Вопрос то в чем?
4 temsa
 
25.08.13
21:03
(3) Спасибо Паша что отозвался.

Дело в том что у меня столовая там где проходят по картам питаются от сервера в 60 ти метрах сеть организован через радиосеть. Когда сотрудник проводит карточку в ридере то отображение его фото и фамилии можно ждать от 1-3 до 8-9 секунд.
Если это было бы 1-3 сенкуды былобы вполне.
Но 8-9 секунд это очень долго.
Вот я и решил заняться оптимизацией кода. Но что-то не очень в этом продвинулся. Полагаю НА сервер едет и текущая фоо ведь так?  не получается переделать НаСервереБезКонтескта.
5 temsa
 
25.08.13
21:05
"Полагаю НА сервер едет и текущая фото ведь так?"
6 temsa
 
25.08.13
21:08
Вот кому если интересно глянуть целиком код обработки:

http://yadi.sk/d/ffJdWDju8Iawg
7 nightowl
 
25.08.13
21:09
(4)
А по Отладчику где ЗАДЕРЖКА?
8 temsa
 
25.08.13
21:24
82 тСотрудник = Справочники.ФизическиеЛица.НайтиПоРеквизиту("ЭлектронныйКодСотрудника", СокрЛП(Данные));    1    3,704081    34,50
38    СписокПоСотрудникам.Добавить(ТекущийСотрудник, Формат(ТекущаяДата(), "ДЛФ=В") + ", " + ТекущийСотрудник);    1    1,340278    12,48
30    Результат = ОбработкаДанныхСотрудника(Данные);    1    0,237650    2,21
9 temsa
 
25.08.13
21:27
А вот реквизит "ЭлектронныйКодСотрудника" Не использует индексирование. От этого зависит скорось?
10 nightowl
 
25.08.13
21:30
(9) Справочники.ФизическиеЛица.НайтиПоРеквизиту("ЭлектронныйКодСотрудника", СокрЛП(Данные)) попробуй через Запрос.
11 temsa
 
25.08.13
21:31
(10) После замера я тоже об этом подумал
12 GROOVY
 
25.08.13
21:55
Фото не на сервер едет, а С сервера.
13 GROOVY
 
25.08.13
21:56
Сделай РИБ, и обмен раз в день.
14 GROOVY
 
25.08.13
21:56
По радиоканалу.... там скорость то нормальная?
15 GROOVY
 
25.08.13
21:57
Фотки зажми.

Да и функция ОбработкаДанныхСотрудника(Данные) почему контекстная?
16 temsa
 
25.08.13
22:11
(12) То что с севера едет ясно. Но я размышляю так- в мемен вызова серверной функции вся форма с текущим фото на форме  клиента тоже идет на сервер.
(13) Сначала думал переход с файловой в скуль даст прирос но пока не пробовал. Потом была мысля про Риб но меня отговаривают. ДА еще обмен нужен чаще тогда Хотя бы раз в час.
Представьте себе сотрудник пошел кушать ему в столовой сказали вы не питаететсь у вас отключено право питание. О идет в кадры выясняет утресает. В итоге ему включают питание. Он бежит в столовую. А том РИБ не обменялся...
(14) Купили хорошое оборудование. Не ообычный вайфай а точки доступа с каким-то закрытым протоколом. дЕкларировано 100 мб а реале меньше.
(15) Фотки стараемся сжимать.
"ОбработкаДанныхСотрудника" ТАк я и не могу его переделать Потому что некторые данные не доступняе становится.
17 temsa
 
25.08.13
22:17
И еще самое ужасное то что первоначальная запуск базы длится оочень долго. НУ чуть ли 2-3 минуты.
18 GROOVY
 
25.08.13
22:25
1. На сервер переезжайте. Файловый вариант - не вариант.
2. Замеряйте скорость. Почему запуск базы несколько минут?

Тут может и антивирус чудить...
19 temsa
 
25.08.13
22:39
(18) Антивирус У нас каспера админы поставили.
Выключал особого облегчения не увидел.

Все-таки все равно  каспера снесу. Всегда его недолюбливал.

НА скуль перетащу на днях тогда и посмотрим.

(10) Кстати, перевод на запрос вроде ускорило. Первый запрос почему-то дольше чем оычный а вто втрой раз и далее они более шустрые.
20 temsa
 
25.08.13
22:40
Спасибо всем за советы.

Завтра отпишусь о результатах.
21 Злопчинский
 
26.08.13
00:42
(19) кеширование наверное потому что - поэтому последующие разы быстрее