Включение проводок и нарушение агрегации |
В процессе работы с базами данных на платформе 1С-Предприятие 7.7 "Бухгалтерский учет", была диагностирована и подробно рассмотрена следующая проблема: ошибка при включении отключенных проводок операции, приводящая к удваиванию исходных данных в агрегатных таблицах. Проблема возникает в том случае, если разные пользователи в разных сессиях включат отключенные проводки в одной и той же операции. Данная последовательность действий, приводящая к ошибке, была протестирована на 21-м, 23-м и 25-м релизах платформы. По результатом тестирования было выяснено, что ошибка диагностируется в каждом из этих релизов платформы. Как диагностировать ошибку: Для этого нужно взять любую конфигурацию на компоненте "Бухгалтерский учет", разрешить правами пользователям включать и отключать проводки операции. Также нужно убедиться, что на период, в котором находится операция бухгалтерские итоги рассчитаны. Механизм повторения ошибки по шагам:
После этих операций агрегатные таблицы содержат в себе неверные данные - т.е. они были дважды обновлены на основании проводок. Теперь можно выключить проводки или сделать не проведенным документ, в результате возникает ситуация, когда документ не проведен (или проводки отключены), а в отчетах фигурируют движения (в агрегатных таблицах ненулевые записи). Рисунок 1. Состояние базы данных в момент нормальных агрегационных записей. Документ проведен, проводки включены. Рисунок 2. Состояние базы данных после возникновения ошибки агрегации. Как видно, при единственной операции в базе, отчет показывает ненулевой начальный остаток и дублированный конечный. Рисунок 3. Документ помечен на удаление, проводок у операции не существует, в отчете видна ошибка целостности - ненулевой начальный и конечный остаток на дату. Суть ошибки в том, что сеанс 1С, не проверяет перед выполнением действия текущий статус проводок в документе. Таким образом выполняется стандартный набор действий, т.е. обновляется признак активности проводок в таблице проводок _1SENTRY, и выполняются все необходимые действия, чтобы обновить агрегатные таблицы на основании проводок операции, то есть агрегатные таблицы увеличиваются на сумму проводок. В результате получается ситуация, как в нашем примере, что агрегатные таблицы обновляются дважды. При желании можно использовать для теста более двух сессий, тогда агрегатные таблицы обновятся столько раз, сколько будет сессий, при условии соблюдения пунктов (2-5). Исправить эту ошибку на месте – невозможно в связи с сущностью агрегатных таблиц, которые не хранят привязку к конкретному документу. Поэтому при попытке выключить проводки или перепровести документ они изменятся на величину проводок операции и не более того, в результате ошибочно занесенные данные остаются в итогах. Выход из ситуации только один – пересчет итогов, либо полный, либо за период с начала возникновения ошибок до конца. После диагностирования данной проблемы была предпринята попытка исследования процесса отмены проведения и пометки на удаления в таком же тесте. Для этих операций ошибки нарушения агрегации не случилось. Негативные последствия возникновения данной ошибки:
В заключение хочется отметить, что компания "СофтПоинт" имеет свои средства и методики для диагностирования и исправления этой и других ошибок платформы 7.7.
Перепечатка, воспроизведение в любой форме, распространение, в том числе в переводе, любых материалов с сайта www.softpoint.ru возможны только с письменного разрешения компании "СофтПоинт". Это правило действует для всех без исключения случаев, кроме тех, когда в материале прямо указано разрешение на копирование (основание: Закон Российской Федерации "Об авторском праве и смежных правах").
|
Статья: Включение проводок и нарушение агрегации |
Перейти на главную страницу компании "Софтпоинт" |