Табличная часть имеет записи, не относящиеся ни к одной записи главной таблицы. Файловая база 1С. Исправление ошибки

16.10.19

Задачи пользователя - Корректировка данных

Памятка-инструкция по исправлению этой ошибки.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Обработка. Метаданные и их отображение в таблицах БД
.epf 7,76Kb
10
10 Скачать (1 SM) Купить за 1 850 руб.

Хотя я в заголовке указал, что база файловая - без sql сервера, чтобы исправить эту ошибку нам не обойтись.

Для решения этой проблемы я использовал сервер PostgreSQL, PgAdmin4, Excel и самописную обработку на 1С (находится во вложении к статье).

1. Первым делом требуется развернуть поврежденную базу на SQL сервере.

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

Делал я это с помощью своей обработки. Обработка тестировалась на платформе 8.3.12 и выше.

Принцип прост. Тестирование и исправление нам дает название метаданных, которые нужно исправить. Например:

Проверка логической целостности. Документы. ИзменениеПлановыхНачислений. Табличная часть имеет записи, не относящиеся ни к одной записи главной таблицы. Количество - 1.

Запускаем базу в пользовательском режиме. Запускаем обработку и получаем наименования таблиц в БД PostgreSQL и наименования полей "Ссылка". скрин 1

3. Требуется найти в базе PostgreSQL записи не относящиеся ни к одной записи главной таблицы с помощью SQL запросов.

Я вообще не знаток запросов SQL. Быстрым гуглежом выработал для себя следующий алгоритм действий. Если в комментариях предложите вариант получше, то я буду благодарен.

Открываем PgAdmin, запускаем Query Tool.

Query Tool скрин

С помощью следующих запросов выбираем все ссылки и сохраняем их в csv.

select distinct encode(FieldName,'hex') as linkId from TableName order by encode(FieldName,'hex')

FieldName замените на имя поля ссылки. TableName замените на имя таблицы.

Скрин. Выполнение запросов в PgAdmin

С помощью Экселя или средствами 1С, или вообще как вам удобнее - найдите битые ссылки. То есть такие ссылки, которые присутствуют во вспомогательных таблицах, но отсутствуют в основной таблице документа.

4. SQL запросом удаляем некорректную строку.

delete from TableName where encode(FieldName,'hex') = '00000000000000000000000000000000'
                                                       

TableName замените на имя таблицы. FieldName замените на имя поля ссылки. '00000000000000000000000000000000' замените на найденную некорректную ссылку. Апострофы должны остаться.

5. Проверить внутренним тестированием 1С, что проблема решена.

6. Выгрузить базу обратно в файловый вариант.

Дополнение от kosmo0.

С помощью консоли запросов и запроса к табличным частям документа тоже можно найти эти строки, которые не относятся ни к одному документу в базе. В поле "Ссылка" у них будет либо "Объект не найден", либо пустая ссылка на документ. Если "Объект не найден", то проблема решается ТиИ с созданием объекта по битой ссылке, либо программным созданием объекта с помощью следующего кода:

СтрокаGUID = "00000000-0000-0000-0000-000000000000"; //Здесь должна быть ваша ссылка
НаименованиеДокумента = "СтрокаНаименования" //Заменить на реальное наименование документа
            
НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID);
ДокОбъект = Документы.[НаименованиеДокумента].СоздатьДокумент(); 
ДокОбъект.УстановитьСсылкуНового(Документы.[НаименованиеДокумента].ПолучитьСсылку(НовыйGUID));
//Возможно здесь потребуется дозаполнить реквизиты объекта, без которых он отказывается записываться
ДокОбъект.ОбменДанными.Загрузка = Истина;
ДокОбъект.Записать();

Затем, можно удалить этот объект программно, что решит проблему.

Если в поле "Ссылка" находится пустая ссылка на документ, то ошибка исправляется только описанным выше способом.

Обработка Исправление ошибок Восстановление базы

См. также

Корректировка данных Зарплата Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

60000 руб.

06.10.2023    5763    38    20    

46

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    35567    115    152    

79

Корректировка данных Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 руб.

10.02.2017    112824    683    175    

722

Корректировка данных Программист Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет НДС Платные (руб)

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

6000 руб.

22.01.2025    1563    4    0    

6

Корректировка данных Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Налоговый учет Налог на прибыль Платные (руб)

Обработка служит для: выравнивания бухгалтерского и налогового учета на определенную дату по выбранным счетам; закрытия остатков по выбранным счетам; обнуления налогового учета (ПР, ВР также будут обнулены)

2880 руб.

05.05.2024    955    14    0    

10

Корректировка данных Ценообразование, анализ цен Мастера заполнения Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

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

2400 руб.

27.06.2023    2936    3    0    

3

Банковские операции Корректировка данных Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

При загрузке банковской выписки поступлений по платежным картам 1С не совсем верно распознает данные, предоставляемые банком. В результате приходится корректировать эти данные вручную в документе "Поступление на расчетный счет". Ставить сумму комиссии (даже когда программа автоматом рассчитала сумму она не всегда совпадает с банком), вид операции, в зависимости от торговой точки менять учет налогов, ставить договор итд. Все это настраивается один раз и вам останется только выбрать период! Есть и простой вариант использования - просто правит сумму комиссии. Расширение в комплекте позволяет вызвать обработку автоматически после загрузки выписки.

4200 руб.

23.12.2021    15899    10    26    

15

Загрузка и выгрузка в Excel Корректировка данных Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Обработка для группового редактирования реквизитов номенклатуры в 1С для УТ 11 / КА 2. Позволяет редактировать реквизиты (как основные, так и дополнительные реквизиты и сведения) непосредственно в таблице, устанавливать новые значения реквизитов на выбранную номенклатуру, а также загружать новые значения из Excel. Предусмотрена возможность добавления фото к товарам перетаскиванием файла из проводника на строку с товаром (drag'n'drop)

4200 руб.

16.11.2020    18056    12    5    

11
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. leosoft 167 17.10.19 09:18 Сейчас в теме
Ничего не понял - когда и где возникает такая ситуация?
ТиИ не помогает?
2. Dipod 114 17.10.19 09:39 Сейчас в теме
(1)Эта ошибка возникает при тестировании и исправлении из конфигуратора. И платформа не умеет автоматически исправлять эту ошибку.
3. TMV 11 17.10.19 12:48 Сейчас в теме
(2) наверное, имели ввиду, что сообщение об ошибке выходит во время ТиИ? Вряд ли ошибка возникает в этот момент.
11. Fox-trot 164 18.10.19 07:18 Сейчас в теме
(2)
Эта ошибка возникает при тестировании и исправлении из конфигуратора. И платформа не умеет автоматически исправлять эту ошибку.

платформа сама создает проблемы и потом не может их решить. так?
12. Dipod 114 18.10.19 07:35 Сейчас в теме
(11)Нет. Платформа при тестировании просто сообщает о наличии некорректной записи в подчиненной таблице, но не умеет удалять некорректную строку.

Как сказал (7), эту ошибку можно обойти, если при ТиИ создать объект по битой ссылке, а потом корректно его удалить. Но этот способ сработает только в том случае, если в строке подчиненной таблицы в поле "Ссылка" не стоит пустая ссылка. Пустая ссылка там может возникнуть, если кто-то ранее выполнил ТиИ с настройкой "Удалять ссылки".
13. kosmo0 111 24.10.19 14:09 Сейчас в теме
(12) Вообще то не очень понятно почему при ТиС платформа чистит ссылку при имеющихся табличных частях. Это либо косяк платформы либо кто-то залез своими шаловливыми ручками.
Если это косяк платформы, то он либо исправлен в более свежих релизах либо нужно донести информацию до разработчиков платформы. Последнее, после одного случая обращения, лично для меня бесполезное занятие.
14. Dipod 114 24.10.19 14:56 Сейчас в теме
(13) При ТиС платформа может очистить битую ссылку на основной объект. Но основная проблема связана с тем, что база уже повреждена до тестирования. И в базе есть запись во вспомогательной таблице по объекту, записи о котором нет в основной таблице.

Я не знаю истоков проблемы. Но почему-то случилась у клиента ситуация, при которой основная запись по документу в таблице удалилась, а запись во вспомогательной таблице по этому документу нет. Можно только гадать о причинах. Знаю только то, что эта проблема довольно распространена. Регулярно с ней сталкиваюсь у клиентов.
4. TMV 11 17.10.19 12:50 Сейчас в теме
Для файловой базы есть ещё кстати утилита checkdbf, она не помогает?
6. Dipod 114 17.10.19 13:07 Сейчас в теме
(4)Нет, эта утилита не помогает от этой ошибки.
5. Dipod 114 17.10.19 13:07 Сейчас в теме
7. kosmo0 111 17.10.19 17:18 Сейчас в теме
А такой алгоритм - запросом по табличным частям. В колонке ссылка находим все <Объект не найден>. То есть получаем список уникальных идентификаторов (УИД) документов отсутствующих в БД. На основании этих УИД создаем документы, а потом эти вновь созданные документы корректно удаляем вместе с табличными частями.


А сопоставление имен таблиц базы на SQL с именами метаданных конфигурации 1С можно глянуть в инструментах разработчика (их можно скачать бесплатно не только с данного ресурса). Да и консоль запросов там есть.
8. Dipod 114 17.10.19 17:36 Сейчас в теме
(7)
А такой алгоритм - запросом по табличным частям. В колонке ссылка находим все <Объект не найден>. То есть получаем список уникальных идентификаторов (УИД) документов отсутствующих в БД. На основании этих УИД создаем документы, а потом эти вновь созданные документы корректно удаляем вместе с табличными частями.

Когда мне досталась база, по ней уже кто-то прошелся тестированием и исправлением с удалением битых ссылок. Поэтому строка табличной части в поле ссылка содержала пустую ссылку на документ. Из-за этого внутреннее тестирование и исправление не могло создать объект и падало с ошибкой SDBL. А без объекта документа в базе, стандартными средствами мы никак не можем получить возможность удалить некорректную строку подчиненной таблицы. Пришлось удалять эту строку средствами SQL.
Ваш способ сработает, если ссылка осталась в исходном виде.

А сопоставление имен таблиц базы на SQL с именами метаданных конфигурации 1С можно глянуть в инструментах разработчика (их можно скачать бесплатно не только с данного ресурса). Да и консоль запросов там есть.

Согласен. Я, чтобы написать обработку из вложения, потратил 15 минут. Её код очень прост и прозрачен. Быстрое гугление легко находит функцию глобального контекста сопоставления метаданных и таблиц БД ПолучитьСтруктуруХраненияБазыДанных(), которую я использовал в обработке.
Я исхожу из того, что любой труд должен быть оплачен. Если моя обработка сэкономит кому-то время, которое он мог потратить на более полезные вещи, то потратить 1SM за неё не должно быть жалко. Кому этот вариант не подходит, тоже могут спокойно написать себе обработку за 15 минут, как это сделал я.
9. echo77 1922 18.10.19 05:04 Сейчас в теме
(8) а если самому создать документ с такой ссылкой?
10. Dipod 114 18.10.19 07:06 Сейчас в теме
(9)А как вы создадите документ с пустой ссылкой? Сейчас специально проверил на платформе 8.3.15, но думаю и на более ранних такой код не прокатит.
	ДокОбъект = Документы.Test.СоздатьДокумент();
	ДокОбъект.УстановитьСсылкуНового(Документы.Test.ПустаяСсылка());
	ДокОбъект.Дата = ТекущаяДата();
	ДокОбъект.ОбменДанными.Загрузка = Истина;
	ДокОбъект.Записать();
	UID  = ДокОбъект.Ссылка.УникальныйИдентификатор();
	Сообщить(UID);

Документ создается, но не с пустой ссылкой.
15. unk2 202 29.10.22 07:54 Сейчас в теме
Решить проблему помогает запрос по табличной части документа. Сортировкой по дате в самом верху будут строчки с Объект не найден. С помощью любой обработки (например https://infostart.ru/public/601873/) можно создать ссылки на удаленную ссылку. После этого вы сможете посмотреть что у вас в табличной части
16. Dipod 114 10.11.22 14:57 Сейчас в теме
(15) Это сработает, если ссылку не очистили с помощью тестирования и исправления. Если очистили, то нельзя создать родительский объект с пустой ссылкой.
Оставьте свое сообщение