Ошибка СУБД: Ошибка SQL: Таблица не найдена: _Reference. Как исправить?

Справочник «Спецификации номенклатуры» в дереве метаданных 1С

Доброго времени суток, уважаемые читатели блога SoftMaker.kz. Сегодня мы поговорим, как побороть ошибку, возникающую
в файловой базе 1С при неправильном закрытии системы 1С:Предприятие, например при внезапном отключении света или
неправильной работе компьютера (работает и в случае, если
1С:Предприятие 8 установлено на MS SQL Server 2008 R2 Express
).
Ошибка СУБД: Ошибка SQL: «Таблица не найдена: _Reference76» появлялась, когда производилось

тестирование и исправление информационной базы (ТиИ ИБ)
при прохождении проверки логической целостности ИБ.
При попытке выгрузить ИБ Конфигуратор вылетал.

Проверка физической целостности файла 1Cv8.1CD с помощью утилиты chdbfl.exe

показало, что ошибок не обнаружено. Поэтому пришлось идти другим путём и получилось следующее:


Определяем как в базе называется таблица _Reference76 с помощью внешней обработки 1С

В случае ошибки СУБД: Ошибка SQL: Таблица не найдена _Reference76 сразу становится ясно, что была удалена
таблица «_Reference76» и из названия ясно, что это какой-то справочник. Но как теперь определить,
к какому именно справочнику таблица «_Reference76» относится, чтобы попытаться её восстановить?
Для этого можно написать небольшую обработку для выяснения названия:

Процедура КнопкаВыполнитьНажатие(Кнопка)
МассивИменМетаданных = Новый Массив();
Для каждого Объект Из Метаданные.Справочники Цикл
МассивИменМетаданных.Добавить(Объект.ПолноеИмя());
КонецЦикла;
// Таблица значений, содержащая таблицы указанного объекта.
Таблицы = ПолучитьСтруктуруХраненияБазыДанных(МассивИменМетаданных);
Для Каждого Таблица Из Таблицы Цикл
Сообщить(Таблица.Метаданные + » — « + Таблица.ИмяТаблицыХранения);
КонецЦикла;
КонецПроцедуры

В результате работы обработки выяснилось, что таблица «_Reference76» относится к справочнику «Спецификации номенклатуры».

...
Справочник.СпецификацииНоменклатуры - Reference76
...

Обработку для поиска соответствия названия справочников конфигурации 1С и их внутренних таблиц можно скачать

отсюда
.


Заменяем справочник «Спецификации номенклатуры» на новый

Теперь заменим справочник «Спецификации номенклатуры» на новый. Для этого выполним следующие действия:

  • Изменим наименование справочника «СпецификацииНоменклатуры» на «ЯСпецификацииНоменклатуры».
    Нажмём правой кнопкой мыши на справочнике «СпецификацииНоменклатуры» и в контекстном меню выберем пункт
    «Свойства» и в поле «Имя» изменим наименование.
  • Теперь отсортируем справочники в дереве метаданных по имени. Нажмём правой кнопкой мыши
    на справочнике «СпецификацииНоменклатуры» и в контекстном меню выберем пункт
    «Сортировать…». Cправочник «СпецификацииНоменклатуры» оказался в самом низу, нам это
    пригодится в дальнейшем.
  • Теперь заменим справочник «Спецификации номенклатуры» на новый. Для этого нужна идентичная
    конфигурация с неповреждённым справочником «Спецификации номенклатуры». Нужно открыть эту конфигурацию
    в режиме «Конфигуратор» и выделить справочник «Спецификации номенклатуры» в дереве метаданных и
    скопировать его (Ctrl+C).

    Справочник «Спецификации номенклатуры» в дереве метаданных 1С

  • Открываем «Конфигуратор» с повреждённой базой и вставляем новый справочником «Спецификации номенклатуры» (Ctrl+V).
  • Теперь снимем с поддержки справочник «ЯСпецификацииНоменклатуры», чтобы затем удалить его.
    «Конфигурация» | «Поддержка» | «Настройка поддержки». В дереве метаданных выберем справочник
    «ЯСпецификацииНоменклатуры» и двойным щелчком мыши на справочнике откроем следующий диалог:

    Справочник 1С «Спецификации номенклатуры» снимается с поддержки поставщика

  • В диалоге «Настройка правил поддержки» выберем правило «Объект поставщика снят с поддержки» и поставим
    флажок «Установить для подчинённых объектов».
  • После снятия с поддержки справочники «ЯСпецификацииНоменклатуры» и «СпецификацииНоменклатуры» в дереве метаданных
    конфигурации выглядят следующим образом:

    Справочник 1С «Спецификации номенклатуры» после снятия поддержки поставщика


Убираем ссылки со старого справочника «Спецификации номенклатуры» и удаляем его

  • Жмём правой кнопкой мыши на справочнике «ЯСпецификацииНоменклатуры» и в контекстном меню выбираем пункт
    «Удалить». Появилось сообщение Конфигуратора: «Объект не может быть удален, так как на него имеются ссылки
    в других объектах!»

    Предупреждение о ссылках на справочник 1С «ЯСпецификацииНоменклатуры» и невозможности его удаления

  • Нажимаем на кнопку «ОК». В окне служебных сообщений видим список объектов, которые содержат в себе ссылки на
    справочник «ЯСпецификацииНоменклатуры». Этот список поможет быстро заменить ссылки со справочника
    «ЯСпецификацииНоменклатуры» на справочник «СпецификацииНоменклатуры». Приступим.

    Список объектов 1С, ссылающихся на справочник «ЯСпецификацииНоменклатуры» в окне служебных сообщений Конфигуратора

  • Чтобы заменить ссылки в объектах нажимаем на каждую строку списка двойным кликом.
    Для примера возьмём первый элемент списка «ПодпискаНаСобытие.ПриУстановкеНовогоКодаСправочника.Источник»
  • После двойного клика на этом элементе, в дереве метаданных откроется объект и
    в нём мы найдем ссылку на справочник «ЯСпецификацииНоменклатуры».

    Открытие объекта 1С в дереве метаданных, содержащего ссылку на 
	справочник «ЯСпецификацииНоменклатуры»

  • Два раза нажимаем левой кнопкой мыши, чтобы открыть свойство объекта, в котором содержится ссылка на
    справочник «ЯСпецификацииНоменклатуры».

    Свойства объекта 1С с реквизитом, в котором содержиться ссылка на 
	справочник «ЯСпецификацииНоменклатуры»

  • Как видно из вышеприведённого изображения в поле «Источник» содержится составной тип, в который входит и
    справочник «ЯСпецификацииНоменклатуры». Заменим ссылку со справочника «ЯСпецификацииНоменклатуры»
    на справочник «СпецификацииНоменклатуры» в диалоге редактирования составного типа данных.
    Ссылка заменяется снятием флажка напротив справочника «ЯСпецификацииНоменклатуры» и
    установкой флажка напротив справочника «СпецификацииНоменклатуры».

    Замена ссылки справочника «ЯСпецификацииНоменклатуры» на справочник «СпецификацииНоменклатуры» 
	в диалоге редактирования составного типа данных объекта 1С

  • Эти же самые действия проделываем для всех элементов

    вышеприведённого списка
    .
  • Открываем каждый объект и заменяем в нём ссылки.
  • После замены ссылок объект спокойно удаляется.
  • Сохраняем конфигурацию, нажав, клавишу «F7».

Теперь новый справочник «СпецификацииНоменклатуры» ссылается на новую таблицу в базе 1С — _Reference6845.
Если в справочнике были какие-нибудь данные, то они уже уничтожены, поэтому нужно их восстановить.
Это можно сделать воспользовавшись советами статьи

Как выгрузить данные в идентичную конфигурацию 1С?

Если была удалена другая таблица, например _DOCUMENT, тогда нужно изменить обработку для поиска
соответствия названия документов конфигурации 1С и их внутренних таблиц, а шаги проделать те же самые.

Этот блог читают уже более 3000 человек
- читай и ТЫ!
9 ответы
  1. Bugzi says:

    Добрый день. А как можно запустить обработку с поиском имени справочника на упавшей базе? Может стоит написать, что обработку надо запустить на копии рабочей базы?!

    Ответить
  2. Спящий says:

    У меня вообще нет в списке таблицы, на которую ссылается ошибка при загрузке.

    Ответить
  3. Softmaker
    Softmaker says:

    Спасибо, Спящий! Жаль, что этот метод по устранению ошибки "Таблица не найдена" не работает.

    Ответить
  4. Сергей says:

    Добрый день! У меня похожая ошибка, только не найдена таблица _InfoRgChngR, не подскажите как переделать обработку, чтобы найти к какому справочнику относится данная таблица. Заранее Спасибо!

    Ответить
  5. Softmaker
    Softmaker says:

    Пожалуйста, Петр! Рад, что избавились от ошибки Ошибка СУБД: Ошибка SQL: Таблица не найдена: _Reference.!

    Ответить

Ответить

Want to join the discussion?
Feel free to contribute!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *