Имя: Пароль:
1C
1С v8
Где лучше совершать вычисления?
0 prazdnik4334
 
20.10.12
16:03
Подскажите пожалуйста, где лучше производить вычисления с данными таблицы формы, на сервере или клиенте?
&НаКлиенте
Процедура РасчитатьСебестоимость()
   Результат=ПолучитьВидРаспределенияРасходов(Объект.РаспределитьРасходы);
   Если Результат=0 Тогда
       Сообщить("Поле 'Распределить расходы' не заполнено");
       ОтказЗаписи = Истина;
   Иначе
       Таб=Элементы.Товары;
       Таб.ТекущаяСтрока=0;
       Если Результат=1 Тогда
           Дельта = Окр((Объект.Расходы.Итог("Сумма")/Объект.Товары.Итог("Количество")), 2, 1);
           Пока Таб.ТекущаяСтрока<>Неопределено Цикл
               Таб.ТекущиеДанные.Себестоимость=Таб.ТекущиеДанные.ЦенаГрн+Дельта;
               Таб.ТекущиеДанные.СуммаСебестоимость=Таб.ТекущиеДанные.Себестоимость*Таб.ТекущиеДанные.Количество;
               Таб.ТекущаяСтрока=Таб.ТекущаяСтрока+1;
           КонецЦикла;
       Иначе
           Дельта = Окр((Объект.Расходы.Итог("Сумма")/Объект.Товары.Итог("Сумма")), 2, 1);
           Пока Таб.ТекущаяСтрока<>Неопределено Цикл
               Таб.ТекущиеДанные.Себестоимость=Таб.ТекущиеДанные.ЦенаГрн*(1+Дельта);
               Таб.ТекущиеДанные.СуммаСебестоимость=Таб.ТекущиеДанные.Себестоимость*Таб.ТекущиеДанные.Количество;
               Таб.ТекущаяСтрока=Таб.ТекущаяСтрока+1;
           КонецЦикла;
       КонецЕсли;
       ОтказЗаписи = Ложь;
       Сообщить("Сумма общая"+(Объект.Товары.Итог("Сумма")+Объект.Расходы.Итог("Сумма"))+"|Сумма себестоимость"+Объект.Товары.Итог("СуммаСебестоимость"));
   КонецЕсли
Конецпроцедуры
1 vde69
 
20.10.12
16:05
однозначно на сервере
2 Мизантроп
 
20.10.12
16:07
в облаке
3 ДенисЧ
 
20.10.12
16:07
(1) не всё так однозначно :-)
4 vmv
 
20.10.12
16:08
&НаКлиентеНаСервереБезКонтекта

такое делают умные люди, только не надо выть, что это не реально - сам так думал, дураком был
5 Мизантроп
 
20.10.12
16:11
> &НаКлиентеНаСервереБезКонтекта

&НаКлиентеНаСервереБезКонтектаБезМозгов
6 Мизантроп
 
20.10.12
16:11
+ (5) мой код даже парсер принимает!
7 Юрий Лазаренко
 
20.10.12
16:21
(0) Если Результат=0 Тогда - судя по этому ТС недавно с клюшек перешел на 8.2 )

По сабжу:
1. Результат=ПолучитьВидРаспределенияРасходов(Объект.РаспределитьРасходы);
В этой процедуре происходит вызов сервера? Если да, то однозначно на сервере делать (все равно его вызов уже есть)
2. Пока Таб.ТекущаяСтрока<>Неопределено Цикл
Пошел перебор срок циклом. Если строк немного, то можно и на клиенте. Если 10, 100, 800 - то однозначно на сервере.
8 vde69
 
20.10.12
16:27
в тонком нужно старатся уменьшить количество передачи данных клиент-сервер, это самый главный принцеп построения нормальной системы.

Себестоимость не стоит расчитывать на клиента хотя-бы по тому, что - требуются данные с сервера.

Ну и до кучи простой пример

а = ....;
б = ....;
с = а/б;
если а = с*б тогда
// кривость расчета
конецесли

при выполнении на сервере в если мы никогда не попадем, а нпример в веб клиенте попадем при определенных параметрах а и б.

по этому ВСЕ расчеты с математикой ВСЕГДА на сервере!
9 Юрий Лазаренко
 
20.10.12
16:33
(8) Если надо рассчитать данные по одной строке и для этого не нужны цифры с сервера - то лучше на клиенте, тогда вызова сервера вообще не будет. Если цикл - то лучше на сервер.
10 vde69
 
20.10.12
16:38
(9) почитай v8: v8: получаю разное число (1коп) в web и тонком клиенте , только одно это дает однозначный запрет расчетов на клиенте
11 aleks-id
 
20.10.12
16:41
а почему никто не сказал что в (0) голимый копрокод?
12 Fragster
 
гуру
20.10.12
16:45
если автор крутит таблицу формы - то с клиента ему не уйти
13 vde69
 
20.10.12
16:46
(12) РеквизитФормыВЗначение

и работай на сервере сколько надо
14 Fragster
 
гуру
20.10.12
16:47
(13) ага, через Таб.ТекущаяСтрока=Таб.ТекущаяСтрока+1;
15 vde69
 
20.10.12
16:47
(11) это и так всем ясно, зачем человека обижать?
16 Fragster
 
гуру
20.10.12
16:47
вы б сначала на код посмотрели
17 aleks-id
 
20.10.12
16:50
(15) почему обижать? наставить на путь истиный
18 aleks-id
 
20.10.12
16:52
(16) че там смотреть. копрокод. он табличную часть обрабатывает. однозначно на сервер выкинуть и там мутить. и код переписать.
19 H A D G E H O G s
 
20.10.12
21:40
код - херня.
Считать, если данные не нужны - на Тонком, Толстом, не на Вебе, Серверу и так найдется, чем занятся.
20 prazdnik4334
 
25.10.12
10:40
Спасибо всем за слветы
Программист всегда исправляет последнюю ошибку.