Как справиться с ошибкой «CodeBase Error #: -310» в 1С:Предприятие 7.7

Ошибка возникает при непосредственном удалении записи в таблице с количеством записей более 16777215 штук. Удаляемые записи могут располагаться и до этой границы.
Как справиться с ошибкой «CodeBase Error #: -310» в 1С:Предприятие 7.7

Ошибка возникает при непосредственном удалении записи в таблице с количеством записей более 16777215 штук. Удаляемые записи могут располагаться и до этой границы.

Сообщение об ошибке указывает на индекс «IDELETED» с индексным выражением «D» и выражением фильтра «DELETED()». Этот индекс используется для нахождения помеченных на удаление записей и размещения на их месте новых добавляемых записей.

Ранее мы сталкивались с этой ошибкой. В этот раз у клиента оказалось все сложнее. Описание задачи:

У нас 1с7 начала выдавать ошибку, после индексации (с удалением .cdx ) снова можно работать от 30 минут до 2х часов и снова ошибки. Помогите, пожалуйста, разобраться в причинах и восстановить нормальную работу программы.

Сообщение об ошибке

Сообщение об ошибке
 
Сообщение об ошибке

Прочие рекомендации по исправлению

  • удаление cdx-файлов и индексация БД;
  • выполнение «Тестирование и исправление»;
  • очистка базы от помеченных на удаление элементов;
  • выполнение свертки.

Временное решение

В качестве временной меры в ручном режиме рекомендуется следующее.

Суть способа: отключить индекс «IDELETED» для проблемных таблиц. Естественно, отключится механизм использования помеченных на удаление записей (в терминах DBF). А это приведет к более быстрому росту размера таблицы.

Последовательность действий:

  1. Срочно выгнать всех пользователей из 1C. Не сохранять никаких открытых форм ввода информации. Прекратить/прервать выполнение отчетов. Если произошёл сбой при выполнении регламентных работ, то восстановить базу с последней копии.
  2. В сообщении об ошибке −310 не выдается имя таблицы — необходимо найти эту таблицу силой ума или открытием подряд всех DBF-ов в порядке от большего размера файла к меньшему. Ищем таблицы в которых количество записей подбирается или уже больше 16777215 шт.
  3. Удалить все CDX-файлы. Зайти в сессию 1С монопольно и выполнить реиндексацию.
  4. Вызвать утилиту обслуживания DBF/CDX структур. Например, бесплатную утилиту «Advantage Data Architect». На сайте с программной сообщается, что: «Этот выпуск не поддерживается. Загрузки предоставлены в качестве любезности».
  5. Открыть проблемную таблицу в формате «FoxPro (DBF/CDX)». Вызвать свойства таблицы. Выбрать закладку с описанием индексов. Найти индекс «IDELETED». Изменить выражение фильтра с «DELETED()» на «.F.». Сохранить изменения с реиндексацией. Закрыть таблицу.
  6. Открыть таблицу «1SUSERS» (DBF-файл без индексов). В поле «USRSCNT» установить значение больше нуля. Закрыть таблицу. Выйти из утилиты.
  7. Запустить сессию 1С в монопольном режиме. Согласиться с реиндексацией.

В перспективе для исключения подобных сбоев в базе — задумайтесь о переходе на СУБД.

Необходимо повторять действия по отключению индекса после каждого удаления файлов CDX. После реиндексации без удаления файлов повторять отключение индекса не надо.

Дополнение

Касается только бухгалтерии и только файла 1SACCSEL.DBF. Из описания — файл 1SACCSEL.DBF служит для отбора счетов.

Открываем конфигуратор, заходим в проводки и убираем галочку «Разрешить отбор» в группе «Отбор по счетам». Сохраняем. Изменения происходят быстро. После изменения данный файл перестает существовать.

Комментарии

3
  • Что это было?

    В дурке день открытых дверей?

    Особенно впечатлило:

    задумайтесь о переходе на СУБД

    СУБД - система управления базами данных. Например, 1С - это типичная реляционная СУБД.

    Скорее всего, автор хотел сказать "не задумывайтесь на пешеходном переходе о СУБД, а то как и мне машина башка попадет, совсем индексы потеряешь" ...

  • VadimBA

    По-моему, автор несколько запоздал со своими советами... Эдак лет на 10-ть, когда 1С 7.7 была в тренде.