Ситуации, когда данные в информационных базах «живут своей жизнью», часто списывают на внешние факторы: скачки напряжения, грозы или «глюки» системы. В случае с платформой 1С:Предприятие 7.7, работающей на файловой структуре (DBF), вопрос о самопроизвольной пометке документов на удаление стоит особенно остро. Рассмотрим подробно, насколько реально физическое влияние электричества на логические атрибуты объектов и какие скрытые причины могут за этим стоять.
Для начала проанализируем, как технически устроена пометка на удаление в файловой версии 1С 7.7. Данные хранятся в таблицах формата .dbf. Каждая строка (запись) в такой таблице начинается со служебного байта, который определяет статус записи:
*, код 42 в ASCII), запись считается помеченной на удаление.Разберем ситуацию с точки зрения физики. Чтобы документ «сам» пометился на удаление из-за скачка напряжения, электрическая помеха должна была изменить состояние конкретных транзисторов в ячейке памяти или на магнитном диске так, чтобы код 32 превратился в код 42. Вероятность того, что такой «флип» бита произойдет ровно в одном служебном байте, не затронув соседние данные и не разрушив заголовок файла или индексы, ничтожно мала. Как отмечают эксперты, это сопоставимо с шансом выиграть в лотерею несколько раз подряд.
Проанализируем утверждение о том, что скачок напряжения является первопричиной. На самом деле, нестабильное питание действительно губительно для баз 1С 7.7, но последствия обычно выглядят иначе:
Database integrity corrupted или Error reading from database..cdx) перестают соответствовать таблицам данных (.dbf). В этом случае поиск по базе может выдать неверную запись. Вы открываете один документ, а программа «подтягивает» служебный байт от другого, который действительно был удален ранее.Если вы столкнулись с «самопроизвольным» удалением, рекомендуем выполнить следующие действия для установления истины.
1. Проверка журнала регистрации
Выясним, было ли действие совершено пользователем или системой. В 1С 7.7 существует системный Журнал регистрации (файл 1cv7.mlg в папке SysLog). Рассмотрим, как его проанализировать:
2. Анализ аппаратных «призраков» (Беспроводная периферия)
Рассмотрим интересную техническую гипотезу, упомянутую в обсуждении. Если у менеджера или кассира используется беспроводная клавиатура, то при низком заряде батарей или электромагнитных наводках от того же скачка напряжения контроллер клавиатуры может генерировать ложные скан-коды. Клавиша Delete в сочетании с последующим случайным импульсом, похожим на Enter, может мгновенно пометить документ на удаление, если он был выделен в списке.
3. Ошибки сетевого оборудования и OpLocks
Проанализируем ситуацию, если база лежит на сервере. При скачках напряжения может «глючить» не только сервер, но и активное сетевое оборудование (хабы, коммутаторы). В Windows включенный механизм Opportunistic Locking (OpLocks) при кратковременном разрыве связи может привести к тому, что клиентская станция запишет данные некорректно. В 1С 7.7 это часто приводит к тому, что индекс «сдвигается», и статус записи читается неправильно.
Чтобы исключить подобные инциденты в будущем, проделаем следующие шаги:
.cdx, которые могут имитировать удаление.Подводя итог, можно сказать: технически «чистый» скачок напряжения практически никогда не приводит к осмысленному изменению статуса документа. В 99% случаев за этим стоит либо неосторожное действие пользователя, замаскированное под технический сбой, либо критическое повреждение индексов, требующее немедленного обслуживания базы данных.