Ситуация, когда в журнале документов 1С 7.7 внезапно появляются два одинаковых документа с разными номерами или авторами, но при попытке удалить один «страдает» другой — это классический симптом повреждения структуры базы данных или коллизии в распределенной информационной базе (УРБД). В этой статье мы подробно разберем, почему возникают такие «фантомы» и как восстановить работоспособность системы файловой версии на платформе DBF/CDX.
Прежде чем приступать к активным действиям, нам необходимо понять механику сбоя. В 1С 7.7 данные документа распределены по нескольким таблицам:
1SJOURN.dbf — общий журнал, где хранится ссылка на документ, его дата, номер и идентификатор автора.DHxxxx.dbf — таблица шапки конкретного вида документа (где xxxx — уникальный код вида документа из файла 1cv7.dd).DTxxxx.dbf — таблица табличной части документа.Разберем основные сценарии появления дублей:
IDDOC. Если в разных периферийных базах настроены одинаковые префиксы, система может создать два разных документа с одним и тем же внутренним ID. При обмене эти записи «накладываются» друг на друга.Рассмотрим ситуацию, когда ошибка возникла в периферийной базе распределенной системы. Если в центральной базе данные верны, а в «дочке» появились фантомы, мы можем использовать метод полной синхронизации файлов таблиц.
Важно: Перед любыми манипуляциями обязательно создайте архивную копию всей папки с базой данных!
Выполним следующие шаги:
.dbf, кроме системных файлов, отвечающих за настройки распределенки и константы.1SConst.dbf, 1SSystem.dbf, 1SUPDTS.dbf, 1SDWNLDS.dbf и 1SDBSET.dbf. Эти файлы хранят уникальные идентификаторы текущей базы и историю обменов, их замена «убьет» связь между базами..cdx.Если автоматические методы не помогают, нам придется «оперировать» базу вручную. Для этого потребуется DBF-редактор, который корректно работает со старым форматом dBase IV (например, плагин LookDBF для Far Manager или старые версии MS Access).
Разберем алгоритм действий:
1SJOURN.dbf и найдем строку по номеру документа (поле DOCNO) и дате (поле DATE_TIME).IDDOC (это 9-значный код в 36-ричной системе).IDDOC или строку, данные которой не соответствуют визуальным данным из журнала.1SJOURN.dbf. Обратите внимание, что в DBF физическое удаление происходит только после упаковки (Pack), а до этого запись помечается как удаленная (символ «*»).DHxxxx.dbf и DTxxxx.dbf по тому же идентификатору IDDOC и также удалить их..cdx файлы и запустим переиндексацию.Проанализируем стандартные возможности платформы. Иногда достаточно глубокого тестирования, чтобы система сама вычистила логические несоответствия.
Рассмотрим порядок действий в Конфигураторе:
Важное замечание: Не запускайте тестирование сразу на рабочей базе. Если структура сильно повреждена, 1С может необратимо удалить данные. Сначала выполните процедуру на копии и проверьте результат.
Если технических навыков для правки DBF недостаточно, можно пойти по пути наименьшего сопротивления. Попробуем создать новый «чистый» документ.
Рассмотрим шаги:
Выясним, какие профилактические меры помогут избежать подобных сбоев:
IDDOC.1SJOURN.dbf превышает 1 ГБ, пора задуматься о свертке базы или переходе на версию 1С 7.7 для SQL..dbf и .cdx в исключения антивируса на сервере и рабочих станциях. Часто именно блокировка файла антивирусом в момент записи приводит к частичному сохранению документа.Подводя итог, можно сказать, что появление дублей в 1С 7.7 — это всегда сигнал к техническому обслуживанию базы данных. В распределенных системах чаще всего помогает «перезаливка» данных из эталонной центральной базы, а в локальных — ручная очистка таблиц и перестроение индексов.