Имя: Пароль:
1C
1С v8
Некорректное обновление агрегатов регистра накопления
,
0 nifendervan
 
17.05.17
06:41
Здравствуйте.
Добавил в конфигурацию регистр накопления и включил у него агрегаты. Создал 2 агрегата с периодичностью День. Движения в регистр пишутся как обычно при проведении документов.

Проблема: провожу документы за 1 день, обновляю агрегаты. После этого если сравнить обороты, полученные с помощью виртуальной таблицы, и обороты, полученные по самим движениям, то они отличаются. Профайлером посмотрел, что виртуальная таблица обращается к таблицам агрегатов. Оказалось, что в агрегаты попадают не все движения. Чтобы привести таблицы агрегатов к правильному состоянию необходимо очистить их и обновить заново.

Кто-нибудь встречался с подобной проблемой?
Платформа 1С:Предприятие 8.3 (8.3.8.2167), самописная конфигурация.
1 sFAQer
 
17.05.17
06:56
2 nifendervan
 
17.05.17
07:12
(1) Да, это я все читал перед началом использования агрегатов:
1.В режиме 1С:Предприятие получить список оптимальных агрегатов.
2.В конфигураторе создать оптимальные агрегаты.
3.В режиме 1С:Предприятие включить режим агрегатов для регистра.
4.Выполнить перестроение сети агрегатов.
5.Выполнить обновление агрегатов.
Вот как раз на пятом шаге ошибка - в агрегаты попадают не все движения.
3 sFAQer
 
17.05.17
07:18
(2) А какие отличия между таблицей агрегатов и таблицей движений? Может у тебя там новые документы уже в пуле на обновление?
4 nifendervan
 
17.05.17
07:30
(3) Некоторые записи не попадают в агрегаты. Виртуальная таблица оборотов возвращает некорректные обороты.
Новые документы пишутся в промежуточную таблицу новых движений (так она называется, если посмотреть методом ПолучитьСтруктуруХраненияБазыДанных()), потом есть еще некая буферная таблица для расчета оборотов, и только потом данные попадают в таблицы агрегатов. Но ведь запрос должен возвращать корректные данные, независимо от стадии обновления агрегатов. А выходит нифига не так, строки где-то теряются. Запрос к виртуальной таблице 1С должен разворачивать в SQL-запрос ко всем трем таблицам механизма агрегатов. По факту этот запрос не всегда используется буферную таблицу.
Возможно, дело в релизе платформы. Может быть, и я что-то не так делаю, но пока не понимаю что :)
5 nifendervan
 
17.05.17
07:32
У нас большие надежды были на механизм агрегатов. Сильно бы ускорило наши отчеты, потому что считать обороты по таблице движений при ~150 млн. записей в месяц тяжеловато.
Может быть, есть другие методы ускорения расчета оборотов при таких объемах?
6 nifendervan
 
19.05.17
05:52
Переход на платформу 8.3.10.2252 не помог - все та же ошибка обновления. Сделали запрос в 1С.
7 sFAQer
 
19.05.17
07:09
(6) Отпишь что 1С скажет, интерсно таки...
8 h-sp
 
19.05.17
07:16
(5) чтобы ускорить отчеты, надо нанять нормального программиста. Агрегаты здесь не помогут.
9 sFAQer
 
19.05.17
07:24
(8) "~150 млн. записей в месяц" тут никакой рукастый программист не поможет, при таких обортах таки нужны агрегаты...
10 h-sp
 
19.05.17
09:56
(9) 150 млн - это средненько. Допустим один документ - это где-то 10000 записей обычно. ну то есть 15000 документов в месяц. База ниже среднего.
11 sFAQer
 
19.05.17
09:58
(10) И какой документ у тебя генерит 10 тысяч записей в таблицу оборотов, ну допустим "Продажи". 1 документ в 10 тысяч строк? Какие то не средние значения...
12 mehfk
 
19.05.17
09:59
(11) Не ведись на троллинг.
13 sFAQer
 
19.05.17
10:01
(12) и действительно... чё это я....
14 h-sp
 
19.05.17
10:03
(11) там 20 регистров, не забывай. И допустим регистр Партии, по каждой строчке несколько записей генерит.
15 h-sp
 
19.05.17
10:05
(13) приводят обычно как пример. Документ табель в зуп 3.0. Если 100 сотрудников в табеле. То получается там по одному регистру 100Х30дней Х 5 видов времени. Где-то 15000 записей по только одному регистру одного документа. А есть ведь там и другие регистры в этом документе.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс