Имя: Пароль:
1C
1C 7.7
v7: Тормозит функция в форме списка справочника
,
0 aRaBest
 
10.07.12
15:45
после перехода с win 2003 х86 sql 2000 на win 2008 х64 sql 2008 х64
стала притормаживать функция
помогите ускорить функцию или подскажите как искать тормоза

Функция КонтрольОстатка()
   //Перем Возвращение;
   //Возвращение = "";
   Тов=СоздатьОбъект("Справочник.Номенклатура");
   Если (ЭтоГруппа()=1) тогда
       Если (Уровень()>2) тогда  
           Ост = 0;
           Тов.ИспользоватьРодителя(ТекущийЭлемент());
           Тов.ВыбратьЭлементы();          
           Пока Тов.ПолучитьЭлемент()=1 цикл
               Если ПустаяСтрока(МестоХранения)=1 Тогда
                   Остаток = Регистр.ОстаткиТоваров.СводныйОстаток(Тов.ТекущийЭлемент(),,"ОстатокТовара")/?(Тов.Коэффициент = 0, 1,Тов.Коэффициент);;
               Иначе
                   Остаток = Регистр.ОстаткиТоваров.Остаток(Тов.ТекущийЭлемент(),МестоХранения,"ОстатокТовара")/?(Тов.Коэффициент = 0, 1,Тов.Коэффициент);
               КонецЕсли;
               Ост=Ост+Остаток;
           КонецЦикла;
       КонецЕсли;
   Иначе
       Если ПустаяСтрока(МестоХранения)=1 Тогда
           Ост = Регистр.ОстаткиТоваров.СводныйОстаток(ТекущийЭлемент(),,"ОстатокТовара")/?(ТекущийЭлемент().Коэффициент = 0, 1,ТекущийЭлемент().Коэффициент);
       Иначе
           Ост = Регистр.ОстаткиТоваров.Остаток(ТекущийЭлемент(),МестоХранения,"ОстатокТовара")/?(ТекущийЭлемент().Коэффициент = 0, 1,ТекущийЭлемент().Коэффициент);
       КонецЕсли;
   КонецЕсли;
   Если Ост <> 0 тогда
       Возврат Ост;
   Иначе
       Возврат "";
   КонецЕсли;
КонецФункции
1 viktor_vv
 
10.07.12
15:47
Искать отладчиком и замером производительности. Но тут и так видно, что тормозит вывод остатка по группе. Он вам надо по группе?
2 viktor_vv
 
10.07.12
15:49
И на 2008 скуль тут сильно много нареканий в производительности. Может еще зависит как дружили с семеркой, но тут подсказать ничего не могу.
3 Ёпрст
 
10.07.12
15:52
(0) переписать на прямой запрос, как минимум..
Использовать табличное поле, как максимум
4 aRaBest
 
10.07.12
15:54
( viktor_vv) да просят по группе
5 aRaBest
 
10.07.12
15:58
Самое интересное что win 2003 sql 2000 ничего не тормозило
6 Ёпрст
 
10.07.12
16:09
(5) враньё
7 Ёпрст
 
10.07.12
16:09
как "заставил" работать 7.7 на 2008 скуле, для начала ?
8 aRaBest
 
10.07.12
16:19
(6) зачем мне врать? Я же помощи прощу.
(7) Что значит "заставил", есть подробная инструкция в инете,
все работает.
9 Ёпрст
 
10.07.12
16:19
(8) есть подобная инструкция заставить быстро отображать останки в форме списка справочника.
Всё летает!
10 aRaBest
 
10.07.12
16:21
(7) подкорректировал BkEnd.dll
11 aRaBest
 
10.07.12
16:25
(9)
установил sql 2008 создал базу установил совместимость с 2000 загрузил из 1с данные
12 Ёпрст
 
10.07.12
16:26
(10) ну вот.
Теперь вертай всё взад, совместимость в том числе, ставь это и наслаждайся
http://infostart.ru/public/82018/
13 aRaBest
 
10.07.12
16:27
(12) Это все стоит
14 pvase
 
10.07.12
16:29
Надо переделывать на прямые запросы:
1 - Для обхода элементов справочника 1С использует триггеры, а эти тригерры почему то стали медленнее работать на SQL 2008.
2 - Та же ситуация с сводными остатками и остатками по регистру.

Замеры производительности в отладчике что показывает?

Что показывает SQL Serve Profiler, куда уходит время на выполнение?
15 Mikeware
 
10.07.12
16:30
(14) окстись, какие триггеры???
16 Ёпрст
 
10.07.12
16:34
(13) как-то это не коррелирует с

>>>подкорректировал BkEnd.dll
>>>установил совместимость с 2000 з
17 aRaBest
 
10.07.12
16:35
(16) я пробовал по разному, подкорректировать BkEnd.dll мне показалась более работоспособна
18 1Сергей
 
10.07.12
16:36
(17) тебе показалось
19 aRaBest
 
10.07.12
16:37
У меня при поиске задерживается список на 0.4 сек
бухгалтерам не нравится
20 pvase
 
10.07.12
16:38
(15) Сорри, не тригерры а курсоры.
21 aRaBest
 
10.07.12
16:38
Раньше было 0.08 сек
22 pvase
 
10.07.12
16:39
(19) Покажи замеры производительнсоти в Отладчике.
23 pvase
 
10.07.12
16:40
+ Воспользуйся Секретным релизом 1С 007 (Инфостар в помощь).
24 pvase
 
10.07.12
16:41
25 acsent
 
10.07.12
16:42
сводные остатки по группе?????
26 aRaBest
 
10.07.12
16:43
Справочник.Номенклатура.ФормаСписка.ПродажаПоСкладам    51    Остаток = Регистр.ОстаткиТоваров.СводныйОстаток(Тов.ТекущийЭлемент(),,"ОстатокТовара")/?(Тов.Коэффициент = 0, 1,Тов.Коэффициент);;    405    0.475676    16.79
27 pvase
 
10.07.12
16:45
(27) Подключай 1С++ и делай прямой запрос, сильно не поможет, но ускорение должно вернуться к предыдущему значению.
Чтобы ускорение было получше - надо переделывать Форму списка справочника на ТабличноеПоле с поставщиком SQL.
28 aRaBest
 
10.07.12
16:45
(12) (24) попробую снова
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший