|
v7: Существенное увеличение времени работы обработки после свертки базы | ☑ | ||
---|---|---|---|---|
0
vadim777
08.08.16
✎
13:06
|
Имеется обработка с процедурой:
//===================== Процедура НайтиПартии() Перем Рег; Рег=СоздатьОбъект("Регистр.Остатки"); Текст = "Поиск партий. Начало: [ТекущееВремя()]"; Сообщить(Шаблон(Текст)); Начало = _GetPerformanceCounter(); тзПартии.УдалитьСтроки(); спрТовары = СоздатьОбъект("Справочник.Номенклатура"); спрПартии = СоздатьОбъект("Справочник.Партии"); Счет=0; спрТовары.ВыбратьЭлементы(); Пока спрТовары.ПолучитьЭлемент() = 1 Цикл Если спрТовары.ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; Если спрТовары.ПометкаУдаления() = 1 Тогда Продолжить; КонецЕсли; спрПартии.ИспользоватьВладельца(спрТовары.ТекущийЭлемент()); спрПартии.ВыбратьЭлементы(); Пока спрПартии.ПолучитьЭлемент() = 1 Цикл Если спрПартии.ПометкаУдаления() = 1 Тогда Продолжить; КонецЕсли; Если ПустоеЗначение(спрПартии.Док) = 1 Тогда Продолжить; КонецЕсли; тзПартии.НоваяСтрока(); тзПартии.Товар = спрТовары.ТекущийЭлемент(); тзПартии.Партия = спрПартии.ТекущийЭлемент(); тзПартии.Остаток = Рег.СводныйОстаток(,тзПартии.Товар,тзПартии.Партия,,,"Остаток"); тзПартии.Валюта = спрПартии.Валюта; тзПартии.Курс = ?(ПустоеЗначение(спрПартии.Курс)=0,спрПартии.Курс,1); тзПартии.СтарЦенаЗакупкиВал = спрПартии.ЦенаЗакупкиВал; тзПартии.СтарЦенаЗакупки = Окр(тзПартии.СтарЦенаЗакупкиВал*тзПартии.Курс,2); тзПартии.СтарЦенаПродажиПарт = спрПартии.ЦенаПродажи; тзПартии.СтарЦенаПродажиНоменк = спрТовары.ЦенаПродажи; тзПартии.СтарПроцент = ?(тзПартии.СтарЦенаЗакупки=0,0,Окр((тзПартии.СтарЦенаПродажиПарт-тзПартии.СтарЦенаЗакупки)/тзПартии.СтарЦенаЗакупки*100,1)); тзПартии.НовЦенаЗакупкиВал = тзПартии.СтарЦенаЗакупкиВал*Множитель; тзПартии.НовЦенаЗакупки = Окр(тзПартии.НовЦенаЗакупкиВал*тзПартии.Курс,2); тзПартии.НовЦенаПродажиПарт = тзПартии.СтарЦенаПродажиПарт*Множитель; тзПартии.НовЦенаПродажиНоменк = тзПартии.СтарЦенаПродажиНоменк*Множитель; тзПартии.НовПроцент= ?(тзПартии.НовЦенаЗакупки=0,0,Окр((тзПартии.НовЦенаПродажиПарт-тзПартии.НовЦенаЗакупки)/тзПартии.НовЦенаЗакупки*100,1)); Счет=Счет+1; Если Счет % 100 = 0 Тогда Состояние(Счет); КонецЕсли; КонецЦикла; КонецЦикла; Конец = _GetPerformanceCounter(); Конец = Конец; Текст = "Поиск партий. Конец: [ТекущееВремя()]"; Сообщить(Шаблон(Текст)); Текст = "Время выполнения: [ВремяВыполнения(Начало,Конец)]"; Сообщить(Шаблон(Текст)); КонецПроцедуры Время работы на базе до свертки - 15 минут. На той-же базе, но после свертки - до 13 часов. |
|||
1
Злопчинский
08.08.16
✎
13:13
|
Сообщество не возражает.
Сделай замер времени в отладчике и смотри что жрет. если база скульная - может надо всякие статситики/индексы после свертки перестроить |
|||
2
Злопчинский
08.08.16
✎
13:17
|
1. выбирай только справочник партий ВЕСЬ - без установки родителя - будет быстрее. Проверка на группу у владельца-номенклатуры в этом случае - не нужна. проверка на удаление номенклатуры - скорее всего в этом случае - не нужна, так как штатно не бывает что номенклатура удалена, а партии - нет. Но подстраховаться можно, дернуть владельца партии и проверять удаление владельца только при смене владельца. Можно попробовать еще запросом по справочнику партий
|
|||
3
Злопчинский
08.08.16
✎
13:18
|
тзПартии.Остаток = Рег.СводныйОстаток(,тзПартии.Товар,тзПартии.Партия,,,"Остаток");
- это не (_._), а (____о____) - очень долгий оператор. лучше получить все остатки и поиском потом из таблицы выдергивать нужный |
|||
4
Злопчинский
08.08.16
✎
13:21
|
скорее всего не закрыт регистр остатков по какому-то измерению, при свертке - вырос как минимум в два раза, с каждым месяцем открытия периода - еще больше. смотри на размеры для этого регистра таблиц RA и RG - rg должен быть на порядок меньше (а то и поболее)
|
|||
5
vadim777
08.08.16
✎
14:15
|
(4) Размеры файлов и базы в целом существенно не изменились.
RA135.dbf ~ 61Мб, RG135.dbf ~ 332Мб, в обоих случаях. После свертки удаление помеченных на удаление не делал, как и ТИИ.Создалось 8 документов "Ввод остатков по регистрам", по 400 строк в каждом. Документов помечено на удаление - 82496. Документов, формирующих партии (приходных) - 4135. Закомментировал строку получения остатков. Время выполнения на свернутой базе - 38,879 секунд. На несвернутой базе - 38,255 секунд. Если удалить все помеченное на удаление и сделать ТИИ с сжатием базы - время работы уменьшится? |
|||
6
Ёпрст
08.08.16
✎
14:18
|
(0) ё..
очистить нулевые записи в табличке итогов и сжать файлы. Наслаждаться |
|||
7
Ёпрст
08.08.16
✎
14:18
|
если не умеешь, то выгрузить данные-загрузить данные, оно само всё пересчитает.
|
|||
8
Ёпрст
08.08.16
✎
14:19
|
И ТиИ делать не надо
|
|||
9
Злопчинский
08.08.16
✎
16:49
|
(5) "RA135.dbf ~ 61Мб, RG135.dbf ~ 332Мб, в обоих случаях."
- тотально незакрыт регистр. вангую нехилые проблемы сейчас/в будущем/при открытии периодов/в алгоритмах при получении итогов. |
|||
10
Злопчинский
08.08.16
✎
16:49
|
(7) "если не умеешь, то выгрузить данные-загрузить данные, оно само всё пересчитает."
- это у него так сутками пересчитывать будет вполне возможно |
|||
11
Злопчинский
08.08.16
✎
16:51
|
Для ускорения следует воспользоваться моей обработкой
http://catalog.mista.ru/public/180018/ (авторство/помощь Епрста - сохранено) http://content.screencast.com/users/Che66/folders/Jing/media/15b5f747-6f23-4990-ae48-9a87052e0439/2016-08-08_1650.png |
|||
12
Злопчинский
08.08.16
✎
16:52
|
(11) это к посту (6)
|
|||
13
Злопчинский
08.08.16
✎
16:53
|
Примечание: вычистка всего лишь 40Мб "лишних" нулевых итогов приводит (у меня, по крайней мере) к тому, что открытие периода вместо 5-7 минут длится ~10 сек
|
|||
14
vadim777
09.08.16
✎
10:55
|
(11) Нет у меня старт-маней :(
Может скинешь на почту? |
|||
15
Злопчинский
09.08.16
✎
10:58
|
(14)
1. При тотально незакрытом регистре - надо его править, вычистка нулевых итогов поможет мало. 2. Если проблемы с базой и старт-маней нет - что-то с тобой не так... 2. Попрошайка тут http://forums.kuban.ru/f1040/-----_poproshajka_------7408800-4.html |
|||
16
opus70
09.08.16
✎
11:46
|
проблема в том что штатная обрезка тянет за собой
существующие документы по партиям к примеру Документ поступления от 2011 года по нему остались остатки вот штатная обрезка и потянет этот документ а нужно чтоб документы создавались новые датой обрезки т.е. должны быть разорваны связи со старыми документами и заменены на документ пустышку но тут есть одно но насколько тебе нужно чтоб это было правильно с точки зрения учета т.е. НДС в сумме и так далее |
|||
17
opus70
09.08.16
✎
11:50
|
я обычно делаю так
1. создаю документы переноса остатков 2. удаляю все таблицы ra* и rg* 3. удаляю старые докуметы 4. провожу новые документы 5. всякие подчистки 6. профит все это занимает ну в худшем случае несколько суток это когда ну очень много документов а машинка не сильно быстрая |
|||
18
vadim777
09.08.16
✎
12:40
|
(16,17) В конфе, что у меня, это ничего не даст. Мало того, что регистр Остатки имеет измерение Партия (типа справочник Партии), так и в самой партии присутствуют реквизиты ДокЦены и Док (Документ прихода). После свертки остается куча помеченных на удаление приходных документов, которые не удаляются.
|
|||
19
Ёпрст
09.08.16
✎
14:04
|
(18) и ?
Они вам чем-то мешают ? По ним нет движений, соответсвенно размеры табличек регистров будут мееееньше. |
|||
20
vadim777
09.08.16
✎
18:09
|
(19) Та пусть будут, мне не мешают. Хозяину магазинчика мешают. Я ему уже все объяснил, но перестраивается он туго. Он привык постоянно лезть в приход, и что-то там менять: или цену на часть товара, или часть прихода удалить, т.к. или возврат или списание, или цена продажи изменилась. Показал ему, что есть документы Переоценка, Списание, Возвраты. Он никогда ими не пользовался. Основные его документы - это Приходная и Расходная накладные.
|
|||
21
Эльниньо
10.08.16
✎
12:44
|
(17) С периодическими что делаешь? С битыми ссылками в разных справочниках?
|
|||
22
opus70
13.08.16
✎
12:52
|
(21) никаких битых ссылок я ведь не писал что удалять не нужно без проверок на ссылки,
а 5-й пункт как раз и го варит о том что тут весь напильник и зырыт чего можно удалить что подчистить и так далее (но это в каждой базе по разному если она самаписка) |
|||
23
Злопчинский
13.08.16
✎
15:33
|
(21) в типовой ТиС никакой периодики документами не устанавливается...
|
|||
24
Эльниньо
16.08.16
✎
10:31
|
(23) С девственной ТиС не привелось. Всё изнасилованные особо циничным способом попадались
|
|||
25
Злопчинский
16.08.16
✎
17:42
|
(24) ну у мну тоже ТиС. штатное не затронуто. но вокруг и добавочно наворочено...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |