Имя: Пароль:
1C
1С v8
1с 8.2 Р-р накопления (остатки). Разные остатки в ВТ Остатки и ОстаткиИОбороты
0 NatalySH
 
18.04.16
14:04
База: сильно переписанная БП 3.0.23.8. Платформа 1с 8.2.19.80, sql server 2012.
Регистр остатков РасчетыАП имеет два изменения ААА и ППП. Делаем отбор без ограничения периода по ППП = Вася, получаем такую картину по регистру (колонка с расчетом сальдо добавлена вручную):
Период    Регистратор    Приход/ Расход    ААА (Измерение)    ППП (измерение)    Сумма    Сальдо
15.01.2016 23:59:59    Док 1    1    Организация 1    Вася    9 000,00    9 000,00
21.01.2016 23:59:59    Док 2    1    Организация 1    Вася    12 000,00    21 000,00
29.01.2016 23:59:59    Док 3    1    Организация 1    Вася    7 000,00    28 000,00
31.01.2016 23:59:59    Док 4    -1    Организация 1    Вася    1 680,00    26 320,00
04.02.2016 23:59:59    Док 5    1    Организация 1    Вася    50 000,00    76 320,00
05.02.2016 23:59:59    Док 6    1    Организация 1    Вася    17 500,00    93 820,00
24.02.2016 23:59:59    Док 7    -1    Организация 1    Вася    26 320,00    67 500,00
24.02.2016 23:59:59    Док 8    -1    Организация 1    Вася    63 000,00    4 500,00
26.02.2016 23:59:59    Док 9    1    Организация 1    Вася    50 000,00    54 500,00
29.02.2016 23:59:59    Док 10    -1    Организация 1    Вася    7 050,00    47 450,00
01.03.2016 23:59:59    Док 11    1    Организация 1    Вася    10 000,00    57 450,00
10.03.2016 23:59:59    Док 12    -1    Организация 1    Вася    47 450,00    10 000,00
31.03.2016 23:59:59    Док 13    -1    Организация 1    Вася    600,00    9400,00

Случай 1: для запроса назначаем параметры:
«ППП» = Вася, «Дата» = Граница (включая) 01.03.2016  0:00:00
Если получать остатки по виртуальной таблице РегистрНакопления.РасчетыАП.Остатки(&Дата, ППП = &ППП), получаем РасчетыАП Остатки.СуммаОстаток = 47 450,00 – это правильно
Если получать остатки по виртуальной таблице РегистрНакопления.РасчетыАП.ОстаткиИОбороты(, &Дата, , , ППП = &ППП), получаем РасчетыАПОстаткиИОбороты.СуммаКонечныйОстаток = 47 450,00 – это правильно
Случай 2 (с ошибкой): для запроса назначаем параметры:
«ППП» = Вася, «Дата» = Граница (включая) 01.03.2016  0:00:01
Если получать остатки по виртуальной таблице РегистрНакопления.РасчетыАП.Остатки(&Дата, ППП = &ППП), получаем РасчетыАП Остатки.СуммаОстаток = -15 550,00 - это неправильно
Если получать остатки по виртуальной таблице РегистрНакопления.РасчетыАП.ОстаткиИОбороты(, &Дата, , , ППП = &ППП), получаем РасчетыАПОстаткиИОбороты.СуммаКонечныйОстаток = 47 450,00 – это правильно

Получается, что при формировании временной таблицы РегистрНакопления.РасчетыАП.Остатки  в секунде между 01.03.2016  0:00:00 и 01.03.2016  0:00:01 откуда-то берется «фиктивное» расходное движение на 63 000,00. Если смотреть регистр в режиме пп, то ни в феврале, ни в марте «подходящих» движений нет (с отбором по ППП = Вася все движения регистра представлены в таблице выше; отбор по сумме 63 000,00 с отключенными другими отборами показывает только движения документа Док 8).

Что делали: пересчитывали итоги по регистру; распроводили документ Док 8; переносили Док 8 «вперед» в середину марта – результат остается тот же: вьюшка РегистрНакопления.РасчетыАП.Остатки упорно «видит» лишний расход на 63 000.
Посмотрели физическую sql таблицу регистра – там тоже «левых» записей не видно.
Вопрос: как еще можно побороться с этой ситуацией, где и как поискать эту «лишнюю несуществующую»  запись?
1 vicof
 
19.04.16
08:13
Используйте границу вместо даты в остатках
2 NatalySH
 
19.04.16
09:41
(1) так и делаю, читайте внимательно сабж.
3 aleks_default
 
19.04.16
09:59
может ТИИ?
4 NatalySH
 
19.04.16
11:45
(3) ТИИ в тестовой копии пробовали без меня - сожрало место на сервере, накрылись вообще все рабочие базы, и само ТИИ пришлось остановить (а другими серваками не располагаем). А так-то оно бы помогло, поскольку:

Пришлось действовать методом научного тыка: сначала удалила вообще все движения регистра без отбора (путем получения регистраторов регистра и удаления их движений) - ошибка ушла. Тогда удалила движения регистра только с марта по апрель 2016 - ошибка ушла. Дальше повезло: оказалось, что "битую запись" делал первый же мартовский документ (в движениях которого значение измерения ППП было совсем не то, по которому глюк). Просто распроведение этого документа ошибку не устраняло: надо было (а) программно удалить его движения по регистру и (б) перепровести документ.

Проблема решена.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший