![]() |
|
|
| ||
OldCondom 31.03.21 - 12:49 | УПП.
Регистр накопления "Расходы при УСН". Таблица движений: dbo._AccumRg28133 5 605 052(число записей) 1 868 352(данные Кб) Таблица итогов: dbo._AccumRgT28152 164 660 849(число записей) 51 091 520(данные Кб) Я так полагаю, это не совсем нормально. Думал нулевые записи(это вроде запись, при которой все ресурсы = 0, верно?), ни одной не выдал запросом: SELECT count(*) FROM [dbo].[_AccumRgT28152] where [_Fld28147] = 0 and [_Fld28148] = 0 and [_Fld28149] = 0 Пересчет итогов увеличивает размер таблицы. Делал truncate table, потом пересчет - результат схож. Пока что еще не делал ТИИ, может быть что и изменится. Вопрос: на что обратить внимание? Откуда такое количество записей и данных? Что не так может быть с базой? Таких регистров 2. | ||
OldCondom 1 - 31.03.21 - 12:52 | И кстати да, странно, что номера таблиц не совпадают, хотя может это и норма. Названия таблиц смотрел через ПолучитьСтруктуруХраненияБазыДанных(). | ||
acanta 2 - 31.03.21 - 12:54 | Предположим, есть движения, которые сформировали развернутые остатки (неважно, приход или расход). Предположим что периодичность хранения итогов не месяц а день...
Предположим, что единственное движение было год назад... | ||
H A D G E H O G s 3 - 31.03.21 - 12:56 | Или на начало тысячелетия... | ||
H A D G E H O G s 4 - 31.03.21 - 12:57 | |||
OldCondom 5 - 31.03.21 - 12:58 | Понял, уже думаю над запросом. Обработку скачал, спасибо | ||
OldCondom 6 - 31.03.21 - 12:58 | а, ну собственно в обработке и есть запрос) | ||
vis_tmp 7 - 31.03.21 - 12:59 | (6)Что там? | ||
Вафель 8 - 31.03.21 - 13:00 | на всякий случай можно поставить начало периода рассчитанных итогов | ||
acanta 9 - 31.03.21 - 13:03 | (8) во! А можно начало периода рассчитанных итогов каждый месяц сдвигать на начало этого месяца? | ||
Ненавижу 1С 10 - 31.03.21 - 13:10 | (4) немного рефакторинга:
&НаСервере Процедура ПоказатьНаСервере() ПоказатьТаблицуНаСервере(ТаблицаМинимальныхДат,"МинимальнаяДата",Ложь); ПоказатьТаблицуНаСервере(ТаблицаМаксимальныхДат,"МаксимальнаяДата",Истина); КонецПроцедуры &НаСервере Процедура ПоказатьТаблицуНаСервере(Таблица, ИмяКолонки, ПоУбыванию) СуффиксСортировки = ?(ПоУбыванию," Убыв",""); Таблица.Очистить(); Для Каждого Метаданное Из Метаданные.РегистрыНакопления Цикл Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ ПЕРВЫЕ 1 | Регистр.Период КАК Период |ИЗ | РегистрНакопления."+Метаданное.Имя+" КАК Регистр | |УПОРЯДОЧИТЬ ПО | Период"+СуффиксСортировки; Выборка=Запрос.Выполнить().Выбрать(); Если не Выборка.Следующий() Тогда Продолжить; КонецЕсли; НоваяСтрока=Таблица.Добавить(); НоваяСтрока.ИмяРегистра=Метаданное.Синоним; НоваяСтрока[ИмяКолонки]=Выборка.Период; НоваяСтрока[ИмяКолонки+"Строкой"]=Выборка.Период; КонецЦикла; Таблица.Сортировать(ИмяКолонки+СуффиксСортировки); КонецПроцедуры | ||
Kassern 11 - 31.03.21 - 13:21 | (10) тогда уж:
Если Выборка.Следующий() Тогда НоваяСтрока=Таблица.Добавить(); НоваяСтрока.ИмяРегистра=Метаданное.Синоним; НоваяСтрока[ИмяКолонки]=Выборка.Период; НоваяСтрока[ИмяКолонки+"Строкой"]=Выборка.Период; КонецЕсли; | ||
Галахад 12 - 31.03.21 - 13:27 | Хм. А к зачем тут рефакторинг? Обработка разовая. Кода на один экран. | ||
mistеr 13 - 31.03.21 - 13:34 | |||
arsik 14 - 31.03.21 - 14:04 | А в чем критичны очень в будущее или в прошлое смещение дат?
Если в прошлое, то там по минимуму, ну будет хранится итог по одному движению дохрелиард раз. Ну допустим 1980 год, 490 месяцев. Если в будущее, то итоги то актуальны на текущий месяц, они в будущее не рассчитываются же. | ||
H A D G E H O G s 15 - 31.03.21 - 14:10 | (14) 490 вставочек остатков при проведении документа, если попадешь на тот срез измерений. | ||
H A D G E H O G s 16 - 31.03.21 - 14:11 | (14) Но обычно там нулевая дата, когда движения делаются не по дате документа, а по датеотгрузки к примеру, а док загружен вводом остатков каким нибудь или реквизит самописный.
Я давно предлагал ввести генерацию ошибки на уровне платформы, но nobody_carer | ||
ЧессМастер 17 - 31.03.21 - 14:29 | |||
Вафель 18 - 31.03.21 - 14:30 | (17) даже если бы не закрывались, то остатков не может быть существенно больше движений | ||
NorthWind 19 - 31.03.21 - 14:41 | (18) почему? Как я понимаю, одно незакрытое в ноль движение порождает по записи в каждый период, т.е. из одной записи движений может получиться столько записей итогов, сколько было периодов. Т.е. довольно много. Нет? | ||
OldCondom 20 - 31.03.21 - 14:49 | (17)В тот то и дело, что нет. Висит одна запись от 2017 года. Но 150млн строк этого конечно не хватит.
Я видимо чего-то не понимаю. Если бы когда-то в лохматом году сделалась запись(+ или -) и больше по этой аналитике ничего, так я бы увидел это элементарно в запросе "выбрать * из РН.Товары.Остатки". Но там одна строка. (18) Вот именно. И с этого факта я недоумеваю. Читаю уже ИТС и до сих пор не доходит, что пошло не так. | ||
H A D G E H O G s 21 - 31.03.21 - 14:51 | (20) Разделение итогов включено? | ||
Ненавижу 1С 22 - 31.03.21 - 14:51 | (12) спортивный интерес | ||
Ненавижу 1С 23 - 31.03.21 - 14:52 | (11) это уже вкусовщина, мне больше нравится
Если не Выборка.Следующий() Тогда
Продолжить;
КонецЕсли; | ||
OldCondom 24 - 31.03.21 - 14:56 | (21) да | ||
OldCondom 25 - 31.03.21 - 15:02 | разделение отключил, идет реструктуризация. Посмотрим, что будет. | ||
OldCondom 26 - 31.03.21 - 15:22 | хех. Отключил разделение.
Итог: 5млн записей, 1.6Гб вес. Неплохо. | ||
Очевидно 27 - 31.03.21 - 15:57 | (26) на самом деле "отключать" разделение - не обязательно.
Если верить ИТС : https://its.1c.ru/db/metod8dev/content/1393/hdoc Нужно пересчитать итоги, и они должны сами свернуться... | ||
OldCondom 28 - 31.03.21 - 16:13 | (27) да, читал эту статью сегодня.
Но по факту, когда сделал полный пересчет только по этому регистру, он увеличился еще на 20-30 гигов(точно не помню). Затем сделал truncate table и еще раз пересчет - вернулся в первоначальные 50Гб | ||
Злопчинский 29 - 31.03.21 - 16:15 | ну, значит, не закрыт. запихнули че-нить вместо реквизита в измерение и всё... кури бамбук | ||
OldCondom 30 - 31.03.21 - 16:18 | (29) возможно надо было начать с ТИИ, логическая целостность и битые ссылки, а потом пересчет. Может дело было в этом и правда. Рекламное место пустует | ||
ЧессМастер 31 - 31.03.21 - 17:52 | (18) >остатков не может быть существенно больше движений
Почему не может ? Если ты сделаешь документ на сто тысяч строк с датой 01.01.2000 и без движений до текущей даты то у тебя движений будет сто тысяч строк а остатков сто тысяч на каждый период. Таблица итогов для регистра накопления хранит остатки в разрезе всех измерений с периодичностью месяц, на начало месяца. В результате у тебя в этой таблице будет по сто тысяч записей на каждый месяц. Проектирование регистра как с движениями только в одну сторону (только приход без расхода и наоборот) как и пропуск закрытия остатков по некоторым измерениям на экзамене является грубой ошибкой. | ||
Aleksey 32 - 31.03.21 - 17:59 |
|
Список тем форума |