|
v7: Как лучше получить остатки: запросом или расчетом регистра | ☑ | ||
---|---|---|---|---|
0
zelenprog
21.09.12
✎
16:03
|
Для свертки базы надо получить остатки на дату свертки. Дата свертки установлена 31.12.2010.
Скажите пожалуйста, какой способ будет лучше в смысле быстродействия? 1) "//{{ЗАПРОС(Остатки) |Период с ДатаСвертки по ДатаСвертки; |Номенклатура = Регистр.[Остатки].Номенклатура; |ЦенаРозн = Регистр.[Остатки].ЦенаРозн; |Количество = Регистр.[Остатки].Количество; |Сумма = Регистр.[Остатки].Сумма; или 2) при помощи метода "РассчитатьРегистрыПо(ДатаСвертки)" |
|||
1
ДенисЧ
21.09.12
✎
16:03
|
ТА перенести на нужную дату и снять остатки без расчёта :-)
|
|||
2
Ненавижу 1С
гуру
21.09.12
✎
16:04
|
перейти на 8 ку
|
|||
3
zelenprog
21.09.12
✎
16:04
|
(1) а как снять?
запросом? |
|||
4
zelenprog
21.09.12
✎
16:04
|
(2) не катит
|
|||
5
Эльниньо
21.09.12
✎
16:07
|
(3) ВыгрузитьИтоги()
|
|||
6
Cандер
21.09.12
✎
16:08
|
Получай запросом, т.к. ИМХО проще обрабатывать.
Запросы в 7.7 не оптимальны, поэтому разница, думаю, будет не большая. |
|||
7
zelenprog
21.09.12
✎
16:11
|
(1),(5) попробовал перенести ТА...
че-то долго переносит |
|||
8
zelenprog
21.09.12
✎
16:12
|
запрос по-моему быстрее отрабатывает.
кстати база у меня ДБФ, если что |
|||
9
Эльниньо
21.09.12
✎
16:13
|
Получай запросом...
Запросы в 7.7 не оптимальны... ))) |
|||
10
zelenprog
21.09.12
✎
16:58
|
Похоже некоторые регистры у меня не закрываются.
В этих регистрах три измерения: Номенклатура, Характеристика, ЦенаРозн. Так вот некоторые товары не имеют характеристики, и движения по ним пишутся с пустым измерением. Чем мне это грозит? |
|||
11
пипец
21.09.12
✎
17:00
|
ЦенаРозн - измерение ? Оо
|
|||
12
zelenprog
21.09.12
✎
17:04
|
(11) да, измерение
|
|||
13
zelenprog
21.09.12
✎
17:04
|
досталось по наследству
|
|||
14
Ёпрст
21.09.12
✎
17:05
|
(10) если делается приход и расход с одинаковым набором измерений (хоть и пустыми), то ничем.
В противном случае, табличка итогов будет пухнуть от периода к периоду с геометрической прогрессией |
|||
15
Джинн
21.09.12
✎
17:12
|
(8) Это только по-вашему :)
|
|||
16
Mikeware
21.09.12
✎
17:18
|
взять их прямым запросом.
|
|||
17
Эльниньо
21.09.12
✎
18:07
|
(16) ВыгрузитьИтоги() на ТА сработает быстрее прямого.
Проверено не раз. |
|||
18
Mikeware
21.09.12
✎
18:29
|
(17)Это твои прямые запросы... Ну, мягко скажем, не совсем прямые....
Прямой запрос почти почти вдвое быстрее выгрузки итогов. |
|||
19
Эльниньо
21.09.12
✎
18:37
|
(18) Ещё раз для суровых:
Прямой не на ТА быстрее ВыгрузитьИтоги() в десятки раз. На ТА медленнее в разы. |
|||
20
miki
21.09.12
✎
18:39
|
(13)Зря оправдываешься.
(11)Глянь типовую ТиС... |
|||
21
Mikeware
21.09.12
✎
18:45
|
(19) Прямой на ТА быстрее почти вдвое.
Был уверен, потому как профилировал в свое время, и знал, что именно делает ВыгрузитьИтоги. Но только что попробовал ради интереса ("вдруг дурак все-таки я?". не, не я.... ). Прямой запрос Строк-4524 время-24 ВыгрузитьИтоги Строк-4524 время-47 |
|||
22
ADirks
21.09.12
✎
20:14
|
Вообще-то, получение остатков при обрезании базы - далеко не самая времяжрущая операция. Чё тут парицца то? Да как тебе понятнее - так и быстрее.
|
|||
23
zelenprog
22.09.12
✎
18:54
|
(22) а какие еще время жрущие операции? и как их правильно выполнять?
|
|||
24
zelenprog
22.09.12
✎
18:55
|
есть проблема с удалением документов - чтобы было быстрее вроде надо перенести ТА в начало периода удаления, и начать удалять в обратном порядке
|
|||
25
КонецЦикла
22.09.12
✎
22:07
|
(0) Тут еще группировки нужны, их колбасить 1С долговато будет
Проще и быстрее выгрузить итоги, тем более операция разовая |
|||
26
Nirvana
22.09.12
✎
23:12
|
(0) РассчитатьРегистрыНа(ДатаСвертки+1)
|
|||
27
ADirks
23.09.12
✎
09:00
|
(24) Проще перед чисткой удалить файлы RA* и RG*, ну и до кучи 1sentry, и чего-то там ещё, что за бух.итоги отвечает. Для пущего ускорения можно удалить все DT*, и ненужные DH* (ненужные - это те виды док., которые полностью удаляются). Сформированные остатки перед этим выгрузить в файл (ЗначениеВФайл(тзВсеОстатки);).
|
|||
28
mishaPH
23.09.12
✎
09:30
|
(10) пустое значение - это тоже значение. если + без хар-ки и - без то все норм
|
|||
29
zelenprog
24.09.12
✎
10:39
|
(14),(28) значит у меня все "ОК" с регистрами - закрываются
|
|||
30
zelenprog
24.09.12
✎
10:42
|
(26) хм.. интересная идея
что-то никто не прокомментировал раз уж пошла такая пьянка, может быть обсудим все способы? |
|||
31
1Сергей
24.09.12
✎
10:45
|
(23) запись движений (проведение) - вот самая жрущая операция
|
|||
32
Эльниньо
24.09.12
✎
10:47
|
(31) При свёртке?
|
|||
33
zelenprog
24.09.12
✎
10:53
|
(31) при свертке ведь всего несколько документов проводятся с остатками
|
|||
34
1Сергей
24.09.12
✎
10:53
|
(32) да. Проведение Ввода остатков - самая долгая операция. Хотя, смотря на какую дату сворачиваем. Если оставляем достаточно большой период, то сдвиг ТА на текущий день может занять тоже не мало времени.
|
|||
35
1Сергей
24.09.12
✎
10:54
|
(33)не знаю, не знаю. На прошлом месте работал, у нас там было около 50 документов ввода остатков, а в некоторых до нескольких сотен тысяч строк
|
|||
36
zelenprog
24.09.12
✎
10:54
|
(34) ну получается время занимает не само проведение остатков, а перемещение ТА
|
|||
37
zelenprog
24.09.12
✎
11:19
|
Подведем итоги :)
На текущий момент обсуждались следующие варианты получения остатков для свертки: 1) Запрос (1С, без переноса ТА) 2) РассчитатьРегистрыНа(ДатаСвертки) 3) Перенос ТА на нужную дату + ВыгрузитьИтоги без расчета регистра 4) Прямой запрос 4.1) Прямой запрос с переносом ТА 4.2) Прямой запрос без переноса ТА 5) РассчитатьРегистрыНа(ДатаСвертки+1) Из обсуждений следует, что самый быстрый - это прямой запрос с переносом ТА. Может расставим другие варианты в порядке увеличения времени? |
|||
38
Nirvana
25.09.12
✎
00:42
|
(37) Всё зависит от того, на какой момент получать остатки.
Вариант 1: на начало периода - рассчитанные остатки уже есть в базе. Вариант 2: на любой другой момент в периоде - к остаткам на начало периода будут добавлены все движения от начала периода до этого момента. Остатки НА 01.01 - это остатки на начало января (вариант 1). Остатки ПО 31.12 - это остатки по конец декабря (вариант 2). |
|||
39
Simod
25.09.12
✎
05:49
|
(0) Свертка базы операция однократная, так что неважно, каким способом или методом будут получены остатки.
Время затраченное на обсуждение проблемы многократно превысило время расчета остатков. |
|||
40
1Сергей
25.09.12
✎
06:58
|
(38) остатки на конец периода = остатки на начало следующего периода
С уважением, КЭП |
|||
41
Mikeware
25.09.12
✎
07:41
|
(39) время, затраченное на обсуждение, превысило не только время расчета остатков, но и время написания собственной свертки, и самого процесса свертки.
|
|||
42
Mikeware
25.09.12
✎
07:43
|
(39) а вот насчет "однократности" - я бы поспорил.
у меня "автоподрезка" стоит в шедулере, каждый месяц база на месяцок "укорачивается"... естественно, в часы наименьших нагрузок... |
|||
43
Simod
25.09.12
✎
09:05
|
Если база каждый месяц нуждается в "укорачивании", то либо что-то с ней не так, либо у того, кто ее обслуживает.
|
|||
44
Эльниньо
25.09.12
✎
09:31
|
(38) Ух ты! Это открытие!
|
|||
45
Mikeware
25.09.12
✎
11:06
|
(43)База довольно большая, уже 81. Даже бэкап создает некоторую нагрузку.
если есть архивная база, в которой хранятся данные за 8 лет - зачем держать большую (более 3 лет) оперативную? вот она и держится автоматом в размере 37 месяцев... |
|||
46
Nirvana
25.09.12
✎
15:19
|
(40) Не, ни фига. Рассчитываться они будут по-разному.
Теоретически остатки по 31.12 и на 01.01 могут даже отличаться, если в своё время произошёл какой-нибудь сбой при открытии периода. |
|||
47
Mikeware
25.09.12
✎
15:20
|
(46) штатным методом - по разному. оптимальным - одинаково.
|
|||
48
Nirvana
25.09.12
✎
15:50
|
(47) Как может быть "одинаково", если для одного случая нужен лишь кусок таблицы RG, а для другого придётся ещё и часть RA обрабатывать?
|
|||
49
Mikeware
25.09.12
✎
15:57
|
(48) штатный метод берет остатки на предыдущий период, и прибавляет обороты.
оптимизированный запрос берет остатки на ближайший период, и прибавляет или вычитает обороты (в данном предельном случае - о оборотов)) |
|||
50
Nirvana
25.09.12
✎
16:10
|
(49) Интеллектуальный механизм?
А как он вычислит ближайший период - по разнице дат или по количеству движений между датами? |
|||
51
Mikeware
25.09.12
✎
16:13
|
(50) по разнице дат. по количеству - можно сделать, но это потребует дополнительных затрат, сравнимых со стоимостью самого запроса.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |