В процессе работы с файловыми базами данных 1С:Предприятие пользователи иногда сталкиваются с серьезными техническими сбоями, которые проявляются в виде ошибок «файл базы данных поврежден» или «неправильное значение булево». Особенно неприятно, когда это касается критически важных документов, таких как Реализация товаров и услуг и связанные с ними Счета-фактуры выданные. В данной статье мы подробно разберем, как восстановить работоспособность базы, избавиться от «фантомных» документов и корректно очистить регистры в конфигурации Управление торговлей 11.
Прежде чем приступать к активным действиям, выясним причину. Ошибка «неправильное значение булево» при попытке отмены проведения документа чаще всего свидетельствует о логическом повреждении данных на уровне таблиц СУБД (в данном случае — файла .1CD). В поле, которое должно содержать только 0 (Ложь) или 1 (Истина), записывается некорректный символ или значение NULL. Система 1С не может интерпретировать это значение при чтении объекта, что приводит к аварийному завершению операции.
Ситуация осложняется тем, что после стандартного Тестирования и исправления (ТиИ) поврежденный объект может превратиться в «битую ссылку» (Объект не найден), а при попытке перевыставить документ возникают дубли в журналах и регистрах. Рассмотрим пошаговый алгоритм решения этой проблемы.
Проанализируем состояние файла базы данных. Если система сообщает о повреждении файла, первым делом необходимо воспользоваться утилитой chdbfl.exe. Это специализированный инструмент, который входит в состав платформы 1С и предназначен для исправления физической структуры таблиц.
C:\Program Files\1cv8\номер_версии\bin\chdbfl.exe).1Cv8.1CD и обязательно установим флаг «Исправлять обнаруженные ошибки».Важно понимать, что chdbfl.exe работает на уровне байтов и страниц данных, в то время как встроенное ТиИ работает на уровне логики объектов 1С.
Если после физического исправления ошибка при открытии или проведении документа сохраняется, нам нужно принудительно перезаписать некорректные поля. Рассмотрим использование обработки «Групповое изменение реквизитов».
Для этого выполним следующие действия:
Реализация товаров и услуг.Такой подход заставляет систему перезаписать запись в таблице базы данных, заменяя «мусор» на валидное значение.
Разберем ситуацию, когда в базе появилась «битая» счет-фактура, которая не открывается и имеет дубль с тем же номером. В этом случае нам поможет программное удаление с игнорированием проверок целостности. Мы можем воспользоваться встроенным языком 1С для написания небольшой обработки:
// Пример программного удаления объекта по ссылке
Процедура УдалитьБитыйОбъект(СсылкаНаОбъект)
Объект = СсылкаНаОбъект.ПолучитьОбъект();
Если Объект <> Неопределено Тогда
Объект.ОбменДанными.Загрузка = Истина;
Объект.Удалить();
Сообщить("Документ успешно удален");
КонецЕсли;
КонецПроцедуры
Установка свойства ОбменДанными.Загрузка = Истина — это критически важный момент. Этот флаг отключает все подписки на события и встроенные проверки в модуле объекта, позволяя удалить даже «кривой» документ, который вызывает исключение при обычном удалении.
В конфигурации Управление торговлей 11 связь между реализацией и счетом-фактурой часто хранится в независимых регистрах сведений. Даже если сам документ удален, записи о нем могут оставаться в журналах. Проанализируем следующие регистры:
Чтобы очистить эти записи, рекомендуется использовать консоль запросов для поиска записей, где в качестве измерения выступает наша «битая» ссылка. Удаление наборов записей из этих регистров поможет убрать дубли в списках «Выставленные счета-фактуры».
Посмотрим на более сложный, но эффективный метод. Если в системе много документов ссылаются на «Объект не найден», мы можем программно создать новый документ с тем же уникальным идентификатором (GUID).
СчетФактураВыданный с этим идентификатором.
// Пример создания объекта с конкретным GUID
УИД = Новый УникальныйИдентификатор("здесь-ваш-guid-битой-ссылки");
НоваяСсылка = Документы.СчетФактураВыданный.ПолучитьСсылку(УИД);
НовыйОбъект = Документы.СчетФактураВыданный.СоздатьДокумент();
НовыйОбъект.УстановитьСсылкуНового(НоваяСсылка);
НовыйОбъект.Дата = ТекущаяДата();
НовыйОбъект.Записать();
После этого «битая» ссылка «оживет», превратится в полноценный (хоть и пустой) документ, который теперь можно пометить на удаление и стереть штатными средствами через «Удаление помеченных объектов» с контролем ссылочной целостности.
Выясним, как эта ситуация повлияет на синхронизацию. При выгрузке данных в 1С:Бухгалтерия 8 крайне важно, чтобы битая ссылка не попала в план обмена. Рассмотрим рекомендации:
Реализация товаров и услуг и проверьте, не зарегистрирован ли для обмена удаленный или битый счет-фактура.Разберем, как избежать подобных проблем в будущем. Файловый вариант базы .1CD чувствителен к разрывам сетевого соединения и внезапным отключениям электроэнергии. Для повышения надежности рекомендуется:
Применяя описанные методы в комплексе — от физического исправления утилитой chdbfl.exe до точечной очистки регистров и программного удаления объектов, — мы сможем полностью устранить последствия сбоя и вернуть базу в корректное состояние.