Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) xp - стандартные процедуры по изменению остатка регистра в  1с sql (число прочтений - 4455 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
xp - стандартные процедуры по изменению остатка регистра в  1с sql
01. Ноября 2008 :: 05:48
Печать  
Текст из стандартных xp
Update RG165
 set SP168=Case When ABS(SP168+@p3)>999999999999.99 Then 999999999999.99 Else SP168+@p3 End
Но если у нас переполнение идет по - ( отрицательное число )
то в остатках по регистру получим бред. ( я  понимаю что ситуация маловероятная но тем не менее возможна)
кто что думает по этому поводу.
весь текст xp
Код
Выбрать все
Create procedure _1sp_RG165_Change(@per DATETIME, @p1 CHAR(9), @p2 CHAR(9), @p3 NUMERIC(14, 2)) AS
Set Nocount On
Update RG165
  set SP168=Case When ABS(SP168+@p3)>999999999999.99 Then 999999999999.99 Else SP168+@p3 End
  where PERIOD=@per AND SP167=@p1 AND SP2139=@p2
if @@ROWCOUNT=0
    insert into RG165 values(@per,@p1,@p2,@p3)
GO
 

  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #1 - 01. Ноября 2008 :: 07:33
Печать  
ну скажите что нибудь по subj,
а то не пойму то ли это я глючу, то ли это действительно баг 1с.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #2 - 01. Ноября 2008 :: 08:05
Печать  
Расслабся. Ты не глючишь.
  

1&&2&&3
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #3 - 01. Ноября 2008 :: 08:19
Печать  
и что с этим делать ? ( да вредно по суботам работать
залезешь куда не нужно вот и нашел грабли только
что теперь с ними делать )
может поставить везде точность 19.2 ( речь о рублях ) и убрать эти проверки.
Правда придеться писать скрипт по обновлению всех этих xp.
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #4 - 02. Ноября 2008 :: 18:31
Печать  
Баг не в 1с, а в твоей конфигурации Улыбка
Вообще не понимаю зачем вставлен этот код проверки переполнения, т.к. на самом деле постоянный рзультат в таблице итогов равный 999999999999.99 это тоже бред, если уж делать проверку, то надо было делать исключение, а не эту чепуху.
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #5 - 05. Ноября 2008 :: 06:20
Печать  
DmitrO писал(а) 02. Ноября 2008 :: 18:31:
Баг не в 1с, а в твоей конфигурации Улыбка
Вообще не понимаю зачем вставлен этот код проверки переполнения, т.к. на самом деле постоянный рзультат в таблице итогов равный 999999999999.99 это тоже бред, если уж делать проверку, то надо было делать исключение, а не эту чепуху.

Не согласен что это ошибка в моей конфигурации.
Эти процедуры _1sp_RG%_Change одинаковые для всех регистров остатков  в любых конфигурациях. (Например и в статье softpoint http://www.softpoint.ru/article_id1.htm есть аналочичные)
Аналогичные xp для подсчета итогов колонок для табличных частей документов (_1sp_DH%_UpdateTotals ) сделано лучше
Код
Выбрать все
    IF ABS(@Sum0)>999999.999 SELECT @Sum0=999999.999*SIGN(@Sum0)
    IF ABS(@Sum1)>9999999999999999.99 SELECT @Sum1=9999999999999999.99*SIGN(@Sum1)
UPDATE DH6435 SET SP6565=@Sum0,SP6566=@Sum1 WHERE IDDOC=@IdDoc
 


Знак переполнения не теряется.
Для своей конфигурации точно решил делать следущее для всех
ресурсов регистров ставлю самую большую длину = 19
и для всех  _1sp_RG%_Change убираю case.
после недели двух реальной работы сообщу результат.
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #6 - 05. Ноября 2008 :: 08:35
Печать  
Z1, ты не понял. Я хотел сказать, что результат в таблицах итогов 999999999999.99 ни чем не лучше , чем вообще любой другой результат если он отличается от правильного. Платформа это не контролирует, ни каких исключений твоя конфигурация не получает в любом случае. И поэтому на этот код ХП генерируемых платформой можно просто забить, т.к. толку от него нет никакого. Следовательно, ты как разработчик конфигурации должен закладывать такую размерность ресурсов чтобы ее всегда хватало.
А ты заложил недостаточную размерность ресурсов - в этом твоя ошибка.
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #7 - 05. Ноября 2008 :: 08:55
Печать  
Ок. хорошо что мы друг друга не поняли точнее друг друга поняли но немного по своему.
(DmitO)Спасибо за ответ я хотя бы для себя прояснил
ситуацию полностью - сейчас кстати мучаюсь с другим аналогичным
оператором но это лучше наверное описать в новой теме.

Я понял что в платформе неправильно отрабатывается пограничная ситуация переполнения ( об этом ничего не сообщается пользователю, а также 1с МЕНЯЕТ  минус на плюс это покруче переполнения )
Теперь мое виденье следущее : той точности какая сейчас есть мне вполне достаточно и почти невероятно что по взаиморасчетам с клиентом
будет достигнута цифра 10**15 в рублях.
Далее мои рассуждения следущие Для моей конкретной конфирурации эти проверки мне вообще не нужны и я принимаю решение их удалить в результате этого логика не пострадает,
а суммарная производительность 1с вырастет.
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #8 - 05. Ноября 2008 :: 09:15
Печать  
Ну в общем-то ты прав. Только я не думаю что производительность выростет сколь-нибудь ощутимо, в тоже время изменение этих ХП требует определенного кода (в конфигурации или еще где-то), универсальный код не такой уж и простой получится. К тому же надо определяться с моментом когда его отработать.
Вобщем я бы оставил как есть.
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #9 - 05. Ноября 2008 :: 09:29
Печать  
код я уже написал ( не очень сложно и универсально  правда выполнять надо после каждой смены конфигурации).
Просто перешагнули порог 250 connectov и сервер начинает захлебываться вот и полез разбираться со всеми xp,
а эта замена чуть уменьшит время проведения со всеми положительными последствиями.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #10 - 05. Ноября 2008 :: 10:05
Печать  
Рискну дать стандартный совет по оптимизации.

Сначала сделай замеры. Перед оптимизацией. Выясни, какое именно место тормозит больше всего, и именно туда направь все свои усилия. Оптимизировать три дня процедуру, которая загружает сервер на 0.5% - довольно глупо.
  
Наверх
www  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #11 - 05. Ноября 2008 :: 10:17
Печать  
fez писал(а) 05. Ноября 2008 :: 10:05:
Рискну дать стандартный совет по оптимизации.

Сначала сделай замеры. Перед оптимизацией. Выясни, какое именно место тормозит больше всего, и именно туда направь все свои усилия. Оптимизировать три дня процедуру, которая загружает сервер на 0.5% - довольно глупо.

У нас пиковые ситуации все процессы становяться в очередь на проведение и все "умирает". Очередь по блокировкам wait доходит по 5-10 и все alles.
Как и что замерять в этой ситуации не совсем понятно.
Отдельно работающие пользователи все ок.
Делать буду потому что считаю что с этой ситуацией полностью разобрался и все уже практически сделано и при лубой ситуации будет только лучше.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #12 - 05. Ноября 2008 :: 10:26
Печать  
Цитата:
Делать буду потому что считаю что с этой ситуацией полностью разобрался и все уже практически сделано и при лубой ситуации будет только лучше.


Ага, только будут ли заметны эти улучшения? Я думаю нет. Тебе видимо пора про гибкие блокировки думать.
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #13 - 05. Ноября 2008 :: 10:29
Печать  
Цитата:
Ага, только будут ли заметны эти улучшения? Я думаю нет. Тебе видимо пора про гибкие блокировки думать.


Об этом тоже думаю - начну с малого.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: xp - стандартные процедуры по изменению остатка регистра в  1с sql
Ответ #14 - 05. Ноября 2008 :: 10:34
Печать  
Z1 писал(а) 05. Ноября 2008 :: 10:17:
Как и что замерять в этой ситуации не совсем понятно.

Почитай гугль. Существует масса способов узнать "что" замерять, и "как" это делать.

Для начала надо выяснить компьютер, который тормозит. Клиент это или сервер. И если сервер, то какой именно.

Дальше на тормозящий компьютер вешаешь мониторы производительности. Находишь тормозящую железку. Думаешь, можно ли тупо и дешево добавить производительности? Если можно, то добавляешь.

Если ты нашел тормозящую программу - смотришь, как ее можно оптимизировать, и можно ли. Для каждой тормозящей программы существуют свои способы профилирования. Для 1С - свои, для sql - свои.

Цитата:
Делать буду потому что считаю что с этой ситуацией полностью разобрался и все уже практически сделано и при лубой ситуации будет только лучше.

Дело не в том, будет ли лучше или хуже. Дело в том, насколько эффективно ты тратишь деньги своего работодателя.

Одно дело сказать
"Вы потратили две моих месячных зарплаты на то, чтобы поднять производительность сервера на 0.7%"
и совсем другое -
"Вы потратили три моих месячных зарплаты и еще кучу бабок на апгрейд, но теперь наш сервер вообще не тормозит, и можно смело набрать еще 250 сотрудников, не опасаясь того, что он будет тормозить."
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать