Ошибка возникает при непосредственном удалении записи в таблице с количеством записей более 16777215 штук. Удаляемые записи могут располагаться и до этой границы.
Сообщение об ошибке указывает на индекс «IDELETED» с индексным выражением «D» и выражением фильтра «DELETED()». Этот индекс используется для нахождения помеченных на удаление записей и размещения на их месте новых добавляемых записей.
Ранее мы сталкивались с этой ошибкой. В этот раз у клиента оказалось все сложнее. Описание задачи:
Сообщение об ошибке
Прочие рекомендации по исправлению
- удаление cdx-файлов и индексация БД;
- выполнение «Тестирование и исправление»;
- очистка базы от помеченных на удаление элементов;
- выполнение свертки.
Временное решение
В качестве временной меры в ручном режиме рекомендуется следующее.
Последовательность действий:
- Срочно выгнать всех пользователей из 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 служит для отбора счетов.
Открываем конфигуратор, заходим в проводки и убираем галочку «Разрешить отбор» в группе «Отбор по счетам». Сохраняем. Изменения происходят быстро. После изменения данный файл перестает существовать.
Комментарии
3Что это было?
В дурке день открытых дверей?
Особенно впечатлило:
СУБД - система управления базами данных. Например, 1С - это типичная реляционная СУБД.
Скорее всего, автор хотел сказать "не задумывайтесь на пешеходном переходе о СУБД, а то как и мне машина башка попадет, совсем индексы потеряешь" ...
По-моему, автор несколько запоздал со своими советами... Эдак лет на 10-ть, когда 1С 7.7 была в тренде.
Актуально до сих пор)