|
v7: Прошу помощи в оптимизации модуля проведения документа | ☑ | ||
---|---|---|---|---|
0
Прыгун
17.04.13
✎
11:12
|
Дано - самописка на основе бухии старого релиза. База большая, и документ Отгрузка товаров там самый ходовой. Начались проблемы при проведении Отгрузок с большой табличной частью. Если пользователь в базе проводит такой документ, все курят. Причем даже компонента ромикса не спасает, т.к. все равно все остальные ждут пока пользователь проведет этот большой документ (полторы минуты на документе с 50 позициями). Отладчик (при замере на документе с табличной частью в 50 позиций) показал, что больше всего тормозят строки
БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),СписокСчУчета,,,,,"СК"); (50% времени) И БИ_НУ.ВыполнитьЗапрос(,ТекущийДокумент(),"Н02.02, Н02.03, Н02.07",,,,,"СК"); // 50% времени. Весь участок проблемного кода вот: СписокСчУчета = "43.1, 43.2, 43.3, 41.1, 41.3, 41.4"; СписокТоваров = СоздатьОбъект("СписокЗначений"); ВыгрузитьТабличнуюЧасть(СписокТоваров, "Товар"); БухИт = СоздатьОбъект("БухгалтерскиеИтоги"); БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, СписокТоваров, 2); БухИт.ИспользоватьСубконто(ВидыСубконто.МестаХранения); БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),СписокСчУчета,,,,,"СК"); БИ_НУ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ_НУ.ИспользоватьСубконто(ВидыСубконто.Номенклатура, СписокТоваров, 2); БИ_НУ.ВыполнитьЗапрос(,ТекущийДокумент(),"Н02.02, Н02.03, Н02.07",,,,,"СК"); БухИтКМС = СоздатьОбъект("БухгалтерскиеИтоги"); БухИт004 = СоздатьОбъект("БухгалтерскиеИтоги"); ТаблицаДокумента.Свернуть("Товар,Комитент,ДоговорКомиссии,СтавкаНДС,СтавкаНП","Количество,Штук,НДС,НП,Всего,ВсегоЭ"); ТаблицаДокумента.ВыбратьСтроки(); Вопрос, как можно соптимизировать? Пока что то в голову ничего не приходит. |
|||
1
Прыгун
17.04.13
✎
11:13
|
Да, база дбф, работает по сети.
|
|||
2
Он
17.04.13
✎
11:15
|
Попробуй 2-й вариант бухитогов.
|
|||
3
monsterZE
17.04.13
✎
11:17
|
для начала надо пофиксить (1)
|
|||
4
Прыгун
17.04.13
✎
11:25
|
(3) В терминале такой проблемы не будет?
|
|||
5
monsterZE
17.04.13
✎
11:33
|
(4) ну попробуй провести на машине, на которой лежит база..
а вобще, вроде, была тема по оптимизации, но для скл. |
|||
6
Прыгун
17.04.13
✎
11:36
|
(5) на машине где лежит база, т.е. на сервере этот док проводится 9 секунд. На машине по сети полторы минуты.
|
|||
7
ДенисЧ
17.04.13
✎
11:37
|
(6) вот тебе и ответ
|
|||
8
Прыгун
17.04.13
✎
11:39
|
Пока хочу попробовать оптимизировать сам код, на терминал админ не соглашается пока. )
|
|||
9
viktor_vv
17.04.13
✎
11:43
|
(8) А че там оптимизировать, если большую часть времени выполняется конструкция которую и оптимизировать не получится.
Разве что в первом еще фильтр по конкретному складу воткнуть. |
|||
10
Прыгун
17.04.13
✎
11:45
|
(9) да вот я сам репу чешу, как соптимизировать, обычно как то удается список значений в запрос воткнуть.
|
|||
11
viktor_vv
17.04.13
✎
11:46
|
(10) Ну так по товарам ты и воткнул его.
Правда как-то подозрительно долго запросы для локальной базы выполняются. |
|||
12
Прыгун
17.04.13
✎
11:55
|
(11) Из за чего они могут так долго выполняться, кроме того, как из-за того что по сети работает? Не пересчитаны итоги например, еще причины могут быть? Железо вроде неплохое.
|
|||
13
Прыгун
17.04.13
✎
12:29
|
щас проверили. один пользователь в базе по сети монопольно работает - 10 секунд документ с 50 строками проводится. Стоит в базу зайти еще одному - сразу полторы минуты.
|
|||
14
viktor_vv
17.04.13
✎
12:39
|
(13) Это уже вусмерть порванный баян.
Ищи "второй пользователь по сети 1С 7.7". Кроме как терминал особо решения и нет. Есть еще правда сетку на NetWare , но это уже жесткая экзотика, я об этом только читал :). |
|||
15
ЗомбиТ1С
17.04.13
✎
12:44
|
(0)Дешево и сердито Wirth.ru
|
|||
16
Джордж1
17.04.13
✎
12:45
|
на сервере ОС какая?
|
|||
17
vip67
17.04.13
✎
12:46
|
Если 10 сек устраивает - то в первую очередь - терминал. и во вторую то-же.. и так до тех пор - пока на скл не перейдете
|
|||
18
zak555
17.04.13
✎
12:52
|
1. передай в СписокСчУчета СЗ СчетПоКоду
2. проставь по возможности все параметры БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, СписокТоваров, 2); БухИт.ИспользоватьСубконто(ВидыСубконто.МестаХранения,,1); ТК = ТекущийДокумент(); БухИт.ВыполнитьЗапрос(,ТК,СписокСчУчета,,,1,,5); БИ_НУ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ_НУ.ИспользоватьСубконто(ВидыСубконто.Номенклатура, СписокТоваров, 2); БИ_НУ.ВыполнитьЗапрос(,ТК,СписокСчУчетаНУ,,,1,,5); |
|||
19
Злой Бобр
17.04.13
✎
13:04
|
(8) Ну дай ему выбор: терминал или нетварь. Пусть сам решает что ему проще будет.
Тему можно закрывать, т.к. других решений нету. Решение по вайном на никсах это гемор с большой буквы, поэтому даже нерассматриваем. |
|||
20
zak555
17.04.13
✎
13:09
|
+ (18) если не помогло, то в счета передал бы счета группы
|
|||
21
Прыгун
17.04.13
✎
13:14
|
(16) 2003 сервер.
(18) Спасибо, попробую. |
|||
22
Джордж1
17.04.13
✎
13:22
|
(21)тогда совет в (14) не актуален
|
|||
23
Прыгун
17.04.13
✎
13:32
|
(22) Да вот в том то и дело. Вроде бы серверная операционка стоит.
|
|||
24
Злой Бобр
17.04.13
✎
14:06
|
(23) При чем тут ОС к кривизне платформы 1С? Ответ дан в (19) - дальше уже админ пусть суетится. Можешь даже ему тему эту дать почитать.
|
|||
25
Прыгун
17.04.13
✎
14:07
|
Конешно дам, не сумлевайся. )
|
|||
26
Прыгун
17.04.13
✎
14:17
|
http://infostart.ru/public/14664/ я вот это решение в свое время использовал, но проект этот сейчас закрыт. Хотя вроде на прошлой работе до сих пор на нем крутятся три магазина. Но терминал имхо будет кошернее.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |