Ошибка возникает при непосредственном удалении записи в таблице с количеством записей более 16777215 штук. Удаляемые записи могут располагаться и до этой границы.
Сообщение об ошибке указывает на индекс «IDELETED» с индексным выражением «D» и выражением фильтра «DELETED()». Этот индекс используется для нахождения помеченных на удаление записей и размещения на их месте новых добавляемых записей.
Ранее мы сталкивались с этой ошибкой — в статье «Критическая ошибка при входе в 1С 7.7». В этот раз у клиента оказалось все сложнее. Описание задачи:
У нас 1с7 начала выдавать ошибку, после индексации (с удалением .cdx ) снова можно работать от 30 минут до 2х часов и снова ошибки. Помогите, пожалуйста, разобраться в причинах и восстановить нормальную работу программы.
Сообщение об ошибке
Прочие рекомендации по исправлению
- удаление cdx-файлов и индексация БД;
- выполнение «Тестирование и исправление»;
- очистка базы от помеченных на удаление элементов;
- выполнение свертки.
Временное решение
Нам помогла статья с портала Инфостарт. В качестве временной меры в ручном режиме рекомендуется следующее.
Суть способа: отключить индекс «IDELETED» для проблемных таблиц. Естественно, отключится механизм использования помеченных на удаление записей (в терминах DBF). А это приведет к более быстрому росту размера таблицы.
Последовательность действий:
- Срочно выгнать всех пользователей из 1C. Не сохранять никаких открытых форм ввода информации. Прекратить/прервать выполнение отчетов. Если произошёл сбой при выполнении регламентных работ, то восстановить базу с последней копии.
- В сообщении об ошибке -310 не выдается имя таблицы — необходимо найти эту таблицу силой ума или открытием подряд всех DBF-ов в порядке от большего размера файла к меньшему. Ищем таблицы в которых количество записей подбирается или уже больше 16777215 шт.
- Удалить все CDX-файлы. Зайти в сессию 1С монопольно и выполнить реиндексацию.
- Вызвать утилиту обслуживания DBF/CDX структур. Например, бесплатную утилиту «Advantage Data Architect». На сайте с программной сообщается, что: «Этот выпуск не поддерживается. Загрузки предоставлены в качестве любезности».
- Открыть проблемную таблицу в формате «FoxPro (DBF/CDX)». Вызвать свойства таблицы. Выбрать закладку с описанием индексов. Найти индекс «IDELETED». Изменить выражение фильтра с «DELETED()» на «.F.». Сохранить изменения с реиндексацией. Закрыть таблицу.
- Открыть таблицу «1SUSERS» (DBF-файл без индексов). В поле «USRSCNT» установить значение больше нуля. Закрыть таблицу. Выйти из утилиты.
- Запустить сессию 1С в монопольном режиме. Согласиться с реиндексацией.
В перспективе для исключения подобных сбоев в базе — задумайтесь о переходе на СУБД.
✅ Необходимо повторять действия по отключению индекса после каждого удаления файлов CDX. После реиндексации без удаления файлов повторять отключение индекса не надо.
Дополнение
Касается только бухгалтерии и только файла 1SACCSEL.DBF. Из описания — файл 1SACCSEL.DBF служит для отбора счетов.
Открываем конфигуратор, заходим в проводки и убираем галочку «Разрешить отбор» в группе «Отбор по счетам». Сохраняем. Изменения происходят быстро. После изменения данный файл перестает существовать.
_____________________________________
⚡ Подписывайтесь на канал или задавайте вопрос на сайте — постараемся помочь всеми техническими силами. Безопасной и производительной работы в Windows и 1С.