Ошибка sql база найдена таблицы

Ошибка 1С

Обновлено 19.11.2021

При обновлении файловых Конфигураций 1С на платформе линейки 8.3.20.X (ошибка замечена на релизах платформы 8.3.20.1613 … 8.3.20.1590) может появляется ошибка:

В процессе обновления информационной базы произошла критическая ошибка

по причине:

Ошибка СУБД:

Ошибка SQL: Таблица не найдена ‘SchemaStorage’

по причине:

Ошибка SQL: Таблица не найдена ‘SchemaStorage’

Решить эту проблему можно запуском обработки «Тестирования и исправления» в конфигураторе на платформах более низкой версии. Мы запускали на версии 8.3.17.1851. После успешного тестирования и исправления обновление конфигурации проходит без ошибок.

Чтобы выполнить тестирование и исправление сделаете резервную копию базы данных. Откройте Конфигуратор и запустите обработку с параметрами как на скриншотах ниже:

Текст ошибки

Ошибка SQL: Таблица не найдена 'SchemaStorage'

Открыть Тестирование и исправление

Выполнить Тестирование и исправление

Альтернативным вариантом может быть выгрузка конфигурации в dt и обратная загрузка.

Путевые листы для 1С, промо

Доброго времени суток, уважаемые читатели блога 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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ПОДПИСКА

Дата: 2.12.2016

Автор: Василий Лукьянчиков , vl (at) sqlinfo (dot) ru

Функционирование внешних ключей в MySQL имеет много нюансов и ограничений из-за чего существует немало возможностей получить ошибку при работе с ними. Одна из проблем состоит в том, что сообщения об ошибках содержат мало полезной информации и не указывают причину возникновения ошибки. В данной статье дается объяснение как получить дополнительную информацию об ошибке и приведен полный список причин возникновения ошибок внешних ключей. Каждая причина снабжена уникальным буквенно-цифровым кодом (А4, Б1, ..), использующимся в сводной таблице в конце статьи, которая поможет вам быстро диагностировать проблему.

Внешний ключ — это поле (или набор полей) в таблице, называемой дочерней, которое ссылается на поле (или набор полей) в таблице, называемой родительской. Дочерняя и родительская таблицы могут совпадать, т.е. таблица будет ссылаться на саму себя. Внешние ключи позволяют связать записи в двух таблицах по определенным полям так, что при обновлении поля в родительской автоматически происходит изменение записи в дочерней таблице.

В MySQL внешние ключи не реализованы на уровне сервера, их поддержка зависит от используемого хранилища данных. Содержание статьи справедливо для InnoDB (в том числе и для XtraDB).

Как получить больше данных об ошибке

После получения ошибки выполните SHOW ENGINE INNODB STATUS и смотрите содержимое секции LATEST FOREIGN KEY ERROR. Этот способ имеет следующие недостатки:

  • требует привилегии SUPER
  • содержит информацию о последней ошибке, связанной с внешними ключами, из-за чего нужно выполнять SHOW ENGINE INNODB STATUS сразу после возникновения ошибки, что не всегда удобно/возможно
  • используются внутренние имена таблиц (например, ‘test.#sql-d88_b’), что затрудняет диагностику
  • порой содержит мало полезной информации или таковая вообще отсутствует.

Альтернатива: использовать MariaDB версий больше 5.5.45 и 10.0.21, в которых сообщения об ошибках значительно улучшены и указывают причину возникновения ошибки.

Errno 150

Если в сообщении об ошибке содержится errno 150 (или errno 121), значит парсер MySQL не смог распознать ошибку и передал команду (create/alter) на выполнение в InnoDB. В этом разделе перечислены ситуации, приводящие к ошибкам, содержащим errno 150.

А1. Нет индекса в родительской таблице. Набор полей, на которые ссылается дочерняя таблица, должен быть проиндексирован (или являться левой частью другого индекса). Порядок полей в индексе должен быть таким же как в определении внешнего ключа. Сюда же относится случай отсутствия нужной колонки в родительской таблице (нет колонки, нет и индекса).

Неочевидный момент: на колонке родительской таблицы есть индекс — полнотекстовый (fulltext). Но внешний ключ всё равно не создается и сервер ругается на отсутствие индекса. Это происходит потому, что индекс должен быть обычным (btree).

Другой неочевидный момент: на колонке родительской таблицы есть индекс — префиксный. Но внешний ключ всё равно не создается и сервер ругается на отсутствие индекса. Это происходит потому, что индекс должен быть определен на всей длине колонки.

Строго говоря, поля в дочерней таблице тоже должны быть проиндексированы, но если нет подходящего индекса, MySQL автоматически его создаст при добавлении внешнего ключа (в совсем уж древних версиях требовалось предварительное создание индекса).

Примеры

create table t1 (a int, b int, index(a)) engine=innodb;

create table t2 (a int, foreign key (a) references t1(a), foreign key (a) references t1(b)) engine=innodb;
ERROR 1005 (HY000): Cannot create table ‘test.t2’ (errno: 150)

SHOW ENGINE INNODB STATUS;
————————
LATEST FOREIGN KEY ERROR
————————
2016-11-16 06:37:39 0x14c1c Error in foreign key constraint of table test/t2:
foreign key (a) references t1(b)) engine=innodb:
Cannot find an index in the referenced table where the
referenced columns appear as the first columns, or column types
in the table and the referenced table do not match for constraint.
Note that the internal storage type of ENUM and SET changed in
tables created with >= InnoDB-4.1.12, and such columns in old tables
cannot be referenced by such columns in new tables.
Please refer to http://dev.mysql.com/doc/refman/5.7/en/innodb-foreign-key-constr
aints.html for correct foreign key definition.
————

— при использовании оператора ALTER ошибка и секция
— LATEST FOREIGN KEY ERROR будут содержать внутреннее имя таблицы test.#sql-a64_1

create table t2 (a int) engine=innodb;
alter table t2 add foreign key (a) references t1(a), add foreign key (a) references t1(b);
ERROR 1005 (HY000): Cannot create table ‘test.#sql-a64_1’ (errno: 150)

— в новых версиях парсер MySQL определяет некорректность
— конструкции и возвращает другую ошибку (без errno 150)

alter table t2 add foreign key (a) references t1(a), add foreign key (a) references t1(b);
ERROR 1215 (HY000): Cannot add foreign key constraint

— аналогично и для оператора CREATE

drop table t2;
create table t2 (a int, foreign key (a) references t1(a), foreign key (a) references t1(b)) engine=innodb;
ERROR 1215 (HY000): Cannot add foreign key constraint

Обратите внимание, если внешний ключ уже существует и в результате изменений (alter table) возникает ситуация отсутствия индекса в родительской таблице, то код ошибки будет 1025:

create table t1 (a int, b int, index(a)) engine=innodb;
create table t2 (a int, foreign key (a) references t1(a)) engine=innodb;

alter table t1 drop a;
ERROR 1025 (HY000): Error on rename of ‘.test#sql-d6c_5′ to ‘.testt1′ (errno: 150)

show engine innodb status;
————————
LATEST FOREIGN KEY ERROR
————————
161220  7:14:25 Error in foreign key constraint of table test/t2:
there is no index in referenced table which would contain
the columns as the first columns, or the data types in the
referenced table do not match the ones in table. Constraint:
,
  CONSTRAINT «t2_ibfk_1» FOREIGN KEY («a») REFERENCES «t1» («a»)
The index in the foreign key in table is «a»
See http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
for correct foreign key definition.
InnoDB: Renaming table `test`.`#sql-d6c_5` to `test`.`t1` failed!
———

А2. Родительская таблица не найдена в словаре данных InnoDB. Это означает, что родительская таблица должна существовать и быть постоянной InnoDB таблицей. Не временной InnoDB таблицей, так как информация о временных таблицах не сохраняется в словаре данных InnoDB. И уж тем более не представлением.

Примеры

mysql> create table t1 (a int, index(a)) engine=myisam;

mysql> create table t2 (a int, foreign key (a) references t1(a)) engine=innodb;
ERROR 1215 (HY000): Cannot add foreign key constraint

— в старых версиях будет ошибка вида
ERROR 1005 (HY000): Cannott create table ‘test.t2’ (errno: 150)

show engine innodb status;
————————
LATEST FOREIGN KEY ERROR
————————
2016-11-17 16:30:09 0x364c Error in foreign key constraint of table world/t2:
foreign key (a) references t1(a)) engine=innodb:
Cannot resolve table name close to:
(a)) engine=innodb
————

А3. Синтаксическая ошибка. Внешние ключи реализованы на уровне хранилища, и в старых версиях парсер сервера MySQL не распознавал синтаксические ошибки внешних ключей, из-за чего их было трудно идентифицировать.

Примеры

Например, в определении внешнего ключа количество столбцов дочерней таблицы не совпадает с количеством столбцов родительской таблицы:

create table t1(id int not null primary key, b int, key(b)) engine=innodb;
Query OK, 0 rows affected (0.22 sec)

alter table t1 add foreign key(id,b) references t1(id);
ERROR 1005 (HY000): Can‘t create table ‘test.#sql-d88_b’ (errno: 150)

show warnings;
+——-+——+—————————————————+
| Level | Code | Message                                           |
+——-+——+—————————————————+
| Error | 1005 | Can‘t create table ‘test.#sql-d88_b’ (errno: 150) |
+——-+——+—————————————————+

— понять, что причина в синтаксической ошибке
— можно только из:

show engine innodb status;
————————
LATEST FOREIGN KEY ERROR
————————
160605 22:28:23 Error in foreign key constraint of table test/#sql-d88_b:
foreign key(id,b) references t1(id):
Syntax error close to:

— в новых версиях парсер распознает синтаксическую ошибку
— и сообщает об этом:
ERROR 1239 (42000): Incorrect foreign key definition for ‘foreign key without name’: Key reference and table reference don‘t match

Другой пример: попробуем создать внешний ключ на поле типа text:

create table t1 (a text , index(a(50))) engine=innodb;

create table t2 (a text, foreign key (a) references t1(a)) engine=innodb;
ERROR 1170 (42000): BLOB/TEXT column ‘a’ used in key specification without a key length

— MySQL автоматически пытается создать индекс на колонке `a`, и
— сообщает, что нельзя создать индекс по всей длине поля типа text.
— Хорошо, укажем префикс и получим errno 150:

create table t2 (a text, foreign key (a(50)) references t1(a)) engine=innodb;
ERROR 1005 (HY000): Cannot create table ‘test.t2’ (errno: 150)

— понять, что произошла ошибка синтаксиса можно:
— или через show engine innodb status;
— или внимательно сравнить разрешенный синтаксис в документации
— с написанной командой.

А4. Несовпадение типов данных. Столбцы дочерней таблицы, входящие в определение внешнего ключа, должны иметь такие же типы данных, что и столбцы родительской таблицы, на которые они ссылаются, вплоть до атрибутов: знак и кодировка/сопоставление.

Примеры

— например, если у одной колонки мы определим
— атрибут unsigned, а у другой нет, то:
create table t1 (a int unsigned, index(a)) engine=innodb;

create table t2 (a int, foreign key (a) references t1(a)) engine=innodb;
ERROR 1215 (HY000): Cannot add foreign key constraint

— в старых версиях будет ошибка вида
ERROR 1005 (HY000): Cannott create table ‘test.t2’ (errno: 150)

show engine innodb status;
————————
LATEST FOREIGN KEY ERROR
————————
2016-11-26 03:00:47 0x10894 Error in foreign key constraint of table world/t2:
foreign key (a) references t1(a)) engine=innodb:
Cannot find an index in the referenced table where the
referenced columns appear as the first columns, or column types
in the table and the referenced table do not match for constraint.
Note that the internal storage type of ENUM and SET changed in
tables created with >= InnoDB-4.1.12, and such columns in old tables
cannot be referenced by such columns in new tables.
Please refer to http://dev.mysql.com/doc/refman/5.7/en/innodb-foreign-key-constr
aints.html for correct foreign key definition.
————

Если несоответствие типов данных возникает во время изменения таблицы при уже существующем внешнем ключе, то ошибка будет иметь вид:

create table t1 (a int, index(a)) engine=innodb;
create table t2 (a int, foreign key (a) references t1(a)) engine=innodb;

MariaDB [test]> alter table t1 modify a int unsigned;
ERROR 1025 (HY000): Error on rename of ‘.test#sql-d6c_6′ to ‘.testt1′ (errno: 150)

А5. Некорректно задано действие внешнего ключа. Если в определении внешнего ключа указано ON UPDATE SET NULL и/или ON DELETE SET NULL, то соответствующие столбцы дочерней таблицы не должны быть определены как NOT NULL.

Примеры

create table t1 (a int not null, index(a)) engine=innodb;

create table t2 (a int not null, foreign key (a) references t1(a) on delete set null) engine=innodb;
ERROR 1215 (HY000): Cannot add foreign key constraint

— в старых версиях будет:
ERROR 1005 (HY000): Cannot create table ‘test.t2’ (errno: 150)

show engine innodb status;
————————
LATEST FOREIGN KEY ERROR
————————
2016-11-26 06:24:42 0x10894 Error in foreign key constraint of table world/t2:
foreign key (a) references t1(a) on delete set null) engine=innodb:
You have defined a SET NULL condition though some of the
columns are defined as NOT NULL.
————

Если коллизия возникает при уже существующем внешнем ключе, то:

create table t1 (a int not null, index(a)) engine=innodb;
create table t2 (a int, foreign key (a) references t1(a) on delete set null) engine=innodb;

alter table t2 modify a int not null;
ERROR 1025 (HY000): Error on rename of ‘.test#sql-d6c_6′ to ‘.testt2′ (errno: 150)

А6. Дочерняя таблица является временной InnoDB таблицей. Внешние ключи можно создавать только в постоянной, несекционированной InnoDB таблице.

Примеры

create table t1 (a int, index(a)) engine=innodb;

create temporary table t2 (a int, foreign key (a) references t1(a)) engine=innodb;
ERROR 1005 (HY000): Cannot create table ‘test.t2’ (errno: 150)

show engine innodb status;
————————
LATEST FOREIGN KEY ERROR
————————
161130  4:22:26 Error in foreign key constraint of table temp/#sql318_4_1:
foreign key (a) references t1(a)) engine=innodb:
Cannot resolve table name close to:
(a)) engine=innodb
———

— в новых версиях ошибка будет иметь вид:
ERROR 1215 (HY000): Cannot add foreign key constraint

А7. Родительская таблица является секционированной таблицей. На данный момент (MySQL 5.7 и MariaDB 10.1) внешние ключи не поддерживаются для секционированных таблиц (partitioned tables). Иными словами, ни родительская, ни дочерняя таблица не должны иметь секции. В случае, когда внешний ключ ссылается на секционированную таблицу диагностика ошибки затруднена ошибкой вывода show engine innodb status:

Примеры

create table t1 (a int, index(a)) partition by range (a)  
(partition p0 values less than (10),
partition p1 values less than (20),
partition p2 values less than maxvalue);

create table t2 (a int, foreign key (a) references t1(a)) engine=innodb;
ERROR 1005 (HY000): Cannot create table ‘test.t2’ (errno: 150)

show engine innodb status;
————————
LATEST FOREIGN KEY ERROR
————————
161223 19:38:14 Error in foreign key constraint of table test/t2:
foreign key (a) references t1(a)) engine=innodb:
Cannot resolve table name close to:
(a)) engine=innodb
———
— сообщение указывает на то, что родительская таблица
— не найдена в словаре данных innodb (bug: 84331)

— в новых версиях ошибка будет иметь вид:

create table t2 (a int, foreign key (a) references t1(a)) engine=innodb;
ERROR 1215 (HY000): Cannot add foreign key constraint

Если разбивать на секции родительскую таблицу после создания внешнего ключа, то

create table t1 (a int, index(a)) engine=innodb;
create table t2 (a int, foreign key (a) references t1(a)) engine=innodb;

alter table t1 PARTITION BY HASH(a) PARTITIONS 8;
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

show engine innodb status;
— не содержит секцию LATEST FOREIGN KEY ERROR

Errno 121

Такой результат возникает только в одном случае.

Б1. Неуникальное имя ограничения. Обратите внимание: речь не о имени внешнего ключа. Если при создании внешнего ключа вы указываете не обязательное ключевое слово CONSTRAINT, то идущий после него идентификатор должен быть уникальным в пределах базы данных.

Примеры

create table t1 (a int, index(a)) engine=innodb;

create table t2 (a int, CONSTRAINT q1 foreign key (a) references t1(a)) engine=innodb;

create table t3 (a int, CONSTRAINT q1 foreign key (a) references t1(a)) engine=innodb;
ERROR 1005 (HY000): Cannot create table ‘test.t3’ (errno: 121)

— в 5.7 будет другая ошибка
ERROR 1022 (23000): Cannot write; duplicate key in table ‘t3’

show engine innodb status;
————————
LATEST FOREIGN KEY ERROR
————————
161130  3:31:11 Error in foreign key constraint creation for table `test`.`t3`.
A foreign key constraint of name `test`.`q1`
already exists. (Note that internally InnoDB adds ‘databasename’
in front of the user-defined constraint name.)
Note that InnoDB FOREIGN KEY system tables store
constraint names as case-insensitive, with the
MySQL standard latin1_swedish_ci collation. If you
create tables or databases whose names differ only in
the character case, then collisions in constraint
names can occur. Workaround: name your constraints
explicitly with unique names.
———

Нет ошибок

Внешний ключ не создается, и нет никаких ошибок. Это может происходить по следующим причинам:

В1. Дочерняя таблица не является InnoDB таблицей. В этом случае для совместимости с другими субд парсер MySQL просто проигнорирует конструкцию внешнего ключа.

Примеры

create table t1 (a int, index(a)) engine=innodb;

create table t2 (a int, foreign key (a) references t1(a)) engine=myisam;
Query OK, 0 rows affected (0.33 sec)

MariaDB [test]> show create table t2G
*************************** 1. row ***************************
       Table: t2
Create Table: CREATE TABLE `t2` (
  `a` int(11) DEFAULT NULL,
  KEY `a` (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

В2. Не соответствует синтаксису MySQL. Стандарт SQL разрешает указывать внешний ключ сразу при объявлении колонки с помощью конструкции REFERENCES (например, … a int references t1(a), …), однако MySQL игнорирует такую форму записи. Единственный способ создать в нем внешний ключ — это использовать отдельный блок FOREIGN KEY:

[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, …)
    REFERENCES tbl_name (index_col_name,…)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

Несоответствие данных

В этой части собраны ошибки, которые возникают из-за нарушения ссылочной целостности, т.е. наличие в дочерней таблице записей, которым нет соответствия в родительской таблице.

Г1. Удаление родительской таблицы. Нельзя удалить родительскую таблицу при наличии внешнего ключа.

create table t1 (a int, index(a)) engine=innodb;
create table t2 (a int, foreign key (a) references t1(a)) engine=innodb;

drop table t1;
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

Удаление следует понимать в расширенном варианте как удаление из множества InnoDB таблиц. Например, если мы сменим (alter table) движок родительской таблицы на MyISAM, то с точки зрения ограничения внешнего ключа родительская таблица перестанет существовать (т.к. она должна быть постоянной innodb таблицей):

alter table t1 engine=myisam;
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

Сначала нужно удалить внешний ключ (или всю дочернюю таблицу, что удалит в том числе и внешний ключ). Если вы не знаете какие таблицы являются дочерними для заданной таблицы, то это можно определить через запрос к information_schema:

select table_name from information_schema.key_column_usage
where table_schema = «test» and references_table_name = «t1»;

Г2. Изменение данных в родительской таблице. Если в определении внешнего ключа не задано действие при update/delete, то такие операции над родительской таблицей могут привести к несогласованности данных, т.е. появлению в дочерней таблице записей не имеющих соответствия в родительской таблице.

Примеры

create table t1 (a int, index(a)) engine=innodb;
create table t2 (a int, foreign key (a) references t1(a)) engine=innodb;

insert into t1 values(1);
insert into t2 values(1);

update t1 set a=2;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1`(`a`))

Г3. Изменение данных в дочерней таблице. Если insert/update записи в дочерней таблицы приводит к несогласованности данных, то

Примеры

create table t1 (a int, index(a)) engine=innodb;
create table t2 (a int, foreign key (a) references t1(a)) engine=innodb;

insert into t2 values(15);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`))

Г4. Добавление внешнего ключа на не пустую таблицу. При попытке добавить внешний ключ на таблицу, в которой есть записи, не удовлетворяющие условию внешнего ключа (т.е. не имеющие соответствия в родительской таблице), будет ошибка:

Примеры

create table t1 (a int, index(a)) engine=innodb;
create table t2 (a int, index(a)) engine=innodb;

insert into t2 values(2);

alter table t2 add foreign key (a) references t1(a);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`#sql-3f0_4`, CONSTRAINT `#sql-3f0_4_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`))

Г5. Не уникальный ключ в родительской таблице. По стандарту SQL набор полей, на которые ссылается внешний ключ, должен быть уникальным. Однако, реализация внешних ключей в InnoDB позволяет иметь несколько «родителей». Из-за этого возникает трудно диагностируемая ошибка:

Примеры

create table t1 (a int, index(a)) engine=innodb;
create table t2 (a int, index(a)) engine=innodb;

insert into t1 values (1),(1);
insert into t2 values(1);

delete from t1 where a=1 limit 1;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1`(`a`))

Сводная таблица

По вертикали расположены коды ошибок MySQL, которые возникают при работе с внешними ключами («нет ошибок» соответствует ситуации, когда сервер не генерирует ошибку, но и не создает внешний ключ). По горизонтали — идентификаторы причин, которые могут привести к ошибке. Плюсы на пересечении указывают какие причины приводят к той или иной ошибке.

А1 А2 А3 А4 А5 А6 А7 Б1 В1 В2 Г1 Г2 Г3 Г4 Г5
MySQL error 1005 + + + + + + + +
MySQL error 1022 +
MySQL error 1025 + + +
MySQL error 1215 + + + + +
MySQL error 1217 + +
MySQL error 1239 +
MySQL error 1451 + +
MySQL error 1452 + +
нет ошибок + +

P.S. Если ваш случай не рассмотрен в статье, то задавайте вопрос на форуме SQLinfo. Вам ответят, а статья будет расширена.

Дата публикации: 2.12.2016

© Все права на данную статью принадлежат порталу SQLInfo.ru. Перепечатка в интернет-изданиях разрешается только с указанием автора и прямой ссылки на оригинальную статью. Перепечатка в бумажных изданиях допускается только с разрешения редакции.

Доброго времени суток, уважаемые читатели блога 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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ПОДПИСКА

  

Капюшон

30.06.11 — 09:28

питание отрубили во время перепроведения документов в УТ10.2

Далее сделали восстановление базы утилитой chdbfl.exe

нашла ошибку, исправила. Однако в конфигураторе запускаю ТИИ (тестирование и исправление информационной базы) и на одном из этапов выдается

«ОШИБКА СУБД: ОШИБКА SQL: Таблица не найдена _Reference33

также при открытии в режиме 1с предприятия, не дает открыть справочник номенклатуры — выходит та же ошибка — видимо справочник номенклатуры поврежден. как можно решить проблему? я сейчас получил Cf файл от копии базы и им попробую полечить

  

Капюшон

1 — 30.06.11 — 09:31

такс. пробовал делать сравнение-объединение при помощи живого cf файла — выдает, что конфигурации идентичные

  

DCKiller

2 — 30.06.11 — 09:32

Тебе ж русским языком говорят: в SQL слетела таблица. Причем тут конфигурации?

  

Prikum

3 — 30.06.11 — 09:33

(2) у него файловая

  

Капюшон

4 — 30.06.11 — 09:33

(2)так у нас же файловая система!

  

DCKiller

5 — 30.06.11 — 09:36

(4) Тады придется в дебри лезть. Разбирать 1CD специальной утилитой (тут где-то ссылку на инфостарт на нее давали, щас уже не помню), смотреть его нутро на предмет наличия данной таблицы, и в случае отсутсвия последней руками ее туда встраивать из бэкапа (он у тебя есть, надеюсь?)

  

DCKiller

6 — 30.06.11 — 09:37

+5 у мну эта прога есть.. могу выслать на мыло, если что, только ближе к вечеру.

  

Капюшон

7 — 30.06.11 — 09:37

(5)самого бекапа этой базы нет. но есть база идентичной конфигурации

  

Капюшон

8 — 30.06.11 — 09:38

(6)а как её найти по каким ключевым словам?

  

Prikum

9 — 30.06.11 — 09:39

Она тебе не сильно поможет, справочник ты уже потерял и востанавливать его надо будет или руками или из бэкапа.

  

DCKiller

10 — 30.06.11 — 09:42

(8) Названия не помню :( Что-то вроде 1CDview, я думаю.

  

Капюшон

11 — 30.06.11 — 09:42

(9)не. ну он что вобще потерян чтоли?

  

Renat11111

12 — 30.06.11 — 09:43

(6) вышли мне super-ren@yandex.ru

  

GoldenDawn

13 — 30.06.11 — 09:43

(0)»с 2002 занимаюсь 1с  »

баков нет и база файловая )))

  

DCKiller

14 — 30.06.11 — 09:46

(8), (12) О, вот она! Нашел. Налетай!

http://help1c.com/files/view/37.html

  

Prikum

15 — 30.06.11 — 09:46

(11) > Таблица не найдена _Reference33

ты как то по другому понимаешь эту фразу?

  

Капюшон

16 — 30.06.11 — 09:48

(13)у тебя дебильная логика. ты никогда не думал, что к людям могут обращаться с проблемами впервые? мне вот в Казань из Москвы позвонили по рекомендации.

  

Капюшон

17 — 30.06.11 — 09:49

(14)спасибо!! я уже нашел ее но по твоей наводке ))

  

Капюшон

18 — 30.06.11 — 09:49

(15)это значит что такой таблицы и содержания следовательно нету. правда куда она могла деться. ну я понял о чем ты.

  

Капюшон

19 — 30.06.11 — 10:22

Бекапа нет у них и небыло! как же мне восстановить эту таблицу  _Reference33  ведь её нету там!

  

Prikum

20 — 30.06.11 — 10:26

(19) В конфигураторе удалить справочник, потом его восстановить из другой базы и потом набить данные руками, но все равно все полетит к чертовой матери, потому как ссылки посыпались.

  

Капюшон

21 — 30.06.11 — 10:29

(20)а как справочник удалить если на него отовсюду ссылки?

  

andrewks

22 — 30.06.11 — 10:30

для начала надо тулом посмотреть, что там сэтой табличкой. может, у неё тупо заголовок похерился и можно исправить

  

Капюшон

23 — 30.06.11 — 10:30

(22)посмотрел. этой таблицы там вообще нет

  

Prikum

24 — 30.06.11 — 10:30

(21) Бэкап ведь не зря придумали!

  

Prikum

25 — 30.06.11 — 10:31

(23) а какие нибудь непонятные таблицы есть?

  

andrewks

26 — 30.06.11 — 10:32

очень странно. попробуй cf в чистую БД развернуть и глянь какие там таблицы

  

Капюшон

27 — 30.06.11 — 10:36

(26)развернул. там есть эта таблица.

  

Капюшон

28 — 30.06.11 — 10:36

(25)непонятных не видел. они там все непонятные по названиям. а какая должна быть?

  

Prikum

29 — 30.06.11 — 10:37

(28) По полям поищи

  

Капюшон

30 — 30.06.11 — 10:42

(29)поискал. там нет этого справочника этой таблицы. в небитой базе он есть. но утилита не позволяет импортировать таблицы извне

  

Капюшон

31 — 30.06.11 — 10:47

как хотябы справочник номенклатуры удалить?

  

Prikum

32 — 30.06.11 — 10:49

(30) небитая база потомок битой? Архивов вообще нету?

  

Капюшон

33 — 30.06.11 — 10:50

(32)архивов вообще небыло у них. а небитая база она просто той же конфигурации. их одновременно поставили две чистые. потом в них начали работать параллельно

  

Капюшон

34 — 30.06.11 — 10:51

(32)там всего пол года ведётся работа. мне хотябы грохнуть щас справочник номенклатуры чтобы потом объединением его восстановить. но он не удаляется потому что на него ссылаются из других объектов метаданных. я забыл где этот контроль можно изменить

  

Prikum

35 — 30.06.11 — 10:53

(34) а загрузить конфигурацию?

  

Капюшон

36 — 30.06.11 — 10:56

(35)а это данные не уничтожит? попробую

  

Prikum

37 — 30.06.11 — 10:59

(36) Всегда умилял такой вопрос! База уже не работает, так что без разницы, уничтожит она данные или нет, да и бэкап никто не запрещает сделать перед процедурой.

  

БибиГон

38 — 30.06.11 — 11:01

(36) если они конфигурацию не меняли то не должно.

(37) меня москвичи удивляют, не все конечно, но в данном случае жмотье. )

  

Prikum

39 — 30.06.11 — 11:04

(38) Я не Москвы, если что.

  

Капюшон

40 — 30.06.11 — 11:12

(36)я задал вопрос потомучто мне было важно знать загрузка конфигурации не удалит ли файлы

  

Капюшон

41 — 30.06.11 — 11:15

(39)загрузка конфигурации не помогла решить вопрос. таблица также не найдена. нужно чтото делать. похоже SQL сервер ставить

  

Капюшон

42 — 30.06.11 — 11:17

вобщем ужасно это.. база умерла.

  

Капюшон

43 — 30.06.11 — 11:27

никто не знает чтоли как восстановить таблицу? может через SQL попробовать?

  

Капюшон

44 — 30.06.11 — 11:48

А вообще как вариант универсальную выгрузку в Xml сделать

  

Prikum

45 — 30.06.11 — 12:21

Сколько в архиве весит база вместе с сф нормальным?

  

Капюшон

46 — 30.06.11 — 12:37

(45)порядка 100

  

Prikum

47 — 30.06.11 — 12:39

(46) смогу только вечером посмотреть, сразу говорю, что не бесплатно, в случае удачного решения вопроса. Удачным решением будет считаться восстановление справочника номенклатуры как объекта метаданных.

  

awa15

48 — 30.06.11 — 12:48

(0) Основная проблема тут:

«Далее сделали восстановление базы утилитой chdbfl.exe»

chdbfl.exe и убило таблицу справочника.

  

Prikum

49 — 30.06.11 — 12:49

(48) а чем еще восстанавливать базу? Ему надо было сначала бэкап сделать, а уже потом ТиИ и chdbfl.exe

  

awa15

50 — 30.06.11 — 12:55

(49) Если нет бэкапа до применения chdbfl.exe, то содержимое справочника потеряно. Базу восстановить можно, но справочник будет пустой. Потом ТиИ с режимом восстановления объектов может насоздавать новых объектов по ссылкам на справочник.

  

Aprobator

51 — 30.06.11 — 12:56

(0) ппц. Вечная песня — нет упса и бекапов. И восстановить пытаемся сразу, нет чтобы копию файла сделать сначала.

  

mdocs

52 — 30.06.11 — 12:59

Очередной финт «надежной» восьмерки. Когда уже 1с редактором разродится?

  

Prikum

53 — 30.06.11 — 13:02

(50) смотри (47)

  

Prikum

54 — 30.06.11 — 13:03

(52) очередной финт криворуких пользователей, платформа здесь ни причем.

  

mdocs

55 — 30.06.11 — 13:04

(54) Пофиг кто винават. Как править?

  

mdocs

56 — 30.06.11 — 13:04

виноват

  

awa15

57 — 30.06.11 — 13:06

(53) Зачем мне туда смотреть?

(55) Руками (т.е. hex-редактором) создать таблицу в базе.

  

GoldenDawn

58 — 30.06.11 — 13:07

(50)нужно из новой подключить к восстановленной из бака и по гуидам из ссылок на справочник перетащить справочник, (естественно по состоянию на момент копирования)

  

mdocs

59 — 30.06.11 — 13:07

(57) Это я понимаю, кроме вас крайне мало людей на это способно. Я — нет. А базы рушаться с завидной регулярностью :(

  

Prikum

60 — 30.06.11 — 13:07

(58) нету у него архива

  

  

ДемонМаксвелла

61 — 30.06.11 — 13:42

в DT выгружается?

  

ДемонМаксвелла

62 — 30.06.11 — 13:45

Что-то не понял, если это файловая, откуда в названии темы и в нулевом посте SQL?

  

Prikum

63 — 30.06.11 — 13:45

(62) из текста ошибки

  

Капюшон

64 — 30.06.11 — 14:03

(51)этому магазину пол года. у них даже админа нет. они сделали первое что нашли в интернете — запустили утилиту восстановления.

  

Капюшон

65 — 30.06.11 — 14:04

(61)В DT не выгружаются.

  

Капюшон

66 — 30.06.11 — 14:05

(63)я должен сам восстановить работоспособность конфигурации, в крайнем случае перетащить документы через универсальную выгрузку XML в чистую базу.

  

Капюшон

67 — 30.06.11 — 14:05

(63)и кажется это делается при помощи перевода базы в SQL режим. там то и можно восстановить таблицу

  

Ёпрст

68 — 30.06.11 — 14:12

(67) вообще ответ в (57) был озвучен..

  

Капюшон

69 — 30.06.11 — 14:14

(68)да. я как раз думаю над ответом. только неясно каким образом эту таблицу там создать

  

Ёпрст

70 — 30.06.11 — 14:20

(69) дык ручками, любым hex-редактором, тем более, что у тебя есть донор.. можешь в нём целиком кусок забрать.

Да и, автор поста (57) тебе может восстановить запросто.

Обращайся к нему.

  

Капюшон

71 — 30.06.11 — 14:21

(57)привет ты здесь?

  

Капюшон

72 — 30.06.11 — 14:22

(70)попробую. редактор у меня есть. спасибо. правда как в нем найти эту таблицу вопрос пока не решен

  

mdocs

73 — 30.06.11 — 14:22

Вроде это справочник организации, тогда можно после создать элемент (ы) с правильным идентификатором и все. Но сначала нужно создать таблицу.

  

awa15

74 — 30.06.11 — 14:28

(71) Привет)) здесь! Стукнись в аську 197-009-285.

  

Капюшон

75 — 30.06.11 — 14:37

(74)стукнулся! спасибо!

(73)к сожалению это справочник «номенклатура».

  

Бубр

76 — 30.06.11 — 14:42

(33) ужс какой.

  

Aprobator

77 — 30.06.11 — 14:45

(59) чей то они вдруг рушатся с завидной регулярностью? У меня вот как то ни одной не упало.

  

БибиГон

78 — 30.06.11 — 14:48

(77) везение. )

  

Бубр

79 — 30.06.11 — 14:49

(77) уже 3я или 4я тема за пару дней. и ни у одного бэкапов нету

  

Капюшон

80 — 30.06.11 — 14:51

(79)люди еще не дорасли до бекапов )

  

БибиГон

81 — 30.06.11 — 14:52

(79) если это статистика по стране то не так уж и много. ;)

  

Бубр

82 — 30.06.11 — 14:53

(80) буду оч удивлен если этот рост не произошел  с этим крушением базы

  

Бубр

83 — 30.06.11 — 14:55

(81) хотя, люди, которые это могут восстановить тоже должны зарабатывать :)

  

БибиГон

84 — 30.06.11 — 14:57

(83) awa вроде делает это бесплатно. во всяком случае на форуме.

  

Aprobator

85 — 30.06.11 — 14:57

(79) дык падает у кого? Что не тема — везде «мне позвонили клиенты, админа нет, программиста нет, упса нет, бекапов нет». На что люди надеются — фиг знает.

  

Aprobator

86 — 30.06.11 — 14:58

(78) везение тут не при чем. Документация читать надо и выполнять проверенные рекомендации.

  

Бубр

87 — 30.06.11 — 15:02

(85) странно что при установке может и не говорилось про бэкапы, а может и говорилось но клиент забил и решил что все будет у него хорошо.

  

mdocs

88 — 30.06.11 — 15:08

(85) Надеются на то что 1С база не рухнет. Почему тогда в поставке нет удобного менеджера бэкапов например?

  

GoldenDawn

89 — 30.06.11 — 15:20

(83)это мешает распространению, если клиенту сообщить что софт будет нормально работать если соблюсти некоторое количество условий, клиент просто купит другой софт разработчик которого не афиширует такую необходимость

  

Aprobator

90 — 30.06.11 — 15:32

(89) это называется — Не обманешь не продашь. Мне, например, не известна софтина использующаяся для ведения какого либо учета, не требующая архивации данных. Правда, встречал софтины, со встроенной автоматической архивацией, но это было давно.

  

Капюшон

91 — 04.07.11 — 13:25

А я всё-таки оказался опытным и мудрым программистом. В сложившейся ситуации выбрал самое правильное решение — удалил ссылки на справочник номенклатура и потом сам справочник а дальше из cf файла загрузил его ) А люди еще говорили, Что я тупой и неопытный..

  

МишельЛагранж

92 — 04.07.11 — 13:31

(91) и как теперь думаете восстанавливать все ссылки на номенклатуру обратно?

И еще про хороший серверный UPS расскажите хозяйчикам…

  

Prikum

93 — 04.07.11 — 13:31

(91) И что все заработало?

  

Капюшон

94 — 04.07.11 — 13:54

(93)заработало. данных всеравно ведь не вернуть уже.

(92)а никак. их не восстановить. ну там документооборот с начала года только. ручками набьют — у них первичка есть.

  

Капюшон

95 — 04.07.11 — 13:55

(93)я хотел через редактирование файла сделать, но это у меня бы заняло дольше времени, Чем номенклатуру удалить из метаданных. Но еслиб сходу сумел разобраться, то пошел бы вашим путём. просто не видел смысла, поскольку сказали, что данных всёравно не вернуть

Содержание:

1.     Возникновение ошибки «Таблица не найдена» в конфигурации системы 1С

Ошибка типа «Таблица не найдена…» в системе на базе 1С имеет несколько видов:

1.     Если открыть регламентированные отчёты в 1С или журналы документации в конфигурации «1С: Бухгалтерия», после обновления системы, то начинает возникать окно, которое сообщает об ошибке, как демонстрируется ниже:

При этом, данная неполадка появляется у всех юзеров 1С, даже с разными базами данных.

2.     Также, эта же ошибка может возникать в конфигурации системы 1С: Предприятие при некорректном выходе из системы, тогда её текст будет следующим: «Таблица не найдена: _Reference76».

Эта ошибка является ошибкой СУБД в 1С, а именно – SQL.  

2.     Устранение первого и второго вида ошибки «Таблица не найдена…» в конфигурации системы 1С Предприятие

         Если кликнуть на «Подробнее», то получим следующее сообщение:

         При возникновении ошибки «Таблица не найдена…» в конфигурации системы 1С: Бухгалтерия следует по порядку следовать пунктам ниже, один из них всегда устраняет неполадку:

·        Обновить систему 1С до последней версии;

·        Перейти в «Конфигуратор», при этом, другие юзеры 1С должны покинуть программу, кликнуть на панель «Администрирование 1С Предприятие» и выбрать пункт «Тестирование и исправление 1С», после чего, ошибка должна пропасть.

Наиболее логичным кажется проверить сохранность файла 1Сv8.1CD, пользуясь утилитой chdbfl.exe, однако, этот метод не отобразит ошибок и, в данном случае, следует действовать иначе.

Рассмотрим, по порядку, необходимый перечень действий:

1.     Первым шагом нужно определить название таблицы «_Reference76» внутри информационной базы, для этого нужно воспользоваться внешней обработкой. То есть, по сути, эта таблица удалена, но являлась справочной. Из этого следует, что нужно узнать её исходный справочник. При помощи обработки делаем это, результатом чего найдено его название – «Спецификация номенклатуры».

2.     Далее нужно поменять «Спецификация номенклатуры» на другой справочник. Это делается так:

·        Меняем имя с «СпецификацияНоменклатуры» на имя «ЯСпецификацииНоменклатуры» — это делается, кликнув на имя справочника, переходом в меню, выбором пункта «Свойства», после чего внутри поля «Имя» меняем данные;

·        Далее кликаем на имя справочника и избираем «Сортировать», после чего, справочники будут отсортированы по имени и наш справочник будет последним;

·        Открываем такую же конфигурацию системы 1С, только в ней справочник «СпецификацииНоменклатуры» недолжен быть повреждён, запускаем её в режиме конфигуратора в 1С и копируем этот справочник, как показано ниже:

·        Запускаем систему, где база была повреждена и вносим туда скопированный справочник;

·        Далее кликаем на «Конфигурация», выбираем пункт «Поддержка» и переходим по «Настройка поддержки», где нужно два раза кликнуть по справочнику «ЯСпецификацииНоменклатуры», откроется следующее окно и нужно выбрать как на скриншоте ниже:

·        Как только справочник будет снят с поддержки, дерево метаданных будет отображаться так:

3.     Следующий шаг – убрать ссылки в прошлом справочнике и удалить его. Для этого кликаем по «ЯСпецификацииНоменклатуры» и выбираем «Удалить», появится следующее обращение о невозможности провести удаление, в котором нужно кликнуть «ОК»:

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

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

         Открываем свойства объекта 1С, в которых хранится ссылка на наш справочник:

         Внутри поля «Источник» можно наблюдать составной тип с нашим справочником. Меняем ссылку на «СпецификацииНоменклатуры» внутри инструмента по редакции составных типов. Далее делаем следующее, как на скриншоте ниже:

         Все действия необходимо провести для каждого элемента перечня. Как только ссылки изменены – объект может быть удалён. Сохраним полученный результат в конфигурации.

         Получили, что номенклатурный справочник «СпецификацииНоменклатуры» ссылается теперь на эту таблицу из базы 1С – «_Reference6845». Данные из справочника необходимо вернуть. Ошибка устранена.

Специалист компании «Кодерлайн»
Айдар Фархутдинов

0

23.05.2012 — 08:11


Это конец или можно что-то сделать

1

23.05.2012 — 08:16

Умер какой то справочник. Страшно подумать, в каком случае это происходит

2

23.05.2012 — 08:19

http://www.buh.ru/forum/thread.jsp?id=574253

3

23.05.2012 — 08:19

Думать не, флеха, бэкап нет!!!!!!!

4

23.05.2012 — 08:22

скуль база на флэхе Оо

5

23.05.2012 — 08:29

Молится надо было раньше. Теперь — только отпевать.
Попробовать можно посмотреть структуру данных, к какой табличке относится этот _Reference19. Может переживете без него, если это какой то классифиактор стран. Шансы на это — унижающе малы.

6

23.05.2012 — 09:19

копию базы на проверку/восстановление

7

23.05.2012 — 09:25

дальше уже смотреть по обстановке….

8

25.05.2012 — 09:57

Конфигуратор работает при ТИИ ошибка СУБД отсутствует ‘_Reference18’,при загрузке 1С Предприятия падает на отсутствии ‘_Reference19’, Есть архив двухнедельный там эти таблицы есть. Возможно ли их перенести?

9

25.05.2012 — 09:59

(8) база скл? в принципе да

10

25.05.2012 — 10:05

Да. Подскажите как, подобного опыта нет.
В Tool_1CD вижу экспорт в XML, а дальше?

11

25.05.2012 — 10:06

что в таблице выяснили?

12

25.05.2012 — 10:06

в той базе где она отсутствует, сделать такую же как в бекапе но пустую, будет работать?

13

25.05.2012 — 10:10

Создать каким образом, не в курсах.

14

25.05.2012 — 10:23

Подскажите пожалуйста.

15

25.05.2012 — 10:25

14-copoka > в Enterprise Manager

16

25.05.2012 — 10:29

<Table Name=»_REFERENCE18″>
<Fields>
<Field Name=»_IDRREF» Type=»binary» Length=»16″ Precision=»0″/>
<Field Name=»_VERSION» Type=»version» Length=»0″ Precision=»0″/>
<Field Name=»_MARKED» Type=»bool» Length=»0″ Precision=»0″/>
<Field Name=»_ISMETADATA» Type=»bool» Length=»0″ Precision=»0″/>
<Field Name=»_PARENTIDRREF» Type=»binary» Length=»16″ Precision=»0″/>
<Field Name=»_FOLDER» Type=»bool» Length=»0″ Precision=»0″/>
<Field Name=»_CODE» Type=»fixed string» Length=»9″ Precision=»0″/>
<Field Name=»_DESCRIPTION» Type=»string» Length=»50″ Precision=»0″/>
<Field Name=»_FLD474RREF» Type=»binary» Length=»16″ Precision=»0″/>
<Field Name=»_FLD475RREF» Type=»binary» Length=»16″ Precision=»0″/>
<Field Name=»_FLD476RREF» Type=»binary» Length=»16″ Precision=»0″/>
<Field Name=»_FLD477RREF» Type=»binary» Length=»16″ Precision=»0″/>
<Field Name=»_FLD478″ Type=»number» Length=»5″ Precision=»2″/>
<Field Name=»_FLD479RREF» Type=»binary» Length=»16″ Precision=»0″/>
</Fields>
<Records>
</Records>
</Table>

17

25.05.2012 — 10:30

<!—Файл сформирован программой Tool_1CD—>
<Table Name=»_REFERENCE19″>
<Fields>
<Field Name=»_IDRREF» Type=»binary» Length=»16″ Precision=»0″/>
<Field Name=»_VERSION» Type=»version» Length=»0″ Precision=»0″/>
<Field Name=»_MARKED» Type=»bool» Length=»0″ Precision=»0″/>
<Field Name=»_ISMETADATA» Type=»bool» Length=»0″ Precision=»0″/>
<Field Name=»_PARENTIDRREF» Type=»binary» Length=»16″ Precision=»0″/>
<Field Name=»_FOLDER» Type=»bool» Length=»0″ Precision=»0″/>
<Field Name=»_CODE» Type=»fixed string» Length=»9″ Precision=»0″/>
<Field Name=»_DESCRIPTION» Type=»string» Length=»150″ Precision=»0″/>
<Field Name=»_FLD481″ Type=»image» Length=»0″ Precision=»0″/>
<Field Name=»_FLD482RREF» Type=»binary» Length=»16″ Precision=»0″/>
<Field Name=»_FLD483″ Type=»memo» Length=»0″ Precision=»0″/>
<Field Name=»_FLD484″ Type=»memo» Length=»0″ Precision=»0″/>
</Fields>
<Records>
</Records>
</Table>

18

25.05.2012 — 10:34

INSERT INTO …
SELECT FROM …

19

25.05.2012 — 10:48

(17) попробуй такую же таблицу в текущей базе создать
с помощью ентерпрайз менеджера, заходишь и там находишь где добавить таблицу и добавляешь с такими же полями

20

25.05.2012 — 10:50

(18) ты щас наговоришь . Вообще то начинается с Create Table

21

25.05.2012 — 10:51

(20) зачем create table, это надо писать.
а так мышкой, добавить поле и так далее

22

25.05.2012 — 10:52

23

25.05.2012 — 10:53

24

25.05.2012 — 11:12

Ребята темный лес. Как програмуля обзывается.

25

25.05.2012 — 11:16

24-copoka > (15)

26

25.05.2012 — 11:17

(24) ну 2 раза уже название сказали.

27

25.05.2012 — 11:37

Спасибо проглядел

28

25.05.2012 — 21:32

Прграмму поставил самому открыть файл 8-ки не получилось.

29

25.05.2012 — 21:58

выложи куда-нибудь, текущую базу и бекап

30

25.05.2012 — 21:58

что за странный ник копока?

31

25.05.2012 — 23:08

Сорока.
Гл бух против присутствую перс данные клиентов-физ лиц
включая адреса и телефоны. Но спасибо.

32

27.05.2012 — 13:13

Спасибо огромное buval!!!!!!!!!!
Все получилось без SQL Server.
Сделал по http://infostart.ru/public/99809/!

33

27.05.2012 — 14:12

Вот только стандартная выгрузка через конфигуратор падает с
AppName: 1cv8.exe AppVer: 8.1.15.14 ModName: backend.dll
ModVer: 8.1.15.14 Offset: 002d5b21

Сегодня после обновления 1С:Бухгалтерии предприятия на версию 2.0.64.6, при открытии Регламентированных отчетов стала появляться ошибка следующего содержания:

<(5, 2)>: Таблица не найдена «Константы» >Константы КАК Константы

Причем ошибка появилась сразу на нескольких базах и у всех пользователей. Также эта ошибка выходила при просмотре регламентированных отчетов и журналов документов.

Следующие варианты помогли в разных случаях:

  • Обновление платформы до актуальной версии
  • Зайти в режим «Конфигуратор» (остальные пользователи при этом должны выйти из программы). Перейти в меню Администрирование -> Тестирование и исправление
  • Проверка через chdbfl. Зайдите в папку, в которую у вас установлена 1С. Обычно это ‘C:Program Files1cv8’. Здесь вы увидите папки в названии которых присутствуют цифры, обозначающие номера версий платформы. Выберите папку с самой старшей версией (Например 8.3.8.2054): Найдите файл с названием chdbfl

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

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

отсюда.

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

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

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

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

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

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

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

    После двойного клика на этом элементе, в дереве метаданных откроется объект и
    в нём мы найдем ссылку на справочник «ЯСпецификацииНоменклатуры».

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

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

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

    вышеприведённого списка.

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

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

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

    Сегодня, после обновления 1С:Бухгалтерии предприятия, на версию 2.0.64.6, при открытии Регламентированных отчетов стала появляться ошибка следующего содержания:

    <(5, 2)>: Таблица не найдена «Константы»
    >Константы КАК Константы

    Если нажать кнопку «Подробно», то получали ошибку:

    <Обработка.ОнлайнСервисыРегламентированнойОтчетности.МодульОбъекта(772)>: Ошибка при вызове метода контекста (Выполнить)
    Выборка = Запрос.Выполнить().Выбрать();
    по причине:
    <(5, 2)>: Таблица не найдена «Константы»
    >Константы КАК Константы

    Причем ошибка появилась сразу на нескольких базах и у всех пользователей. Также эта ошибка выходила при просмотре журнала документов Реализация товаров и услуг.

    Решение проблемы

    В результате было найдено два способа решения этой проблемы.

    Способ №1

    У клиента использовалась платформа 8.2.19.106, и проблема решилась обновлением до версии 8.3.5.1383

    Способ №2

    Необходимо зайти в режим «Конфигуратор» (остальные пользователи при этом должны выйти из программы). Перейти в меню Администрирование -> Тестирование и исправление.

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

    «В процессе обновления информационной базы произошла критическая ошибка»
    Если вы видите такое сообщение при тестирование — Вам сюда

    Началось всё тривиально, при очередном «Тестировании и исправлении информационной базы» БП 8.1 программа выдала ошибку

    «Ошибка SQL Таблица не найдена ‘NNNNNNNN’» .

    Особого значения не придал, ИБ база работает жалоб не поступает. Спокойно перевел базу на платформу 8.2.

    Системный администратор предложил перевести с файловой версии на серверную и вот тут-то всё вспонилось.

    — База не тестируется.

    — Реструктуризация таблиц информационной базы  не выполняется 

    (В процессе обновления информационной базы произошла критическая ошибка)

    — Реструктуризация таблиц информационной базы  не выполняется 

    Первое что пришло в голову тестирование chdbfl.exe, но чудес не произошло

    (Ошибок не обнаружено)

    Хорошо, сейчас выполню выгрузку базы в файл и далее загрузка в пустую. Ага, как бы не так. 

    Программа завершена аварийно. Приехали — ждите теперь серверный вариант — «Нет выгрузки, нет и загрузки».

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

    =============================================================================================
    Критическую Ошибку я победил, всё по порядку:
    1. Взял начальную установку конфигурации БП в фирме 1С и установил её себе (пустая база).
    2. Выгрузил из начальной установки ИБ (пустой базы) конфигурацию в файл.
    3. В ИБ с ошибкой (отсутствует таблица NNNNN) снял конфигурацию с поддержки и разрешил изменение.
    Нашел, что это за плохой объект конфигурации и попробовал его удалить (рассказал ранее).
    Программа выдала ссылки на этот объект. Зашел по этим ссылкам и удалил из них свой объект.
    Далее удалил без помех свой объект и … очень важно !!!
    — обновил конфигурацию базы
    — тестировал с исправление ИБ
    4. После тестирования загрузил конфигурацию из начальной установки ИБ и снова повторил загрузку в базу измененной
    конфигурации и полное тестирование ИБ.

    Примечание.
    После загрузки конфигурации из начальной установки ИБ программа создала мой ошибочный объект
    и установила конфигурацию снова на поддержку с запретом редактирования.
    =============================================================================================

     Успехов. Ни сбоев, ни критических ошибок.

       es3000

    10.12.14 — 15:45

    База файловая. Конфигуратор запускается.

    А при попытке войти в пользовательский режим выдается ошибка: «Ошибка sql таблица не найдена «_InfoRg15799″».

    Также эта ошибка выдается при выполнении ТИИ.

    Chdbfl.exe ошибок не выдает.

    Посоветуйте что делать?

       Aleksey

    1 — 10.12.14 — 15:54

    Загрузить сверху cf

       es3000

    2 — 10.12.14 — 16:02

    (1) пробовал — не выдает никакой разницы между сбойной конфигурацией и CF-ником от последнего бэкапа

       es3000

    3 — 10.12.14 — 16:03

    а как узнать что это за таблица?

       es3000

    4 — 10.12.14 — 16:05

    (1)+ сначала надо наверно грохнуть этот объект в конфигурации, а как?

       Vladal

    5 — 10.12.14 — 16:05

    (3) Простой командой ПолучитьСтруктуруХраненияБазыДанных

    Кстати, чо говоит тестирование и исправление ИБ?

    И чьто говорит  утилита chkdbfl.exe?

       Vladal

    6 — 10.12.14 — 16:06

    (4) Сначала надо делать ежедневный бекап. А грохать ничего не надо.

    После чего возникла ошибка?

       es3000

    7 — 10.12.14 — 16:12

    (5),(6)

    Ошибка возникла из-за того, что что-то у бухгалтера произошло. Толи электричество сбойнуло, или сетка отвалилась.

    Сначала была другая ошибка: поврежден файл БД.

    Невозможно было даже в конфигуратор войти.

    Chkdbfl.exe эту ошибку устранил.

    Теперь в конфигуратор входит, но не может войти в режим пользователя. При попытке открыть базу в режиме «предприятия» выдается ошибка, которая в заголовке темы:

    «Ошибка sql таблица не найдена «_InfoRg15799″».

    ТИИ выдает эту же ошибку и прерывается.

    ПолучитьСтруктуруХраненияБазыДанных невозможно выполнить, так как не запускается режим «предприятия».

    Что еще можно сделать?

       Vladal

    8 — 10.12.14 — 16:19

    Ага. Вот оно что.

    Есть бекап недавний? В нем и посмотри, что за таблица InfoRg15799.

    Или в конфе сделай изменение в метаданных. например, добавь новый регистр и удали его, потом сохрани — произойдет реструктуризация. Отпишись про результат.

    Есть вариант отправить вашу базу в 1С — они могут подправить своими средствами.

    На этом форуме вроде vde69 восстанавливал файловую базу, но я не помню деталей — 7.7 или 8.

       es3000

    9 — 10.12.14 — 16:26

    >> Или в конфе сделай изменение в метаданных. например, добавь новый регистр и удали его, потом сохрани — произойдет реструктуризация. Отпишись про результат.

    Пробовал.

    Конфигуратор сохраняет измененную конфигурацию.

    При запуске в режиме предприятия никаких изменений — та же ошибка

       Vladal

    10 — 10.12.14 — 16:32

    … — Нарисуйте перед курами треугольник и в него впишите круг… (анекдот)

    В семерке прокатывала выгрузка-загрузка данных. И если какая-то таблица была битая, сохранялись только целые данные.

    Попробуй этот вариант — выгрузить базу в .dt и загрузить.

    Вспомни, не было ли динамического обновления конфы перед тем глюком?

       Михаил Козлов

    11 — 10.12.14 — 16:37

    Разверните пустую БД с нужным cf и посмотрите, что это за регистр сведений.

       Ёпрст

    12 — 10.12.14 — 16:38

    (0) на скулевой базе, похожая ошибка «вылечилась» тупо прибитием всех кэшей.

       mehfk

    13 — 10.12.14 — 16:39

    базу в архив, архив на обменник, ссылку в мойник собака народ ру

       Aleksey

    14 — 10.12.14 — 16:39

    (2) ты не сравнивай, а тупо грузи

       es3000

    15 — 10.12.14 — 16:43

    (11) а как посмотреть?

    сделал простую внешнюю обработку, пишет при ее сохранении ошибку:

    «Процедура или функция с указанным именем не определена: ПолучитьСтруктуруХраненияБазыДанных»

       es3000

    16 — 10.12.14 — 16:44

    (12) да вроде нету никаких кэшей,

    на другом компьютере скопировал 1CV8.1CD

       es3000

    17 — 10.12.14 — 16:48

    (14) мне кажется загрузка конфигурации ничего не даст,

    но сейчас попробую

       Vladal

    18 — 10.12.14 — 16:49

    Только не забудь отписаться.

       es3000

    19 — 10.12.14 — 16:56

    Попробовал загрузить CF-ник.

    Ничего не изменилось: при запуске в режиме предприятия выдается та же ошибка.

    Так ведь и должно быть.

    Ошибка похоже в том, что конфигурация нормальная, а вот в базе одна таблица исчезла. При запуске в режиме предприятия 1С-ка определяет, что объект в конфигурации есть, а таблицы такой в БД нету, поэтому и выдает ошибку.

    И до и после загрузки CF-ника этот объект как был так и остался в конфигурации, и поэтому поведение 1С-ки не изменилось

       es3000

    20 — 10.12.14 — 17:06

    Помогите выполнить «ПолучитьСтруктуруХраненияБазыДанных», чтобы найти имя регистра

       mehfk

    21 — 10.12.14 — 17:07

    см (13)

       sapphire

    22 — 10.12.14 — 17:24

    (0) Сделать тупо копию базы в другой каталог, выгрузить cf и объединить с выгруженным cf, обновить

       sapphire

    23 — 10.12.14 — 17:25

    (20) удали регистрацию БД и добавь заново

       es3000

    24 — 10.12.14 — 17:41

    (22) я же писал что это ничего не дает,

    и даже объяснил почему: (19)

       es3000

    25 — 10.12.14 — 17:48

    как разрешить удаление объекта из конфигурации?

    надо этот регистр удалить

       Aloex

    26 — 10.12.14 — 17:59

       Vladal

    27 — 10.12.14 — 18:01

    (19) не ЦФ, а ДТ грузи.

       Vladal

    28 — 10.12.14 — 18:03

    (24) Тебе говорят создать _пустую_ базу и в нее загрузить ЦФ, потом уже в пусто базе и запустишь Предприятяиею

       es3000

    29 — 10.12.14 — 18:08

    (26) разобрался спасибо,

    этот код выполняется только в толстом клиенте

       es3000

    30 — 10.12.14 — 18:11

    (27),(28) ниче не понял,

    можно пожалуйста еще раз поподробнее,

    что куда надо загрузить

       es3000

    31 — 11.12.14 — 09:14

    В общем оказалось, что в базе отсутствуют не одна, а несколько таблиц.

    На данный момент нашел что в БД отсутсвуют таблицы:

    — регистр сведения ЗадачиБухгалтера

    — РегистрСведений.ДанныеМонитораРуководителя

    — РегистрСведений.ДанныеОбъектовДляРегистрацииВОбменах

    — РегистрСведений.ДанныеПервичныхДокументов

    — РегистрСведений.ДанныеПроизводственногоКалендаря

    — РегистрСведений.ДатыВводаНачальныхОстатков

    Соответствующие этим таблицам объекты конфигурации я удалили из конфигурации. Для этого пришлось удалить несколько подписок.

    Но это еще не все таблицы. При следующем ТИИ опять выскочила ошибка, что в базе отсутствует таблица.

    Можно ли как-то за один раз проверить каких таблиц нет в базе?

       МихаилМ

    32 — 11.12.14 — 09:39

    (31)

    можно. в таблице params, записи dbnames описаны сответствия

    метаданных и реквизитов 1с8 и таблиц и полей бд.

       es3000

    33 — 11.12.14 — 09:46

    (32) а как это в коде можно использовать чтобы проверить наличие всех  таблиц в базе?

       МихаилМ

    34 — 11.12.14 — 10:02

    пишите tsql скрипт

    из params.dbnames генерируйте таблицу соответствий

    генерируйте таблицу имен таблиц , сравеиваете.

    dbnames сжата расшифруйте её например http://infostart.ru/public/74406/

       ДенисЧ

    35 — 11.12.14 — 10:03

    (34) Читатель? База файловая

       МихаилМ

    36 — 11.12.14 — 10:16

    Извиняюсь не заметил, что бд файловая.

    тогда все тоже самое, только с помощью tool_1cd.

    таблицы для сравнения можно в настольную субд поместить

    либо в 1с тд->ТЗ->запрос

       es3000

    37 — 11.12.14 — 11:18

    (36) а как с помощью Tool_1CD сформировать список имен таблиц?

    по одной как-то не хочется выписывать их там почти 4 тыс.

       МихаилМ

    38 — 11.12.14 — 11:22

    (36)

    закладка файлы ctrl-shift-del(выделить все),ctrl-V (copy).

    past хоть в блокнот либо в макет тд либо в субд

       es3000

    39 — 11.12.14 — 11:44

    (38) перенести список таблиц в ТД получилось, спс

    а какой командой теперь из ТД прочитать этот список в ТЗ?

       МихаилМ

    40 — 11.12.14 — 11:52

       es3000

    41 — 11.12.14 — 12:24

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

    Затем в коде пишу:

        пТаблицы = Новый ТаблицаЗначений;

        пТаблицы.Колонки.Добавить(«ИмяТаблицы»);

        Для Строка = 1 По ТабДок.ВысотаТаблицы() Цикл

            Область = ТабДок.Область(Строка, 1);

            пТаблицы.Добавить();

            пТаблицы.ИмяТаблицы = Область.Текст;

        КонецЦикла;

    При выполнении выдается ошибка:

    «Метод объекта не обнаружен «ВысотаТаблицы)».

    Что не так я сделал?

       es3000

    42 — 11.12.14 — 12:43

    Разобрался, мой косяк…

    ВысотаТаблицы — это не метод, это реквизит

       es3000

    43 — 11.12.14 — 13:36

    Результат такой:

    Таблица отсутствует в БД: INFORG15816

    Таблица отсутствует в БД: INFORGCHNGR15825

    Таблица отсутствует в БД: INFORG15826

    Таблица отсутствует в БД: INFORGCHNGR15833

    Таблица отсутствует в БД: INFORG19673

    Таблица отсутствует в БД: INFORG15834

    Таблица отсутствует в БД: INFORGCHNGR15847

    Таблица отсутствует в БД: INFORG6278

    Таблица отсутствует в БД: INFORGCHNGR6289

    Таблица отсутствует в БД: INFORG15848

    Таблица отсутствует в БД: INFORG15873

    Таблица отсутствует в БД: INFORG15879

    Таблица отсутствует в БД: INFORGCHNGR15884

    Таблица отсутствует в БД: INFORG9310

    Таблица отсутствует в БД: INFORGCHNGR15885

    Таблица отсутствует в БД: INFORG15886

    Таблица отсутствует в БД: INFORGCHNGR15896

    Таблица отсутствует в БД: INFORG6524

    Таблица отсутствует в БД: INFORGCHNGR6530

    Таблица отсутствует в БД: INFORG15897

    Таблица отсутствует в БД: INFORG15914

    Таблица отсутствует в БД: INFORG15933

    Таблица отсутствует в БД: INFORG9879

    Таблица отсутствует в БД: INFORG8714

    Таблица отсутствует в БД: INFORGCHNGR8738

    Таблица отсутствует в БД: INFORG15951

    Таблица отсутствует в БД: INFORGCHNGR15954

    Таблица отсутствует в БД: INFORG15966

    Таблица отсутствует в БД: INFORG15975

    Таблица отсутствует в БД: INFORG15982

    Таблица отсутствует в БД: INFORG15988

    Таблица отсутствует в БД: INFORG15999

    Таблица отсутствует в БД: INFORG16008

    Таблица отсутствует в БД: INFORG16013

    Таблица отсутствует в БД: INFORGCHNGR16019

    Таблица отсутствует в БД: INFORG16020

    Таблица отсутствует в БД: INFORGCHNGR16028

    Таблица отсутствует в БД: INFORG19298

    Таблица отсутствует в БД: INFORGCHNGR19304

    Таблица отсутствует в БД: INFORG10393

    Таблица отсутствует в БД: INFORG10397

    Таблица отсутствует в БД: INFORG16029

    Таблица отсутствует в БД: INFORG9239

    Таблица отсутствует в БД: INFORGCHNGR9246

    Таблица отсутствует в БД: INFORG16042

    Таблица отсутствует в БД: INFORGCHNGR16049

    Таблица отсутствует в БД: INFORG16050

    Таблица отсутствует в БД: INFORG16053

    Таблица отсутствует в БД: INFORGCHNGR16056

    Таблица отсутствует в БД: INFORG16057

    Таблица отсутствует в БД: INFORG16061

    Таблица отсутствует в БД: INFORGCHNGR16064

    Таблица отсутствует в БД: INFORG16065

    Таблица отсутствует в БД: INFORGCHNGR16068

    Таблица отсутствует в БД: INFORG16069

    Таблица отсутствует в БД: INFORGCHNGR16081

    Таблица отсутствует в БД: INFORG16089

    Таблица отсутствует в БД: INFORGCHNGR16092

    Таблица отсутствует в БД: INFORG16093

    Таблица отсутствует в БД: INFORGCHNGR16096

    Таблица отсутствует в БД: INFORG16097

    Таблица отсутствует в БД: INFORGCHNGR16103

    Таблица отсутствует в БД: INFORG16104

    Можно БД восстановить?

       es3000

    44 — 11.12.14 — 13:48

    Таблица отсутствует в БД: INFORG15816  (РегистрСведений.ДатыЗапретаИзменения)

    Таблица отсутствует в БД: INFORGCHNGR15825  (РегистрСведений.ДатыЗапретаИзменения)

    Таблица отсутствует в БД: INFORG15826  (РегистрСведений.ДокументыОперацийИзмененияНалоговогоРежима)

    Таблица отсутствует в БД: INFORGCHNGR15833  (РегистрСведений.ДокументыОперацийИзмененияНалоговогоРежима)

    Таблица отсутствует в БД: INFORG19673  (РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов)

    Таблица отсутствует в БД: INFORG15834  (РегистрСведений.ДокументыФизическихЛиц)

    Таблица отсутствует в БД: INFORGCHNGR15847  (РегистрСведений.ДокументыФизическихЛиц)

    Таблица отсутствует в БД: INFORG6278  (РегистрСведений.ДолиСписанияКосвенныхРасходов)

    Таблица отсутствует в БД: INFORGCHNGR6289  (РегистрСведений.ДолиСписанияКосвенныхРасходов)

    Таблица отсутствует в БД: INFORG15848  (РегистрСведений.ДополнительныеРеквизитыУчетнойЗаписи)

    Таблица отсутствует в БД: INFORG15873  (РегистрСведений.ДополнительныеРеквизитыУчетнойЗаписиПолучатели)

    Таблица отсутствует в БД: INFORG15879  (РегистрСведений.ДополнительныеСведения)

    Таблица отсутствует в БД: INFORGCHNGR15884  (РегистрСведений.ДополнительныеСведения)

    Таблица отсутствует в БД: INFORG9310  (РегистрСведений.ДополнительныеФайлыРегламентированныхОтчетов)

    Таблица отсутствует в БД: INFORGCHNGR15885  (РегистрСведений.ДополнительныеФайлыРегламентированныхОтчетов)

    Таблица отсутствует в БД: INFORG15886  (РегистрСведений.ДопустимыеСочетанияКодовГруппСтажа)

    Таблица отсутствует в БД: INFORGCHNGR15896  (РегистрСведений.ДопустимыеСочетанияКодовГруппСтажа)

    Таблица отсутствует в БД: INFORG6524  (РегистрСведений.ДоходыПредыдущегоМестаРаботыНДФЛ)

    Таблица отсутствует в БД: INFORGCHNGR6530  (РегистрСведений.ДоходыПредыдущегоМестаРаботыНДФЛ)

    Таблица отсутствует в БД: INFORG15897  (РегистрСведений.ЖурналНовыхСобытий)

    Таблица отсутствует в БД: INFORG15914  (РегистрСведений.ЖурналОтправокВКонтролирующиеОрганы)

    Таблица отсутствует в БД: INFORG15933  (РегистрСведений.ЖурналОтчетовСтатусы)

    Таблица отсутствует в БД: INFORG9879  (РегистрСведений.ЖурналСобытийЭД)

    Таблица отсутствует в БД: INFORG8714  (РегистрСведений.ЖурналУчетаСчетовФактур)

    Таблица отсутствует в БД: INFORGCHNGR8738  (РегистрСведений.ЖурналУчетаСчетовФактур)

    Таблица отсутствует в БД: INFORG15951  (РегистрСведений.ЗависимостиПравДоступа)

    Таблица отсутствует в БД: INFORGCHNGR15954  (РегистрСведений.ЗависимостиПравДоступа)

    Таблица отсутствует в БД: INFORG15966  (РегистрСведений.ЗамерыВремени)

    Таблица отсутствует в БД: INFORG15975  (РегистрСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов)

    Таблица отсутствует в БД: INFORG15982  (РегистрСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсовОбластейДанных)

    Таблица отсутствует в БД: INFORG15988  (РегистрСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов)

    Таблица отсутствует в БД: INFORG15999  (РегистрСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсовОбластейДанных)

    Таблица отсутствует в БД: INFORG16008  (РегистрСведений.ЗаявленияАбонентовНаПодключениеЭлектроннойПодписиВМоделиСервиса)

    Таблица отсутствует в БД: INFORG16013  (РегистрСведений.ЗначенияГруппДоступа)

    Таблица отсутствует в БД: INFORGCHNGR16019  (РегистрСведений.ЗначенияГруппДоступа)

    Таблица отсутствует в БД: INFORG16020  (РегистрСведений.ЗначенияГруппДоступаПоУмолчанию)

    Таблица отсутствует в БД: INFORGCHNGR16028  (РегистрСведений.ЗначенияГруппДоступаПоУмолчанию)

    Таблица отсутствует в БД: INFORG19298  (РегистрСведений.ЗначенияПараметровТиповойОперации)

    Таблица отсутствует в БД: INFORGCHNGR19304  (РегистрСведений.ЗначенияПараметровТиповойОперации)

    Таблица отсутствует в БД: INFORG10393  (РегистрСведений.ИдентификаторыЗапросовБанка)

    Таблица отсутствует в БД: INFORG10397  (РегистрСведений.ИзмененияОбщихДанныхУзлов)

    Таблица отсутствует в БД: INFORG16029  (РегистрСведений.ИндексУчетныхЗаписейДокументооборота)

    Таблица отсутствует в БД: INFORG9239  (РегистрСведений.ИПСведенияОбОплатеОСиНМА)

    Таблица отсутствует в БД: INFORGCHNGR9246  (РегистрСведений.ИПСведенияОбОплатеОСиНМА)

    Таблица отсутствует в БД: INFORG16042  (РегистрСведений.ИсключенныеИзПерепроведенияМесяцы)

    Таблица отсутствует в БД: INFORGCHNGR16049  (РегистрСведений.ИсключенныеИзПерепроведенияМесяцы)

    Таблица отсутствует в БД: INFORG16050  (РегистрСведений.ИспользованиеДополнительныхОтчетовИОбработокСервисаВАвтономномРабочемМесте)

    Таблица отсутствует в БД: INFORG16053  (РегистрСведений.ИспользованиеОбменаЗарплата3Бухгалтерия3ПоОрганизациям)

    Таблица отсутствует в БД: INFORGCHNGR16056  (РегистрСведений.ИспользованиеОбменаЗарплата3Бухгалтерия3ПоОрганизациям)

    Таблица отсутствует в БД: INFORG16057  (РегистрСведений.ИспользованиеПоставляемыхДополнительныхОтчетовИОбработокВОбластяхДанных)

    Таблица отсутствует в БД: INFORG16061  (РегистрСведений.ИсторияРегистрацийВНалоговомОргане)

    Таблица отсутствует в БД: INFORGCHNGR16064  (РегистрСведений.ИсторияРегистрацийВНалоговомОргане)

    Таблица отсутствует в БД: INFORG16065  (РегистрСведений.ИсторияРегистрацийВОрганеПФР)

    Таблица отсутствует в БД: INFORGCHNGR16068  (РегистрСведений.ИсторияРегистрацийВОрганеПФР)

    Таблица отсутствует в БД: INFORG16069  (РегистрСведений.КадроваяИсторияСотрудников)

    Таблица отсутствует в БД: INFORGCHNGR16081  (РегистрСведений.КадроваяИсторияСотрудников)

    Таблица отсутствует в БД: INFORG16089  (РегистрСведений.КлассыУсловийТрудаПоДолжностям)

    Таблица отсутствует в БД: INFORGCHNGR16092  (РегистрСведений.КлассыУсловийТрудаПоДолжностям)

    Таблица отсутствует в БД: INFORG16093  (РегистрСведений.КодировкиВерсийФайлов)

    Таблица отсутствует в БД: INFORGCHNGR16096  (РегистрСведений.КодировкиВерсийФайлов)

    Таблица отсутствует в БД: INFORG16097  (РегистрСведений.КорректирующиеФормыРСВ_1)

    Таблица отсутствует в БД: INFORGCHNGR16103  (РегистрСведений.КорректирующиеФормыРСВ_1)

    Таблица отсутствует в БД: INFORG16104  (РегистрСведений.КорреспонденцииСчетов)

       МихаилМ

    45 — 11.12.14 — 15:16

    конечно:

    1) сгенерировать недостающие таблицы

    2) перенести данные из резервной копии

       es3000

    46 — 12.12.14 — 04:50

    (45) нету резервной копии,

    вернее есть но месячной давности

       es3000

    47 — 12.12.14 — 05:28

    Не получается удалить из конфигурации объект:

    Объект «РегистрСведений.ДолиСписанияКосвенныхРасходов» использован в:

    Документ.ОперацияБух.Движения

    Документ.РегламентнаяОперация.Движения

    что делать?

    можно как-то другим способом восстановить таблицу в БД?

       Diversus

    48 — 12.12.14 — 07:40

    (0) Не мучайся, найди на инфостарте пользователя awa, автора tool_1cd он за отдельные деньги восстановит что можно. По деньгам это вроде 5 т.р.

       mehfk

    49 — 12.12.14 — 10:00

    Я свои услуги еще в (13) предлагал, но коли хочется самому помучиться… вон и на партнерском уже тема висит.

      

    es3000

    50 — 12.12.14 — 19:23

    все получилось:

    при помощи tool_1cd перекачал поврежденные таблицы из копии

    Понравилась статья? Поделить с друзьями:
  • Ошибка spn 3226 fmi 15 камаз как убрать
  • Ошибка sql state 23000 native 2627
  • Ошибка spn 3226 fmi 15 камаз cummins
  • Ошибка sql server права доступа
  • Ошибка sql server не существует или доступ запрещен