Имя: Пароль:
1C
1С v8
Итоги регистра накопления не сворачиваются
0 КонецЕсли
 
29.12.21
09:34
Всем привет.
Занимаюсь сверткой регистра накопления в УПП (ЗаказыПокупателей). Обнаружил такую ситуацию: Делаю запрос к вирт.таблице остатков (по всем измерениям - это ВАЖНО) и вижу в результате по две строчки с одинаковыми плюсовыми и минусовыми ресурсами. Измерения идентичны - проверил группировкой по всем измерениям. Далее убираю из выборки ЛЮБОЕ измерение - остатков нет (свернуты). Если выбираю ВСЕ измерения - остатки с +/-.
База серверная на MS SQL server 2008. Платформа 1С:Предприятие 8.3 (8.3.19.1351).
Делал реструктуризацию, пересчет итогов, выгрузку/загрузку dt. Ничего не изменилось.
На скуле в таблице итогов такие строчки:
https://drive.google.com/file/d/1x0wKZkP7t_IItIGcekaTAu6zGfzCQGLm/view?usp=sharing
Строки имеют одинаковые значения полей, кроме собственно итогов и хеша комбинации измерений DimHash.

Как это исправить?
1 pechkin
 
29.12.21
09:34
Пересчет итогов
2 ДенисЧ
 
29.12.21
09:34
Если сказать ТЗ.свернуть - тоже не сворачивает?
3 КонецЕсли
 
29.12.21
09:49
(2) Я работал только консолью запросов. Там если группировать по всем измерениям и Сумма() по ресурсам - сворачивает.
4 КонецЕсли
 
29.12.21
09:50
(1) пересчет итогов делал - не помогло
5 ДенисЧ
 
29.12.21
09:54
(3) Ты определись. Или сворачивает, или нет...
6 КонецЕсли
 
29.12.21
10:01
(5) Я вроде написал: агрегатными функциями - сворачивает, просто запросом к Остаткам ("выбрать измерение1, измерение2, ресурс из РегистрНакопления.хх.Остатки()") - ресурс не свернут.
7 ДенисЧ
 
29.12.21
10:03
(6) Ну так делай запросом, в чём проблема?
8 КонецЕсли
 
29.12.21
10:12
(7) ну так проблема в том что в запрос к остаткам должен возвращать свернутые остатки по измерениям без использования агрегатных функций. В конфе полно запросов к вирт. таблице остатков без агрегатных функций, и если они вместо отсутствия остатков будут выдавать по две записи с +/- то будет плохо
9 Strogg
 
29.12.21
10:17
(0) можно попробовать отключить использование итогов-включить использование итогов. Ну и посчитать актуальные затем.
10 pechkin
 
29.12.21
10:18
А димхэш это не разделитель итого случайно? С ним вроде так и должно быть
11 КонецЕсли
 
29.12.21
10:26
(9,10) Тоже думаю что проблема в нём. Почему то он оказался разный для одинакового набора измерений. Не знаю как 1с пересчитывает итоги: очищает ли она физически таблицу итогов?
Попробую на копии отключить итоги, затем проверю в скуле таблицу итогов: если там что будет - удалю. Затем включу итоги.
12 Ёпрст
 
29.12.21
13:22
(11) не очищает.
Просто сделай truncate table и пересчет. Усё
13 КонецЕсли
 
29.12.21
18:12
Итог такой: физическое удаление записей из таблицы итога и пересчет итогов заново не помогло. Та же картина вернулась. Стал копать глубже и установил что значение поля DimHash переходит в таблицу итога из основной таблицы регистра накопления. В той таблице были записи с пустым значением DimHash. Определил какой документ делает это движение, оказалось это документы "Закрытие заказов покупателей". Перепровёл этот документ и в записи основной таблицы поле DimHash стало заполненным. Запрос по остаткам стал работать как надо.

Связываю это всё с тем что базе 15 лет и она с 8.0 прошла конвертации на 8.1, 8.2, недавно вот на 8.3 перешли (в режиме совместимости). Возможно что-то недопереконвертировалось.
14 Ёпрст
 
29.12.21
18:24
(13) режим совместимости с 8.1 ?
15 runoff_runoff
 
29.12.21
23:19
разделение итогов
https://its.1c.ru/db/v8std/content/664/hdoc
16 Casey1984
 
30.12.21
01:19
(6) Там нигде NULL не зарыт?
17 КонецЕсли
 
30.12.21
07:44
(14) 8.2.16.
(15) разделения итогов по регистру нет.
(16) NULLов там не было.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший