Ошибка СУБД: Ошибка SQL: Таблица не найдена: _Reference. Как исправить?
Доброго времени суток, уважаемые читатели блога SoftMaker.kz. Сегодня мы поговорим, как побороть ошибку, возникающую в файловой базе 1С при неправильном закрытии системы 1С:Предприятие, например при внезапном отключении света или неправильной работе компьютера (работает и в случае, если 1С:Предприятие 8 установлено на MS SQL Server 2008 R2 Express). Ошибка СУБД: Ошибка SQL: «Таблица не найдена: _Reference76» появлялась, когда производилось тестирование и исправление информационной базы (ТиИ ИБ) при прохождении проверки логической целостности ИБ. При попытке выгрузить ИБ Конфигуратор вылетал.
Проверка физической целостности файла 1Cv8.1CD с помощью утилиты chdbfl.exe показало, что ошибок не обнаружено. Поэтому пришлось идти другим путём и получилось следующее:
- Определяем как в базе называется таблица _Reference76 с помощью внешней обработки 1С
- Заменяем справочник «Спецификации номенклатуры» на новый
- Убираем ссылки со старого справочника «Спецификации номенклатуры» и удаляем его
Определяем как в базе называется таблица _Reference76 с помощью внешней обработки 1С
В случае ошибки СУБД: Ошибка SQL: Таблица не найдена _Reference76 сразу становится ясно, что была удалена таблица «_Reference76» и из названия ясно, что это какой-то справочник. Но как теперь определить, к какому именно справочнику таблица «_Reference76» относится, чтобы попытаться её восстановить? Для этого можно написать небольшую обработку для выяснения названия:
Процедура КнопкаВыполнитьНажатие(Кнопка) МассивИменМетаданных = Новый Массив(); Для каждого Объект Из Метаданные.Справочники Цикл МассивИменМетаданных.Добавить(Объект.ПолноеИмя()); КонецЦикла; // Таблица значений, содержащая таблицы указанного объекта. Таблицы = ПолучитьСтруктуруХраненияБазыДанных(МассивИменМетаданных); Для Каждого Таблица Из Таблицы Цикл Сообщить(Таблица.Метаданные + " - " + Таблица.ИмяТаблицыХранения); КонецЦикла; КонецПроцедуры
В результате работы обработки выяснилось, что таблица «_Reference76» относится к справочнику «Спецификации номенклатуры».
... Справочник.СпецификацииНоменклатуры - Reference76 ...
Обработку для поиска соответствия названия справочников конфигурации 1С и их внутренних таблиц можно скачать отсюда.
Заменяем справочник «Спецификации номенклатуры» на новый
Теперь заменим справочник «Спецификации номенклатуры» на новый. Для этого выполним следующие действия:
- Изменим наименование справочника «СпецификацииНоменклатуры» на «ЯСпецификацииНоменклатуры». Нажмём правой кнопкой мыши на справочнике «СпецификацииНоменклатуры» и в контекстном меню выберем пункт «Свойства» и в поле «Имя» изменим наименование.
- Теперь отсортируем справочники в дереве метаданных по имени. Нажмём правой кнопкой мыши на справочнике «СпецификацииНоменклатуры» и в контекстном меню выберем пункт «Сортировать…». Cправочник «СпецификацииНоменклатуры» оказался в самом низу, нам это пригодится в дальнейшем.
- Теперь заменим справочник «Спецификации номенклатуры» на новый. Для этого нужна идентичная конфигурация с неповреждённым справочником «Спецификации номенклатуры». Нужно открыть эту конфигурацию в режиме «Конфигуратор» и выделить справочник «Спецификации номенклатуры» в дереве метаданных и скопировать его (Ctrl+C).
- Открываем «Конфигуратор» с повреждённой базой и вставляем новый справочником «Спецификации номенклатуры» (Ctrl+V).
- Теперь снимем с поддержки справочник «ЯСпецификацииНоменклатуры», чтобы затем удалить его. «Конфигурация» | «Поддержка» | «Настройка поддержки». В дереве метаданных выберем справочник «ЯСпецификацииНоменклатуры» и двойным щелчком мыши на справочнике откроем следующий диалог:
- В диалоге «Настройка правил поддержки» выберем правило «Объект поставщика снят с поддержки» и поставим флажок «Установить для подчинённых объектов».
- После снятия с поддержки справочники «ЯСпецификацииНоменклатуры» и «СпецификацииНоменклатуры» в дереве метаданных конфигурации выглядят следующим образом:
Убираем ссылки со старого справочника «Спецификации номенклатуры» и удаляем его
-
- Жмём правой кнопкой мыши на справочнике «ЯСпецификацииНоменклатуры» и в контекстном меню выбираем пункт «Удалить». Появилось сообщение Конфигуратора: «Объект не может быть удален, так как на него имеются ссылки в других объектах!»
- Нажимаем на кнопку «ОК». В окне служебных сообщений видим список объектов, которые содержат в себе ссылки на справочник «ЯСпецификацииНоменклатуры». Этот список поможет быстро заменить ссылки со справочника «ЯСпецификацииНоменклатуры» на справочник «СпецификацииНоменклатуры». Приступим.
- Чтобы заменить ссылки в объектах нажимаем на каждую строку списка двойным кликом. Для примера возьмём первый элемент списка «ПодпискаНаСобытие.ПриУстановкеНовогоКодаСправочника.Источник»
- После двойного клика на этом элементе, в дереве метаданных откроется объект и в нём мы найдем ссылку на справочник «ЯСпецификацииНоменклатуры».
- Два раза нажимаем левой кнопкой мыши, чтобы открыть свойство объекта, в котором содержится ссылка на справочник «ЯСпецификацииНоменклатуры».
- Как видно из вышеприведённого изображения в поле «Источник» содержится составной тип, в который входит и справочник «ЯСпецификацииНоменклатуры». Заменим ссылку со справочника «ЯСпецификацииНоменклатуры» на справочник «СпецификацииНоменклатуры» в диалоге редактирования составного типа данных. Ссылка заменяется снятием флажка напротив справочника «ЯСпецификацииНоменклатуры» и установкой флажка напротив справочника «СпецификацииНоменклатуры».
- Эти же самые действия проделываем для всех элементов вышеприведённого списка.
- Открываем каждый объект и заменяем в нём ссылки.
- После замены ссылок объект спокойно удаляется.
- Сохраняем конфигурацию, нажав, клавишу «F7».
Теперь новый справочник «СпецификацииНоменклатуры» ссылается на новую таблицу в базе 1С — _Reference6845. Если в справочнике были какие-нибудь данные, то они уже уничтожены, поэтому нужно их восстановить. Это можно сделать воспользовавшись советами статьи Как выгрузить данные в идентичную конфигурацию 1С? Если была удалена другая таблица, например _DOCUMENT, тогда нужно изменить обработку для поиска соответствия названия документов конфигурации 1С и их внутренних таблиц, а шаги проделать те же самые.
Добрый день. А как можно запустить обработку с поиском имени справочника на упавшей базе? Может стоит написать, что обработку надо запустить на копии рабочей базы?!
У меня вообще нет в списке таблицы, на которую ссылается ошибка при загрузке.
Сам метод хорош, но у меня не работает…
Спасибо, Спящий! Жаль, что этот метод по устранению ошибки "Таблица не найдена" не работает.
Добрый день! У меня похожая ошибка, только не найдена таблица _InfoRgChngR, не подскажите как переделать обработку, чтобы найти к какому справочнику относится данная таблица. Заранее Спасибо!
Спасибо! Очень помогло, восстановил две базы данных.
Пожалуйста, Александр! Рад, что помогло!
Спасибо автору. Метод помог.
Пожалуйста, Петр! Рад, что избавились от ошибки Ошибка СУБД: Ошибка SQL: Таблица не найдена: _Reference.!
Спасибо!!!Пригодилось оччень
Рад, что помог!
Очень Важный комментарий!!!!
Делал все по пунктам, но на «Сохраняем конфигурацию, нажав, клавишу «F7».» выходила ошибка что не найдена таблица, возился два дня…. на третий день просто обновился под платформой не 8,3 а на 8,2 !!!
Спасибо!
Спасибо огромное!! У меня была точно такая же ситуация!! Если бы ни этот пост, не знаю, чтобы делал бы!! Автору респект!!!!!!!!!!!!
Рад, что вам помогло!
Не прхоходило тестирование базы, не делалась выгрузка ..Вылетал 1с!
Ошибка SQL:Таблица не найдена Reference216_VT23361 была.
Починил , сбасибо за мануал!
Рад, что помогла статья!