В практике сопровождения конфигурации 1С:Бухгалтерия 3.0 иногда возникает неприятная ситуация: документ (например, Поступление наличных с видом операции Розничная выручка, который в типовом сценарии не формирует бухгалтерских записей) внезапно начинает отображаться в карточке счета с проводками другого документа или старой хозяйственной операции. В результате бухгалтерия видит задвоение оборотов или некорректное сальдо, а при переходе из отчета открывается документ, который таких записей делать не должен.
Разберем детально, почему возникает подобный рассинхрон между шапкой документа и записями регистра бухгалтерии Хозрасчетный, как выяснить первоисточник проблемы и как гарантированно очистить некорректные движения.
Платформа 1С:Предприятие 8.3 хранит документ и его движения в разных таблицах СУБД, связанных полем Регистратор. Проанализируем ключевые ситуации, при которых данные таблиц могут разойтись:
РежимЗаписиДокумента.Запись), реквизиты объекта обновляются, однако движения в регистрах остаются прежними.ВидОперации через инструмент Групповое изменение реквизитов без явной установки флага перепроведения объект перезаписывается на уровне базы данных, сохраняя старый набор проводок.Ручная корректировка (разрешает редактирование движений документа) (свойство РучнаяКорректировка = Истина), платформа блокирует автоматическое удаление и переформирование движений при изменении полей документа вплоть до снятия этого флага.1С:Розница или 1С:Управление торговлей) часто используется режим ОбменДанными.Загрузка = Истина. В этом режиме стандартные проверки и очистка движений модулей объектов отключаются.Выясним причину модификации конкретного документа с помощью журнала регистрации. Для этого выполним следующие действия:
Поступление наличных.Данные. Изменение и Данные. Проведение. Обратим внимание на то, кто из пользователей вносил правки, каким сеансом (фоновым заданием, внешним подключением или интерактивно) и в какое время менялся вид операции.Рассмотрим порядок исправления ситуации непосредственно в информационной базе:
Посмотрим на пример кода, позволяющего программно перезаписать и перепровести документы, если в результате обменов или некорректных обработок вид операции разошелся с движениями:
Выборка = Документы.ПоступлениеНаличных.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Проведен И Выборка.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКОПКО.РозничнаяВыручка") Тогда
ДокОбъект = Выборка.ПолучитьОбъект();
Если ДокОбъект.РучнаяКорректировка Тогда
ДокОбъект.РучнаяКорректировка = Ложь;
КонецЕсли;
Попытка
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ЗаписьЖурналаРегистрации("ИсправлениеПроводок", УровеньЖурналаРегистрации.Ошибка, , ДокОбъект.Ссылка, ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
Для предотвращения повторного возникновения расхождений и скрытых ошибок в учете выполним комплекс регламентных процедур:
Хозрасчетный, либо запустим режим Тестирование и исправление в конфигураторе с обязательным выбором пункта Пересчет итогов.1C:Enterprise 8.3 Server Agent и очистим каталоги кэша на сервере приложений.UPDATE STATISTICS) и перестроение индексов для таблиц регистров бухгалтерии.