1с найдено более одной записи

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

Некорректность записи может быть определена одним из двух способов:

  • На основе отчета в формате XML-файла, сформированного с помощью утилиты тестирования и исправления.
  • На основе анализа имеющихся пометок удаления в таблице узлов плана обмена.

Обработка реализована в виде мастера, который позволяет выполнить следующие действия:

  1. Поиск данных, в которых может быть найдена ссылка на некорректную запись ЭтотУзел.
  2. Определение некорректной и корректной записи ЭтотУзел.
  3. Копирование данных (код, наименование, реквизиты, табличные части) из некорректной записи ЭтотУзел в корректную запись.
  4. Замена ссылок на неправильную запись ЭтотУзел ссылками на корректную запись ЭтотУзел.

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

1) после выполнения «Тестирования и исправления информационной базы» в режиме Конфигуратор, в процессе которого какие-либо узлы таблицы узлов плана обмена были помечены на удаление из-за имеющейся в них ошибки,

2) после выполнения «Тестирования и исправления информационной базы», проведенного для таблицы узлов плана обмена с помощью административной утилиты (публикуется отдельно). — Данный способ является рекомендуемым.

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

Данные могут быть исправлены для объектов метаданных следующих видов:

  • Константы,
  • Планы обмена,
  • Справочники,
  • Документы,
  • Планы видов характеристик,
  • Планы счетов,
  • Планы видов расчета,
  • Бизнес-процессы,
  • Задачи,
  • Регистры сведений,
  • Регистры накоплений.

В данных регистров бухгалтерии, регистров расчета и последовательностей замена ссылок на запись ЭтотУзел не выполняется.

Содержание

  1. Guesto notes
  2. Как возникает проблема и как ее избежать
  3. Как устранить проблему
  4. Определение проблемных объектов
  5. Определение жертвы
  6. Удаление метаданного
  7. Реструктуризация таблиц информационной базы
  8. Восстановление метаданного и данных

Guesto notes

У одного из клиентов во время обновления конфигурации базы данных возникла ошибка «Для одного ссылочного кода существует более одной таблицы в базе данных».

Кроме того данная ошибка уже исправлена версиях платформы 8.3.12.1924, 8.3.13.1865, 8.3.14.1694, 8.3.15.1489.

Как возникает проблема и как ее избежать

Воспроизведение достаточно простое:

  1. Делаем резервную копию ИБ средствами СУБД;
  2. Добавляем в ИБ объект конфигурации. В СУБД будет добавлена таблица с типом объекта и ссылочным кодом. Например _DocumentChngR26630;
  3. Восстанавливаем ИБ средствами СУБД из резервной копии созданной в пункте 1;
  4. Добавляем в ИБ объект конфигурации отличный от добавленного в пункте 2. В СУБД будет добавлена таблица с типом объекта и дублирующимся ссылочным кодом. Например _InfoRg26630;

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

Данный сценарий вполне можно получить при работе в тестовом контуре, выполняя обновлениие тестовой ИБ данными резервной копии продуктивной ИБ.

Для избежания данной проблемы необходимо выполнить перезапуск сервера 1С:Предприятия сразу после восстановления ИБ из резервной копии средствами СУБД, или работать на версиях платформы начиная с 8.3.12.1924, 8.3.13.1865, 8.3.14.1694, 8.3.15.1489.

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

Как устранить проблему

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

Определение проблемных объектов

Для этого воспользуемся методом ПолучитьСтруктуруХраненияБазыДанных(), точнее напишем небольшой кусочек кода:

В полученном тексте найдем записи с указанными таблицами в сообщении об ошибке

Из полученного видно, что РегистрСведений.СостоянияБлокировкиВычетаНДСПоСчетамФактурам конфликтует с Константа.CRM_ПарольПользователяСинхронизацииiCRM и Документ.CRM_ШаблонЭтапаКалендарногоПлана.

Определение жертвы

Теперь необходимо исходя из наполнения ИБ и важности объектов решить какой из них удалить. В разбираемом примере РегистрСведений.СостоянияБлокировкиВычетаНДСПоСчетамФактурам оказался пуст, его и будем удалять.

Если объект содержит данные, тогда необходимо обеспечить возможность возвращения данных в исходное состояние. Например обработкой из инструментов разработчика ВыгрузкаЗагрузкаДанныхXML выполнить выгрузку данных в файл.

Удаление метаданного

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

Теперь необходимо выполнить попытку удаление. Если на объект есть ссылки, то выведется сообщение об нерешенных зависимостях: “Объект не может быть удален, так как на него имеются ссылки в других объектах”.

Заходим в каждый из них, убираем ссылки, после удаляем сам объект.

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

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

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

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

Восстановление метаданного и данных

Теперь настала пора вернуть конфигурацию к ее начальному состоянию. Удаленный объект, и ссылки на него в других объектах возвращаются путем сравнения и объединения с сохраненной ранее конфигурацией или конфигурацией поставщика .

Если в удаляемом объекте были данные, тогда необходимо выполнить их восстановление, например обработкой из инструментов разработчика ВыгрузкаЗагрузкаДанныхXML.

Собственно все! Таким нехитрым способом устранили ошибку «Для одного ссылочного кода существует более одной таблицы в базе данных».

В СУФД стала появляться ошибка при импорте файла из 1С.

В справочнике информация Л/С найдено больше одной записи для ЛС СУФД

Ошибка критическая (красная) соответственно документ сохранить, подписать отправить не получится.

В ручную тоже создавать документ нет смысла. Дело в том что в СУФД по Вашей организации задвоился справочник.

Первым делом проверим так же это на самом деле? Задвоились ли справочники.

Ищем «себя» в справочнике по своему Л/С, как видим да, действительно, в справочнике две актуальные записи по организации. А должна быть одна.
Что делать дальше? На своем уровне к сожалению Вы ни чего не можете сделать. Первым делом звоните в ТОФК (свое казначейство), говорите что при импорте файла выходит такая ошибка (можете кинуть им скриншот на электронку, что бы они сами поняли в чем дело). Дальше сотрудник ТОФК может сделать выгрузку справочника по вашей организации (с вашим ЛС) — по крайней мере так делаю я.

Технически сотрудник ТОФК заходит в справочник АСФК (Книга регистрации ЛС) — находит Ваш ЛС, выделяет все найденные строки, где упоминается Ваш ЛС нажимает Выполнить и выбирает

Как в вашем регионе или городе обстоят дела с этим я не ручаюсь говорить. И где то через пол часа зайдя снова в справочник Вы уже увидите одну актуальную запись. И можете смело пробывать импортировать файлик.

Источник: computermaker.info

Понравилась статья? Поделиться с друзьями:
Ок! Компьютер
Добавить комментарий