Иногда в ИБ можно встретить ссылки на объекты <Объект не найден> (75:a353ac9e17b7bc7111e60238e0dc59c6), это ссылки на удаленные объекты. Получаются такие ссылки в ходе сбоев ИБ, РИБ(Распределенных Информационных Баз) или других механизмов создающих ссылки не записанных объектов(разбирал здесь).
В любом случае — это не есть хорошо, будем исправлять! Разберем пример поиска таких ссылок в регистре сведений «Данные для обработки» некой конфигурации, регистр имеет одно измерение «Номенклатура«, тип Справочник.Номенклатура.
В рамках задачи необходимо удалить записи регистра с битыми ссылками, в статье не будет разбираться тестирование и исправление ИБ, или другое восстановление ссылок.
Поиск ссылок <Объект не найден>
Сама ссылка считается валидной, а вот если обратиться к ее реквизиту в запросе, то получим NULL. Из этого пишем запрос получающий наименование из ссылки в измерении «номенклатура» регистра сведений «Данные для обработки» и отбираем записи у которых значение запрашиваемого реквизита равно NULL. Если измерений по которым необходимо производить поиск больше одного, то объединяем условия через ИЛИ.
А для удаления таких записей просто создадим наборы записей указав отборы и запишем.
&НаСервере Процедура УдалитьПлохиеЗаписиДанныхДляОбработки() // Найдем записи с <Объект не найден> Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДанныеДляОбработки.Номенклатура КАК Номенклатура |ИЗ | РегистрСведений.ДанныеДляОбработки КАК ДанныеДляОбработки |ГДЕ | ДанныеДляОбработки.Номенклатура.Наименование ЕСТЬ NULL"; Выборка = Запрос.Выполнить().Выбрать(); // Удаление записей с <Объект не найден> Пока Выборка.Следующий() Цикл НаборЗаписей = РегистрыСведений.ДанныеДляОбработки.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(Выборка.Номенклатура); НаборЗаписей.Записывать = Истина; НаборЗаписей.Записать(Истина); КонецЦикла; КонецПроцедуры
После выполнения данного кода из регистра сведений будут удалены все записи со ссылками <Объект не найден>.
0
Как в запросе выполнить отбор по Объект не найден
Для этого используется логический оператор ЕСТЬ NULL функций языка запросов.
Например, допустим, в регистре накопления «ПартииТоваровНаСкладах» мы хотим найти записи, в которых измерение «ДокументОприходования» оказалось такой вот битой ссылкой на «объект не найден». Запрос будет выглядеть примерно так:
Код 1C v 8.х
ВЫБРАТЬ
ПартииТоваровНаСкладах.Регистратор,
ПартииТоваровНаСкладах.Номенклатура,
ПартииТоваровНаСкладах.СерияНоменклатуры,
ПартииТоваровНаСкладах.ДокументОприходования,
ПартииТоваровНаСкладах.Качество,
ПартииТоваровНаСкладах.Склад,
ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры,
ПартииТоваровНаСкладах.СтатусПартии,
ПартииТоваровНаСкладах.Заказ
ИЗ
РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
ГДЕ
ПартииТоваровНаСкладах.ДокументОприходования.Ссылка ЕСТЬ NULL
Обратите внимание, если в запросе требуется получить ссылку на регистратор регистра накопления, то запрос должен быть построен не к остаткам и не к оборотам, а просто к регистру
источник
Работая с информационными базами на платформе 1С, многие пользователи нередко сталкиваются с ситуацией, когда вместо ожидаемой ссылки на какой-нибудь объект появляется та самая надпись: <Объект не найден> .
Данная ситуация вполне типичная и почти каждый пользователь платформы 1С:Предприятие сталкивался с такой битой ссылкой* («Объект не найден») хотя бы раз.
Предупреждение: Перед тем, как приступать к каким-либо манипуляциям с базой данных 1С, необходимо сделать ее резервную копию. Чтобы сделать резервную копию информационной базы данных можно воспользоваться командой «Выгрузить информационную базу» в конфигураторе, сделать резервную копию из режима 1С:Предприятия или скопировать папку с самой информационной базой на съемный носитель / в другое место.
Теперь перейдем непосредственно к решению проблемы несуществующих объектов.Первое, что необходимо сделать – это разобраться в причине возникновения таких объектов.
Причины могут быть разные, в каждом случае требуется особый подход для решения проблемы и восстановления целостности данных. Рассмотрим основные из них.
- 1. Непосредственное удаление объектов без пометки на удаление и контроля ссылочной целостности
В программе 1С:Предприятие при стандартном удалении объектов производится контроль ссылочной целостности, предусматривающий удаление объекта в два этапа:
1) установка пометки на удаление;
2) удаление стандартной процедурой с контролем ссылочной целостности.
Однако этот механизм можно обойти, имея право непосредственного удаления объектов без пометки на удаление и контроля ссылочной целостности (в правах пользователя — право «Интерактивное удаление»). Такое удаление производится сочетанием клавиш «SHIFT + DELETE». В результате непосредственного удаления ссылка на объект становится битой и при ее наличии в других объектах отображается как «Объект не найден».
Решение:
Восстановить объект в этой базе невозможно, поэтому можно воспользоваться одним из способов:
- При наличии резервных копий информационной базы восстановить последнюю (если она была сделана недавно и от текущей она не отличается) и работать в ней;
- Если пользователь знает, какой объект был удален: найти копию базы, где присутствует этот объект, воспользоваться обработкой «Выгрузка и загрузка данных XML», которая находится в свободном доступе в интернете, перенести объект из старой базы в новую с помощью данной обработки. Битые ссылки заменятся этим объектом. Если неизвестно, какой объект был удален – можно найти его по уникальному идентификатору в старой базе и перенести его обработкой «Выгрузка и загрузка данных XML».
Рекомендации:
Чтобы избежать таких ошибок в дальнейшем, как вариант — запретить пользователям интерактивное удаление. Также необходимо обеспечить регулярное резервное копирование Информационной базы 1С: Предприятие, чтобы всегда иметь возможность восстановить поврежденные или удаленные данные.
- 2. Объект из другой базы. Имеет место обмен с другой информационной базой (Стандартный обмен, обмен в Распределенной информационной базе «РИБ», Универсальный обмен)
- 2.1 Объект не был выгружен из базы – источника
Решение
В этом случае можно выгрузить объект из Базы – Источника заново, в результате чего этот объект заменит собой все пустые ссылки.
Используем в качестве примера обмен между базами: 1С: Управление торговлей 11.2 и 1С: Бухгалтерия Предприятия 3.0.
При выгрузке документа реализации номенклатура из табличной части не выгрузилась в Бухгалтерию Предприятия. Такое могло произойти при ошибочном снятии объектов справочника «Номенклатура» с регистрации к обмену, либо при нарушении последовательности обмена между базами.
Если таких объектов немного, можно найти их в базе-источнике и зарегистрировать к обмену еще раз (например, написать комментарий к объекту и сохранить изменения, тогда он зарегистрируется к обмену автоматически и выгрузится при следующей синхронизации данных).
Также можно зарегистрировать объекты к выгрузке через стандартную обработку «Регистрация изменений для обмена данными». Для этого нужно из списка настроенных синхронизаций данных сначала найти обмен с базой, в которой есть ненайденные объекты, затем выбрать «Состав отправляемых данных» (или найти обработку «Регистрация изменений для обмена данными» во «Всех функциях»).
В обработке нужно выбрать необходимые объекты в дереве с помощью флажков и зарегистрировать:
— все объекты выбранных типов — можно выбрать объект и все его подчиненные объекты;
— объекты выбранных типов с авторегистрацией;
— одиночные объекты (выбрать из списка);
— объекты при помощи отбора (задать отбор для элементов).
При следующей синхронизации данных, вновь зарегистрированные объекты выгрузятся в базу — приемник и заполнят битые ссылки.
В результате обмена данными ссылки восстановятся.
Рекомендации:
Поскольку такие ошибки возникают, если вручную снимать объекты с регистрации, менять номера сообщений обмена, изменять файлы для обмена данными, то в большинстве случаев рекомендуется придерживаться стандартной процедуры обмена.
- 2.2 Распределенная информационная база «РИБ».
Объект был удален
Из периферийной информационной базы в Центральную выгрузили объект с пометкой на удаление, а затем сняли ее. В Центральной базе объект с пометкой был удален, а затем выгружен в периферийную как «Объект не найден».
Решение
Как и при непосредственном удалении без контроля ссылочной целостности, в этом случае можно воспользоваться восстановлением объекта из резервной копии базы данных посредством обработки «Выгрузка и загрузка данных XML» (поставляется в составе конфигурации «Конвертация данных, редакция 2» и находится в свободном доступе в Интернете).
ТЕСТИРОВАНИЕ И ИСПРАВЛЕНИЕ ИНФОРМАЦИОННОЙ БАЗЫ 1С
Если данный объект не нужно восстанавливать, то необходимо удалить все ссылки на него посредством стандартного функционала 1С.
Для удаления ссылок на несуществующие объекты можно воспользоваться тестированием и исправлением информационной базы (предварительно сделав резервную копию базы). Для этого необходимо зайти в Конфигуратор – Администрирование – Тестирование и исправление.
В новом окне появятся несколько вариантов проверок и режимов, которые необходимо выбрать.
Реиндексация таблиц информационной базы — это перестроение индексов таблиц базы данных. В информационной базе строится индекс для ускорения поиска по определенным реквизитам. Эта операция приводит к ускорению и оптимизации работы информационной базы, поэтому рекомендуется выполнять ее хотя бы раз в месяц.
Проверка логической целостности информационной базы – проверка логической целостности базы (связи между таблицами базы данных) и исправление ошибок в структурах таблиц информационной базы.
Проверка ссылочной целостности информационной базы — проверка тех самых ссылок на несуществующие объекты в базе данных.
Необходимо выбрать один из трех вариантов исправления таких ошибок:
Создавать объекты — система создает элементы, которые потом нужно заполнить;
Очищать ссылки — ссылки будут очищены;
Не изменять – будут показаны ошибки, ссылки не изменятся.
Пересчет итогов — пересчет предварительных результатов в регистрах накопления, расчета и бухгалтерии (Срез Последних, Остатки, Обороты, Остатки и обороты и т.д). Пересчет итогов также приводит к ускорению и оптимизации работы информационной базы.
Сжатие таблиц информационной базы— уменьшение размера базы после тестирования за счет удаления информации об уже удаленных объектах из базы данных.
Реструктуризация таблиц информационной базы – создание идентичных таблиц базы данных и перенос имеющихся данных в изменённые таблицы.
В нашем случае выставим все галочки. После установки настроек нажать «Выполнить» и ждать окончания процедуры. Результаты тестирования можно увидеть в окне служебных сообщений конфигуратора 1С.
После окончания тестирования вопрос с несуществующими объектами будет решен.
Рекомендации:
При удалении объектов и снятии с них пометки на удаление проверять их наличие в других базах. Регулярно выполнять тестирование и исправление информационной базы 1С.
2.3 «Объект не найден» после Универсального обмена данными
Формат предназначен для обмена информацией между программными продуктами 1С Предприятие: он не зависит от структур конфигураций, которые участвуют в обмене и конвертирует данные в универсальный формат EnterpriseData. В процессе синхронизации базы обмениваются XML-файлами с информацией об объектах, зарегистрированных к обмену.
Фирма «1С» активно развивает формат EnterpriseData и его использование во все большем количестве приложений.
При таком обмене иногда могут возникать ошибки, связанные с конвертацией объектов одного типа (базы – источника) в объекты другого типа (базы – приемника).
Например, при обмене между базами 1С: Управление торговлей 11.2 и 1С: Бухгалтерия Предприятия 3.0. документ «Передача товаров между организациями» из «Управление торговлей» переносится в «Бухгалтерию Предприятия» как Документ «Поступление (акт, накладная)» или Документ «Реализация (акт, накладная)». При этом одна организация переносится в «Бухгалтерию Предприятия» как контрагент. Данное преобразование предусмотрено фирмой «1С» в правилах конвертации данных. Но, несмотря на это, иногда происходят ошибки при переносе разнотипных объектов между базами. Это может быть вызвано долгим отсутствием обновления какой-либо базы – участника обмена и как следствие – старыми правилами формата обмена, которые не гарантируют правильного переноса данных.
Решение
Обновить обе базы до последних релизов и зарегистрировать невыгруженные объекты к обмену. После обмена данными с использованием последней версии формата обмена объекты должны конвертироваться и переноситься без ошибок.
Используемую версию формата можно изменить в настройках обмена на вкладке «Служебная информация»:
Если после этих действий ссылки «Объект не найден» не были заменены правильными объектами, необходимо настроить сопоставление данных вручную.
Для этого нам понадобится регистр «Публичные идентификаторы синхронизируемых объектов» (Найти его можно через «Все функции» — «Регистры сведений». Он используется для сопоставления объектов при синхронизации через универсальный формат. Ввиду большого количества записей открытие регистра может занять продолжительное время.
Регистр имеет следующую структуру:
В регистре можно обнаружить ссылки на несуществующие объекты:
В первом столбце находятся идентификаторы объектов из другой информационной базы. По этому идентификатору можно найти объект в базе-источнике.
Как получить ссылку на любой элемент информационной базы 1С:
В 1С есть очень полезный функционал – можно получить ссылку на любой объект базы и также перейти к объекту.
Ссылки, представленные во второй колонке регистра, не были найдены в базе, соответственно, эти объекты не были созданы.
Если битых ссылок не так много, то можно сопоставить их вручную. Сначала найти все битые ссылки в текущей базе и найти их соответствия в другой базе, затем выставить сопоставления в регистре «Публичные идентификаторы синхронизируемых объектов» с правильными объектами.
В нашем примере битые ссылки находятся в документе «Реализация товаров». Вместо контрагента <Объект не найден> (18:805910bf4888a98211e4f89df8b22aab). Находим этот документ в базе-источнике и определяем Организацию, которую необходимо перенести в качестве контрагента. Затем ищем такого же контрагента в базе-приемнике, при его отсутствии – создаем.
После создания или нахождения нужного объекта в ИБ нужно задать сопоставление в регистре «Публичные идентификаторы синхронизируемых объектов». Находим строку, содержащую битую ссылку <Объект не найден> (18:805910bf4888a98211e4f89df8b22aab) и сопоставляем ей необходимого контрагента. В примере: объект с идентификатором «f8b22aab-f89d-11e4-8059-10bf4888a982» будет выгружен в базу как «Моя Организация» в не зависимости от типа объекта источника. В базе – источнике необходимо зарегистрировать такие объекты к обмену заново и запустить синхронизацию данных. После обмена не найденные объекты заменятся согласно сопоставлениям, сделанным в регистре.
При большом количестве битых ссылок рекомендуем обратиться к проверенным специалистам, которые восстановят Ваши данные без потерь.
Рекомендации:
В таких случаях нужно обновить правила конвертации данных – загрузить из новой базы или полностью обновить свою информационную базу – формат и правила конвертации поставляются в каждом обновлении продуктов 1С:Предприятие. Также стоит следить за изменениями правил формата обмена на ИТС и других источниках.
Содержание
- 1C. Поиск «Объект не найден» в регистре и удаление
- Поиск ссылок
- Объект не найден — как исправить эту ошибку в программных продуктах 1С?
- Битая ссылка, , Уникальный Идентификатор, GUID
- Как исправить ошибку — объект на найден в 1С
- 1С СТ-вебинары
- Как исправить ошибку — объект на найден в 1С
- Ошибка в базах данных 1С «Объект не найден» и способы ее решения
1C. Поиск «Объект не найден» в регистре и удаление
Иногда в ИБ можно встретить ссылки на объекты (75:a353ac9e17b7bc7111e60238e0dc59c6), это ссылки на удаленные объекты. Получаются такие ссылки в ходе сбоев ИБ, РИБ(Распределенных Информационных Баз) или других механизмов создающих ссылки не записанных объектов(разбирал здесь).
В любом случае — это не есть хорошо, будем исправлять! Разберем пример поиска таких ссылок в регистре сведений «Данные для обработки» некой конфигурации, регистр имеет одно измерение «Номенклатура«, тип Справочник.Номенклатура.
В рамках задачи необходимо удалить записи регистра с битыми ссылками, в статье не будет разбираться тестирование и исправление ИБ, или другое восстановление ссылок.
Поиск ссылок
Сама ссылка считается валидной, а вот если обратиться к ее реквизиту в запросе, то получим NULL. Из этого пишем запрос получающий наименование из ссылки в измерении «номенклатура» регистра сведений «Данные для обработки» и отбираем записи у которых значение запрашиваемого реквизита равно NULL. Если измерений по которым необходимо производить поиск больше одного, то объединяем условия через ИЛИ.
А для удаления таких записей просто создадим наборы записей указав отборы и запишем.
После выполнения данного кода из регистра сведений будут удалены все записи со ссылками .
Источник
Объект не найден — как исправить эту ошибку в программных продуктах 1С?
Судя по количеству просмотров предыдущей статьи про повреждение файла базы данных, мы понимаем, что такие ошибки в работе пользователей 1С – далеко не редкость. В прошлом материале мы подробно описали механизм исправления этого недочета. И на, первый взгляд, все стало хорошо: ошибка устранена, пользователь смог зайти в базу данных и продолжить работу. Однако далее была обнаружена еще одна ошибка с текстом «Объект не найден», вызванная всё тем же повреждением базы данных. И тут уже придется прибегнуть к тестированию базы. Каким образом была выявлена эта ошибка и как исправлена, расскажем далее.
Для начала приведем пример как выглядит эта ошибка:
Данная ошибка может проявляться в любом документе, в любой базе. В наименовании этой ошибки могут быть любые символы (буквы/цифры). Главное – это название «Объект не найден».
Каким образом эта ошибка себя проявила?
После устранения сбоя, описанного нами ранее, программа открывается и работает, но ведет себя странно. В отчетах отображается информация, а первичный документ пользователь не может найти. В частности, начисление зарплаты по сотруднику. При вводе начисления еще раз документ формируется пустым. И ведь верно – зарплата то ему уже начислена. И это «подтверждают» отчеты. Посмотрим более внимательно.
Сформировав отчет «Полный свод начислений и удержаний», мы видим, что начисление есть.
Попытаемся разобраться, какой документ зафиксировал это начисление. Дальше мы наблюдаем за этой суммой…
Чтобы посмотреть, каким документом введена сумма, нажмите на ней правой кнопкой мышки и выберите команду «Расшифровать».
В открывшемся окне выберите «Регистратор».
Регистратор – это и есть документ, зафиксировавший запись, на основании которой формируется данный отчет и выбранная сумма.
Открываем расшифровку и что мы видим: «Объект не найден» и наша сумма.
В среде программистов это называется «битая ссылка», т.е. в отчете данные отображены (данные в таблицах программы зафиксированы), а сам объект отсутствует. Соответственно, это не дает нам дальше работать, вводить документы, плюс это отображает некорректную информацию.
Все отчеты показывают, что сумма есть. А первичный документ (в нашем случае – начисление зарплаты) мы найти не можем.
Рассмотрим, как выйти из такой ситуации.
Удаление битых ссылок. Тестирование информационной базы.
Шаг 1. Запустите программу в режиме «Конфигуратор».
Шаг 2. Выберите в разделе «Администрирование» пункт «Тестирование и исправление…».
Еще раз напоминаем, что при любых действиях с информационной базой, рекомендуется сначала сделать ее резервную копию. И если вы сомневаетесь в ваших действиях, обратитесь к специалисту за помощью.
Шаг 3. Сделайте резервную копию информационной базы.
В окне настройки тестирования много галочек и каждое действие выполняется при разного рода ошибках. В нашем случае нарушена ссылочная целостность информационной базы. И далее все зависит от варианта решения проблемы. В нашем случае произошла потеря данных, создать объект не получится. Потому, чтобы избавиться от «битой ссылки», ее просто надо удалить.
Шаг 4. Установите галочку «Проверка ссылочной целостности» и «Проверка логической целостности». Установите переключатель в положение «Очищать ссылки» и «Удалять объект».
Т.е. при обнаружении таких несуществующих объектов, система их удалит.
Установка других галочек, в принципе, не помешает. Подробно мы их рассматривать в данной статье не будем. Единственное, некоторые процессы могут занять длительное время.
По окончанию проверки внизу выводится сообщение, что «Тестирование закончено» и строчки проверки «перестают бегать» в окне служебных сообщений.
Наша ошибка исправлена.
Шаг 5. Проверим базу.
Сумма с «битой ссылкой» исчезла из отчета «Полный свод начислений и удержаний».
Программа дает заполнить документ «Начисление зарплаты и взносов» корректно.
Сотрудник, по которому была «битая ссылка», вновь попадает в начисление.
Автор статьи: Ольга Круглова
Понравилась статья? Подпишитесь на рассылку новых материалов
Источник
Битая ссылка, , Уникальный Идентификатор, GUID
Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: (84:bf5600145e3710ab11dda4c605dbe824) .
В данной статье я опишу пример быстрого восстановления данных.
Для пользователя:
Скачиваете эту обработку восстановления объектов по GUID :
Для 1С 8.1:
здесь или Скачивать файлы может только зарегистрированный пользователь!
Для 1С 8.2:
Скачивать файлы может только зарегистрированный пользователь!
. Новая Версия. 8.2 и 8.3 — Скачивать файлы может только зарегистрированный пользователь! Подробное описание: Объект не найден в 1С или про Битые ссылки 1С
и открываете ее в программе:
1. Копируем фразу и получаем 05dbe824-a4c6-11dd-bf56-00145e3710ab
2. Если Вы знаете что удалили, то можете сразу нажать кнопку Создать Объект Из GUID — Пункт 4.
3. Если Вы не знаете что удалили, тогда вам нужно поднять архивную копию базы, открыть там обработку и вставить полученный GUID в поле GUID.
далее нажать Ссылку -> и в правом поле отобразится необходимый Вам объект(в моем случае Попов Роман Владимирович).
Открыв его, узнаем что это справочник Сотрудники и всю содержащуюся в справочнике информацию. Возвращаемся в базу, где необходимо восстановить объект и жмем кнопку Создать Объект Из GUID
4. Из открывшегося списка выбираем Справочник Сотрудники, в открывшейся форме заполняем все поля данными из архивной базы и жмем OK. Все, данный объект восстановлен.
Для программиста:
Для получения уникального идентификатора объекта, используйте код вида:
Код 1C v 8.х
Для того чтобы преобразовать (84:bf5600145e3710ab11dda4c605dbe824) в УникальныйИдентификатор (GUID)
Код 1C v 8.х
Для получения ссылки по уникальному идентификатору, используйте код:
Код 1C v 8.х
Создать объект документ или справочник и установить ему свой Уникальный идентификатор
Код 1C v 8.х
еще можно получить ИдентификаторДокумента при OLE доступе:
Код 1C v 7.x
Еще посмотрите метод:
ЗначениеВСтрокуВнутр( );
Синтаксис:
ЗначениеВСтрокуВнутр( )
Назначение:
Преобразование значения объекта агрегатного типа в строковое системное представление.
Возвращает: представление значения объекта в строковом системном виде.
Параметры:
— значение объекта агрегатного типа данных которое нужно преобразовать.
Подробнее см. в документации, глава »Системные процедуры и функции»
Источник
Как исправить ошибку — объект на найден в 1С
1С СТ-вебинары
30 ДНЕЙ БЕСПЛАТНО!
Как исправить ошибку — объект на найден в 1С
В статье рассмотрим вопрос как исправляются те ситуации в программе, когда можно увидеть ошибку Объект на найден. Рассмотрим на примере конфигурации 1С:Бухгалтерия 3., но материал также будет актуален и для других программных продуктов фирмы 1С. Как показывает практика , ошибка, объект не найден в 1С не редкость и можеи возникать вследствие, к примеру, повреждения информационной базы или удаления объектов информационной базы и пр. Перед выполнением всех действий рекомендуется сделать архивную копию информационной базы.
Для начала приведем пример как может выглядеть данная ошибка в 1С. Как видим вместо номенклатуры в строке табличной части присутствует “объект на найден”.
Также ошибку Объект не найден в 1С можно увидеть в каком-либо сформированном отчете, в котором будем выведен список документов-регистраторов. Вместо конкретного документа может строка с “объект не найден”. При этом по данному документу может отображаться сумма в отчете.
Какие возможны пути решения во втором случае с документом. Можно попробовать произвести тестирование и исправление. Для этого открываем информационную базу в режиме конфигуратора и далее раскрываем раздел “Администрирование”. После этого выбираем пункт “Тестирование и исправление”.
Далее программа предложит перед выполнением сделать резервную копию. Лучше воспользоваться данной рекомендацией. В окне устанавливаем следующие галочки и нажимаем “Выполнить”.
По завершении в окне внизу появится сообщение о том, что тестирование завершено. И можно проверить результат в информационной базе.
В том случае если имело место удаление без пометки на удаление и контроля ссылочной цельности, то восстановить удаленный объект в этой базе уже нельзя. Для решения проблемы, при наличии свежей резервной копии можно восстановить ее и работать в ней.
Если мы знаем какой объект был удален, то можно прибегнуть к помощи обработки “Выгрузка и загрузка данных XML”. Найти ее можно на просторах интернета или скачать с сайта ИТС. Битые ссылки заменятся нужным объектом из развернутой копии. В нашем примере в документа была удалена номенклатура конфеты “Белочка”.
Открываем обработку в архивной копии и нас будет интересовать закладка “Выгрузка”. Далее переходим на закладку “Дополнительные объекты для выгрузки”. Добавляем интересующую нас номенклатуру в табличную часть и ниже указываем путь, куда будет сохранен выгружаемый xml файл. После чего нажимаем “Выгрузить”.
Далее открываем данную обработку в той базе, где объект не найден и переходим на закладку “Загрузка”. Выбираем наш сохраненный файл выгрузки и нажимаем “Загрузить данные”.
После загрузки проверяем наш документ и видим вместо объект не найдем стоит нужная номенклатура “Белочка”.
Остались вопросы? Получите бесплатную консультацию!
Источник
Ошибка в базах данных 1С «Объект не найден» и способы ее решения
Работая с информационными базами на платформе 1С, многие пользователи нередко сталкиваются с ситуацией, когда вместо ожидаемой ссылки на какой-нибудь объект появляется та самая надпись: .
Данная ситуация вполне типичная и почти каждый пользователь платформы 1С:Предприятие сталкивался с такой битой ссылкой* («Объект не найден») хотя бы раз.
Предупреждение: Перед тем, как приступать к каким-либо манипуляциям с базой данных 1С, необходимо сделать ее резервную копию. Чтобы сделать резервную копию информационной базы данных можно воспользоваться командой «Выгрузить информационную базу» в конфигураторе, сделать резервную копию из режима 1С:Предприятия или скопировать папку с самой информационной базой на съемный носитель / в другое место.
Теперь перейдем непосредственно к решению проблемы несуществующих объектов.Первое, что необходимо сделать – это разобраться в причине возникновения таких объектов.
Причины могут быть разные, в каждом случае требуется особый подход для решения проблемы и восстановления целостности данных. Рассмотрим основные из них.
- 1. Непосредственное удаление объектов без пометки на удаление и контроля ссылочной целостности
В программе 1С:Предприятие при стандартном удалении объектов производится контроль ссылочной целостности, предусматривающий удаление объекта в два этапа:
1) установка пометки на удаление;
2) удаление стандартной процедурой с контролем ссылочной целостности.
Однако этот механизм можно обойти, имея право непосредственного удаления объектов без пометки на удаление и контроля ссылочной целостности (в правах пользователя — право «Интерактивное удаление»). Такое удаление производится сочетанием клавиш «SHIFT + DELETE». В результате непосредственного удаления ссылка на объект становится битой и при ее наличии в других объектах отображается как «Объект не найден».
Решение:
Восстановить объект в этой базе невозможно, поэтому можно воспользоваться одним из способов:
- При наличии резервных копий информационной базы восстановить последнюю (если она была сделана недавно и от текущей она не отличается) и работать в ней;
- Если пользователь знает, какой объект был удален: найти копию базы, где присутствует этот объект, воспользоваться обработкой «Выгрузка и загрузка данных XML», которая находится в свободном доступе в интернете, перенести объект из старой базы в новую с помощью данной обработки. Битые ссылки заменятся этим объектом. Если неизвестно, какой объект был удален – можно найти его по уникальному идентификатору в старой базе и перенести его обработкой «Выгрузка и загрузка данных XML».
Рекомендации:
Чтобы избежать таких ошибок в дальнейшем, как вариант — запретить пользователям интерактивное удаление. Также необходимо обеспечить регулярное резервное копирование Информационной базы 1С: Предприятие, чтобы всегда иметь возможность восстановить поврежденные или удаленные данные.
- 2. Объект из другой базы. Имеет место обмен с другой информационной базой (Стандартный обмен, обмен в Распределенной информационной базе «РИБ», Универсальный обмен)
- 2.1 Объект не был выгружен из базы – источника
Решение
В этом случае можно выгрузить объект из Базы – Источника заново, в результате чего этот объект заменит собой все пустые ссылки.
Используем в качестве примера обмен между базами: 1С: Управление торговлей 11.2 и 1С: Бухгалтерия Предприятия 3.0.
При выгрузке документа реализации номенклатура из табличной части не выгрузилась в Бухгалтерию Предприятия. Такое могло произойти при ошибочном снятии объектов справочника «Номенклатура» с регистрации к обмену, либо при нарушении последовательности обмена между базами.
Если таких объектов немного, можно найти их в базе-источнике и зарегистрировать к обмену еще раз (например, написать комментарий к объекту и сохранить изменения, тогда он зарегистрируется к обмену автоматически и выгрузится при следующей синхронизации данных).
Также можно зарегистрировать объекты к выгрузке через стандартную обработку «Регистрация изменений для обмена данными». Для этого нужно из списка настроенных синхронизаций данных сначала найти обмен с базой, в которой есть ненайденные объекты, затем выбрать «Состав отправляемых данных» (или найти обработку «Регистрация изменений для обмена данными» во «Всех функциях»).
В обработке нужно выбрать необходимые объекты в дереве с помощью флажков и зарегистрировать:
— все объекты выбранных типов — можно выбрать объект и все его подчиненные объекты;
— объекты выбранных типов с авторегистрацией;
— одиночные объекты (выбрать из списка);
— объекты при помощи отбора (задать отбор для элементов).
При следующей синхронизации данных, вновь зарегистрированные объекты выгрузятся в базу — приемник и заполнят битые ссылки.
В результате обмена данными ссылки восстановятся.
Рекомендации:
Поскольку такие ошибки возникают, если вручную снимать объекты с регистрации, менять номера сообщений обмена, изменять файлы для обмена данными, то в большинстве случаев рекомендуется придерживаться стандартной процедуры обмена.
- 2.2 Распределенная информационная база «РИБ».
Объект был удален
Из периферийной информационной базы в Центральную выгрузили объект с пометкой на удаление, а затем сняли ее. В Центральной базе объект с пометкой был удален, а затем выгружен в периферийную как «Объект не найден».
Решение
Как и при непосредственном удалении без контроля ссылочной целостности, в этом случае можно воспользоваться восстановлением объекта из резервной копии базы данных посредством обработки «Выгрузка и загрузка данных XML» (поставляется в составе конфигурации «Конвертация данных, редакция 2» и находится в свободном доступе в Интернете).
ТЕСТИРОВАНИЕ И ИСПРАВЛЕНИЕ ИНФОРМАЦИОННОЙ БАЗЫ 1С
Если данный объект не нужно восстанавливать, то необходимо удалить все ссылки на него посредством стандартного функционала 1С.
Для удаления ссылок на несуществующие объекты можно воспользоваться тестированием и исправлением информационной базы (предварительно сделав резервную копию базы). Для этого необходимо зайти в Конфигуратор – Администрирование – Тестирование и исправление.
В новом окне появятся несколько вариантов проверок и режимов, которые необходимо выбрать.
Реиндексация таблиц информационной базы — это перестроение индексов таблиц базы данных. В информационной базе строится индекс для ускорения поиска по определенным реквизитам. Эта операция приводит к ускорению и оптимизации работы информационной базы, поэтому рекомендуется выполнять ее хотя бы раз в месяц.
Проверка логической целостности информационной базы – проверка логической целостности базы (связи между таблицами базы данных) и исправление ошибок в структурах таблиц информационной базы.
Проверка ссылочной целостности информационной базы — проверка тех самых ссылок на несуществующие объекты в базе данных.
Необходимо выбрать один из трех вариантов исправления таких ошибок:
Создавать объекты — система создает элементы, которые потом нужно заполнить;
Очищать ссылки — ссылки будут очищены;
Не изменять – будут показаны ошибки, ссылки не изменятся.
Пересчет итогов — пересчет предварительных результатов в регистрах накопления, расчета и бухгалтерии (Срез Последних, Остатки, Обороты, Остатки и обороты и т.д). Пересчет итогов также приводит к ускорению и оптимизации работы информационной базы.
Сжатие таблиц информационной базы— уменьшение размера базы после тестирования за счет удаления информации об уже удаленных объектах из базы данных.
Реструктуризация таблиц информационной базы – создание идентичных таблиц базы данных и перенос имеющихся данных в изменённые таблицы.
В нашем случае выставим все галочки. После установки настроек нажать «Выполнить» и ждать окончания процедуры. Результаты тестирования можно увидеть в окне служебных сообщений конфигуратора 1С.
После окончания тестирования вопрос с несуществующими объектами будет решен.
Рекомендации:
При удалении объектов и снятии с них пометки на удаление проверять их наличие в других базах. Регулярно выполнять тестирование и исправление информационной базы 1С.
2.3 «Объект не найден» после Универсального обмена данными
Формат предназначен для обмена информацией между программными продуктами 1С Предприятие: он не зависит от структур конфигураций, которые участвуют в обмене и конвертирует данные в универсальный формат EnterpriseData. В процессе синхронизации базы обмениваются XML-файлами с информацией об объектах, зарегистрированных к обмену.
Фирма «1С» активно развивает формат EnterpriseData и его использование во все большем количестве приложений.
При таком обмене иногда могут возникать ошибки, связанные с конвертацией объектов одного типа (базы – источника) в объекты другого типа (базы – приемника).
Например, при обмене между базами 1С: Управление торговлей 11.2 и 1С: Бухгалтерия Предприятия 3.0. документ «Передача товаров между организациями» из «Управление торговлей» переносится в «Бухгалтерию Предприятия» как Документ «Поступление (акт, накладная)» или Документ «Реализация (акт, накладная)». При этом одна организация переносится в «Бухгалтерию Предприятия» как контрагент. Данное преобразование предусмотрено фирмой «1С» в правилах конвертации данных. Но, несмотря на это, иногда происходят ошибки при переносе разнотипных объектов между базами. Это может быть вызвано долгим отсутствием обновления какой-либо базы – участника обмена и как следствие – старыми правилами формата обмена, которые не гарантируют правильного переноса данных.
Решение
Обновить обе базы до последних релизов и зарегистрировать невыгруженные объекты к обмену. После обмена данными с использованием последней версии формата обмена объекты должны конвертироваться и переноситься без ошибок.
Используемую версию формата можно изменить в настройках обмена на вкладке «Служебная информация»:
Если после этих действий ссылки «Объект не найден» не были заменены правильными объектами, необходимо настроить сопоставление данных вручную.
Для этого нам понадобится регистр «Публичные идентификаторы синхронизируемых объектов» (Найти его можно через «Все функции» — «Регистры сведений». Он используется для сопоставления объектов при синхронизации через универсальный формат. Ввиду большого количества записей открытие регистра может занять продолжительное время.
Регистр имеет следующую структуру:
В регистре можно обнаружить ссылки на несуществующие объекты:
В первом столбце находятся идентификаторы объектов из другой информационной базы. По этому идентификатору можно найти объект в базе-источнике.
Как получить ссылку на любой элемент информационной базы 1С:
В 1С есть очень полезный функционал – можно получить ссылку на любой объект базы и также перейти к объекту.
Ссылки, представленные во второй колонке регистра, не были найдены в базе, соответственно, эти объекты не были созданы.
Если битых ссылок не так много, то можно сопоставить их вручную. Сначала найти все битые ссылки в текущей базе и найти их соответствия в другой базе, затем выставить сопоставления в регистре «Публичные идентификаторы синхронизируемых объектов» с правильными объектами.
В нашем примере битые ссылки находятся в документе «Реализация товаров». Вместо контрагента (18:805910bf4888a98211e4f89df8b22aab). Находим этот документ в базе-источнике и определяем Организацию, которую необходимо перенести в качестве контрагента. Затем ищем такого же контрагента в базе-приемнике, при его отсутствии – создаем.
После создания или нахождения нужного объекта в ИБ нужно задать сопоставление в регистре «Публичные идентификаторы синхронизируемых объектов». Находим строку, содержащую битую ссылку (18:805910bf4888a98211e4f89df8b22aab) и сопоставляем ей необходимого контрагента. В примере: объект с идентификатором «f8b22aab-f89d-11e4-8059-10bf4888a982» будет выгружен в базу как «Моя Организация» в не зависимости от типа объекта источника. В базе – источнике необходимо зарегистрировать такие объекты к обмену заново и запустить синхронизацию данных. После обмена не найденные объекты заменятся согласно сопоставлениям, сделанным в регистре.
При большом количестве битых ссылок рекомендуем обратиться к проверенным специалистам, которые восстановят Ваши данные без потерь.
Рекомендации:
В таких случаях нужно обновить правила конвертации данных – загрузить из новой базы или полностью обновить свою информационную базу – формат и правила конвертации поставляются в каждом обновлении продуктов 1С:Предприятие. Также стоит следить за изменениями правил формата обмена на ИТС и других источниках.
Источник
Как в запросе отобрать элементы, значение которых — «битая ссылка», т.е. «объект не найден»
Для этого используется логический оператор ЕСТЬ NULL функций языка запросов.
Например, допустим, в регистре накопления «ПартииТоваровНаСкладах» мы хотим найти записи, в которых измерение «ДокументОприходования» оказалось такой вот битой ссылкой на «объект не найден». Запрос будет выглядеть примерно так:
"ВЫБРАТЬ | ПартииТоваровНаСкладах.Регистратор, | ПартииТоваровНаСкладах.Номенклатура, | ПартииТоваровНаСкладах.СерияНоменклатуры, | ПартииТоваровНаСкладах.ДокументОприходования, | ПартииТоваровНаСкладах.Качество, | ПартииТоваровНаСкладах.Склад, | ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры, | ПартииТоваровНаСкладах.СтатусПартии, | ПартииТоваровНаСкладах.Заказ |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах |ГДЕ | ПартииТоваровНаСкладах.ДокументОприходования.Ссылка ЕСТЬ NULL"
Обратите внимание, если в запросе требуется получить ссылку на регистратор регистра накопления, то запрос должен быть построен не к остаткам и не к оборотам, а просто к регистру (как в этом примере)
Итог исполнения запроса:
Регистратор | Номенклатура | СерияНоменклатуры | ДокументОприходования |
Поступление товаров и услуг АМН00015703 от 26.11.2010 12:36:37 | УСИЛИТЕЛЬ БАМПЕРА ЗАДНЕГО | 10702030/281010/0044030, КОРЕЯ | <Объект не найден> (202:8f3be61ec213fa5511dffc85b405870a) |
… | … | … | … |
Качество | Склад | ХарактеристикаНоменклатуры | СтатусПартии | Заказ |
Некондиция 15 | Основной склад | <пустая ссылка Справочник ссылка: Характеристики номенклатуры> | Купленный | <пустая ссылка Документ ссылка: Заказ покупателя> |
… | … | … | … | … |
Дополнение
По сведениям наших коллег в некоторых случаях может потребоваться отбор не по
"ГДЕ ПартииТоваровНаСкладах.ДокументОприходования.Ссылка ЕСТЬ NULL"
а по представлению, т.е. с использованием конструкции вида:
"ГДЕ ПартииТоваровНаСкладах.ДокументОприходования.Ссылка.Представление ЕСТЬ NULL"
Мы думаем, что это может быть связано с различными видами «битости» ссылок. В любом случае, один из способов должен Вам помочь. Поэтому рекомендуем поэкспериментировать с обоими этими условиями.
Next Post
-
1С: Логистика – управление складом AXELOT
-
v8
-
Пользователю Axelot
Особенности разупаковки номенклатуры, когда по одной строке «Взять» должно быть несколько строк «Положить» (1С: Логистика – управление складом Axelot: Пользователю)
Ср Июн 9 , 2010
Вопрос Как оформить документ «Переупаковка номенклатуры», когда нужно разупаковать упаковку из 100 шт на 3 упаковки по 30 шт + 10 штук? Ответ Для этого порядок строк «положить» должен быть такой: сначала 10 штук по штукам, потом 3 упаковки по 30 штук, но не наоборот. См. инструкцию