В процессе работы с конфигурацией 1С:Управление торговлей 10.3 (или другими типовыми решениями 1С:Предприятие) можно столкнуться со специфической проблемой: в табличной части проводимого документа указано одно количество товара (например, 12 штук), а в движении по регистрам накопления записывается абсолютно другое значение (например, 41 штука).
Рассмотрим подробно причины возникновения такой рассинхронизации, разберем по шагам порядок ее устранения и проанализируем профилактические меры, позволяющие избежать подобных сбоев в будущем.
Анализ причин расхождения данных
Выясним, почему возникает ситуация, когда содержимое документа и записи в регистрах накопления перестают соответствовать друг другу. В архитектуре платформы 1С:Предприятие табличные части документов и записи регистров хранятся в совершенно разных таблицах базы данных СУБД. Связь между ними осуществляется логически через исполняемый код программных модулей.
Основные факторы, приводящие к расхождениям:
Аномалии и сбои в транзакциях СУБД: При возникновении таймаутов блокировок или кратковременных сбоев на уровне сервера баз данных возможна ситуация, когда изменения в табличной части документа откатились, а записи в наборах регистров успели зафиксироваться.
Использование динамического обновления конфигурации: Обновление базы данных «на лету» без остановки сеансов пользователей часто приводит к тому, что на сервере приложений или в памяти клиентского сеанса кэшируется старый исполняемый код модуля проведения.
Повреждение локального кэша клиентского приложения: Из-за сбоев во временных файлах на рабочем столе пользователя форма документа может отображать устаревшие или искаженные данные, хотя в самой базе данные записаны иначе.
Особенности кода при вводе на основании: Если документ создавался на основании заказа или заявки, а логика модуля документа содержит ошибки (выборка данных производилась из документа-основания, а не из текущей табличной части), при изменении количеств в реализации движения сформируются по первичному документу.
Прямая запись движений сторонними обработками: Внешние интеграции, скрипты обмена или регламентные задания могли перезаписать наборы записей регистров напрямую по ссылке документа без его фактического перепроведения.
Шаг 1. Исправление расхождения путем перепроведения
Проанализируем самый простой и эффективный способ исправления единичных ошибочных документов. В большинстве случаев повторный вызов процедуры проведения полностью перезаписывает движения актуальными данными из табличной части.
Откроем проблемный документ реализации в режиме 1С:Предприятие.
Убедимся, что количества и суммы в табличной части указаны верно.
Нажмем кнопку Провести и закрыть или вызовем перепроведение из списка документов.
Проверим движения документа по кнопке «Перейти» — «Движения документа по регистрам». Данные в регистрах накопления встанут в соответствие с табличной частью.
Если требуется выполнить перепроведение программно, разберем пример кода на языке 1С:
Если после повторного открытия документа данные на экране продолжают расходиться с движениями, необходимо исключить фактор повреждения локального кэша платформы.
Завершим работу пользователя в 1С:Предприятие.
Удалим временные каталоги платформы 1С, расположенные по адресам:
%AppData%\1C\1Cv82 (или 1Cv8)
%LocalAppData%\1C\1Cv82 (или 1Cv8)
Повторно запустим информационную базу и проверим отображение документа.
Шаг 3. Тестирование и исправление информационной базы
Для устранения возможных ошибок на уровне таблиц СУБД и пересчета итогов регистров выполним регламентную процедуру в режим Конфигуратора.
Запустим базу 1С в режиме Конфигуратор в монопольном режиме.
Перейдем в меню Администрирование > Тестирование и исправление...
Отметим флажками пункты:
Проверка логической целостности информационной базы
Пересчет итогов
Нажмем кнопку Выполнить и дождемся завершения процесса.
Рекомендации по профилактике ошибок
Рассмотрев основные причины возникновения проблемы, сформируем правила для снижения риска подобных сбоев:
Отказ от динамических обновлений: Применяйте обновления рабочей базы данных только при завершенных сеансах пользователей с перезапуском службы сервера приложений 1С.
Анализ журнала регистрации: При обнаружении расхождений проверяйте события в Журнале регистрации по конкретной ссылке документа, чтобы исключить вмешательство фоновых процессов и внешних обменов.
Автоматизированный контроль: Для крупных баз данных рекомендуется настраивать регулярную регламентную обработку, которая сверяет итоговые количества в табличных частях проведенных документов с наборами записей регистров накопления и информирует администратора при выявлении расхождений.