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

Доброго времени суток, уважаемые читатели блога 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С и их внутренних таблиц, а шаги проделать те же самые.

ПОДПИСКА

17 ответы
  1. Bugzi говорит:

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

  2. Спящий говорит:

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

  3. Спящий говорит:

    Сам метод хорош, но у меня не работает…

  4. Softmaker говорит:

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

  5. Сергей говорит:

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

  6. Александр говорит:

    Спасибо! Очень помогло, восстановил две базы данных.

  7. Softmaker говорит:

    Пожалуйста, Александр! Рад, что помогло!

  8. Softmaker говорит:

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

  9. Артём говорит:

    Очень Важный комментарий!!!!
    Делал все по пунктам, но на «Сохраняем конфигурацию, нажав, клавишу «F7».» выходила ошибка что не найдена таблица, возился два дня…. на третий день просто обновился под платформой не 8,3 а на 8,2 !!!

  10. nBoris говорит:

    Спасибо огромное!! У меня была точно такая же ситуация!! Если бы ни этот пост, не знаю, чтобы делал бы!! Автору респект!!!!!!!!!!!!

  11. Валерий говорит:

    Не прхоходило тестирование базы, не делалась выгрузка ..Вылетал 1с!
    Ошибка SQL:Таблица не найдена Reference216_VT23361 была.
    Починил , сбасибо за мануал!

Комментарии закрыты.