Ошибка sdbl ошибка обновления конфигурации базы данных для одного ссылочного кода

Ошибка при обновлении “Для одного ссылочного кода существует более одной таблицы в базе данных”

Публикация № 1147114

Приемы и методы разработки –

“Для одного ссылочного кода существует более одной таблицы в базе данных” Ошибка

После перехода на новую платформу поменялась (появилась) проверка на дублирование внутренних идентификаторов объектов метаданных. Возможная ошибка при обновлении “Для одного ссылочного кода существует более одной таблицы в базе данных”. Лечится изменением идентификатора объекта метаданных.

Отказ от ответственности: автор не несет ответственность за использование приведенного алгоритма действий

Для изменения UUID объекта

  • Ищем объекты метаданных UUID которых дублируется.
    Используем функцию “ПолучитьСтруктуруХраненияБазыДанных()”
    Обработка приложена, кнопка “Заполнить” формирует структуру метаданных. С ошибки копируем коды таблиц. В колонке “Имя таблицы хранения” поиском ищем таблицы. В примере это “Document32786” и “ConstChngR32786”. Соответственно “Документ.УведомлениеОПолучателеДокументов” и “РегистрацияИзмененийКонстанты”.
  • Обновляем базу.

Скачать файлы

1.

Дмитрий74Чел

Сейчас в теме

Чем же решение по ссылке корректней (правильней) ?

3.

Дмитрий74Чел

Сейчас в теме

(2) В данном решение предложено поменять UUID на произвольный. Не на правильный (которого -то и нет, т.к. проблема не в UUID), а на какой-то там любой.
Тем более сомнительна рекомендация “В файле “ConfigDumpInfo” UUID объекта можно не менять.”. Т.е. в одном месте конфигурации у документа будет один идентификатор, а в другом – другой. На мой взгляд так получаем битую конфигурацию. То, что метод сработал на одной базе скорее всего является следствием лишь того, что в ней указанный документ не использовался.

В указанной ссылке приведены несколько решений, как сложных (с заменой номеров объектов), так и простых и 100% безопасных (временное добавление объекту реквизита).

4.

han_kdz

Сейчас в теме

Данное решение подходит только, если на изменяемый объект нет ссылок. Иначе будет “Объект не найден” или “Ошибка формата потока” при обращении к таким реквизитам.

Лично у меня было вот такое сообщение:

В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.

Имена таблиц с кодом 1: CKinds1, CKindsDN605
Имена таблиц с кодом 2: CKinds2, CKindsDN639
Для исправления проблемы вы можете обратиться в службу технической поддержки.

Реструктуризацию провести не смог, вываливается. База большая, около 500Г. Возможно из-за этого.

CKinds – это план видов расчета. Какой именно я не стал определять (можете поиграться со структурой, кому интересно). Я просто добавил КАЖДОМУ из плана видов расчета (у меня их всего 6) новый реквизит и ошибка исчезла!!! Затем Все эти реквизиты убрал за ненадобностью.

Релиз 1С:Предприятие 8.3 (8.3.15.1489) Конфигурация УТП (Украина)

8.

mailorsk

Сейчас в теме

(4)Ваше решение 100% рабочее. При переходе на новую платформу 8.3.16.1063 вышла ошибка

В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.

Имена таблиц с кодом 2: CKinds2, CKindsDN1051
Имена таблиц с кодом 5: CKinds5, CKindsDN1053
Для исправления проблемы вы можете обратиться в службу технической поддержки.

В результате минутного анализа структуры и определения ПланВидовРасчета были добавлены реквизиты, после успешного обновления, реквизиты удалены

Как проанализировать структуру

Ошибка sdbl ошибка обновления конфигурации базы данных для одного ссылочного кода

(4)Спасибо! Самый простой метод и сработало.

(4) Решение работает. При переходе с 8.3.12.1469 на 8.3.17.1851 нарвался на эту же ошибку:

Имена таблиц с кодом 2: CKinds2, CKindsDN1072
Имена таблиц с кодом 5: CKinds5, CKindsDN1107
Для исправления проблемы вы можете обратиться в службу технической поддержки.

В ПланВидовРасчета.УправленческиеНачисления(_CKinds5) и ПланВидовРасчета.ОсновныеНачисленияОрганизаций(_CKinds2) добавил по одному реквизиту. Всё заработало.

15.

RomanMartynenko

Сейчас в теме

16.

Misanets

Сейчас в теме

(4) спасибо тебе добрый человек! Сделал так же, все получилось.

5.

dubovenko_m

Сейчас в теме

ВАЖНО!!! вчера написала разработчику. получила ответ:
1С Линия консультации Вчера, 13:28
Кому: вам
Здравствуйте!
Присылайте базу в ремонт. Самостоятельно не лечится.
Вам предоставлен ресурс для передачи службе технической поддержки дополнительных файлов ,
в рамках вашего обращения (#HL-106678) , просьба загружать данные только относящиеся к этому обращению.

6.

ybatiaev

Сейчас в теме

7.

dubovenko_m

Сейчас в теме

9.

timm00

Сейчас в теме

Автор забыл написать БОЛЬШИМИ БУКВАМИ что после загрузки конфигурации из файлов автоматически запускается реструктуризация таблиц информационной базы! Что на нашем сервере с нашей базой длится примерно сутки. Обратите внимание!

10.

Meistersinger

Сейчас в теме

У меня проблема случилась с моим справочником, добавленным для регистрации кое-каких событий. Вылечилась простым удалением оного.
Причем, в одной из примерно 20 баз БП2. Остальные пока выглядят живыми.

11.

Evgeniy

Сейчас в теме

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

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подсистема “Показатели объектов”

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

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд).
Точность распознания до 98%.

от 11 рублей

Внешний регламент для 1С

Инструментарий разработчика Платформа 1С v8.3 Россия Абонемент ($m)

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

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

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

Читайте также:  Код ошибки 0х00000050 windows 7

Модель объекта

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом.
Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

Привет, Инфостарт!
Сегодня расскажу, как я решил проблему с выключенными регламентными заданиями в рабочих базах.
Желая исключить человеческий фактор и минимизировать количество ошибок, я написал небольшую конфигурацию. 
В конфигурации два регламентных задания. Первое периодически подключается к кластеру и сохраняет текущие параметры: имя, Сервер БД, базу СУДБ, блокировки входа и регламентных заданий и т.д. Второе задание периодически проверяет эти параметры на ошибки.

Способ создать полноценный ТСД без мобильной разработки. Теперь новая версия – Simple UI (обновлено 14. 2019)

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Логистика, склад и ТМЦ Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Бухгалтерский учет Управленческий учет Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

Программы для исполнения 488-ФЗ

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя.
Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Очистка кэша 1С 8 (8. 0, 8. 1, 8. 2, 8. Грамотная чистка кэша 1С с сохранением настроек.

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Эффективное средство для устранения ошибок, возникающих в локальном кэше 1С на клиенте, которым легко сможет воспользоваться пользователь с любым уровнем знаний.
Wsf-скрипт, созданный на стандартном языке автоматизации Windows – “WSH JScript”, очищает кэш 1С просто, быстро и безопасно.
Кроме варианта, очищающего кэш текущего пользователя, имеется также вариант для чистки кэша 1С всех пользователей терминального-сервера.

Навигатор по конфигурации базы 1С 8

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3.
Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д.
Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы.
Отображает структуру хранения объектов базы данных, для регистров доступен сервис “Управление итогами”.
Платформа 8.3, управляемые формы. Версия 1.1.0.91 от 17.01.2023

Консоль Внедренца v

Идея данной обработки заключается в создании простого, функционального и универсального инструментария для внедренцев и программистов 1С, который будет работать как в толстом клиенте на обычных и на управляемых формах, так и в тонком клиенте. Интерфейс и логика работы максимально идентичны у обычных форм и управляемых. Инструментарий включает в себя: Консоль кода, Консоль запросов, Консоль отчетов (СКД), Универсальную обработку объектов, Средства для работы с таблицами базы данных 1С, Редактирование регистров сведений базы, Инструмент по работе с табличными документами – загрузка данных из табличного документа.

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) – автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных – правила установлены в 54-ФЗ ст.2 п.2.
Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Набор подсистем “Умные таблицы”

Инструментарий разработчика Платформа 1С v8.3 Беларусь Россия Казахстан Абонемент ($m)

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.

Автокликер для 1С

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

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

Если вы словили такую ошибку:
**************************
Ошибка SDBL: 
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.

Читайте также:  Код ошибки 502b что значит

Шаг 1. Указать параметры доступа к базе SQL. Перейдите на вторую закладку

Шаг 2. Файлы исходной базы. Под файлами понимаем текст имен и текст схемы. На рис. 2 показаны как они выглядят, но на этом шаге поля будут пустыми, их заполнит обработка после нажатия на указанную кнопку. Обработка считывает схему прямо через sql-запрос.

Шаг 3. Таблицы корректировки номеров. Пользователю требуется для каждой пары определить таблицу, которую он будет перенумеровывать. Требуется указать тип таблицы и тот злополучный неуникальный ссылочный код. Новый ссылочный код обработка укажет сама, после выполнения этого шага можно вернуться и посмотреть его. На рисунке 3 ссылочный код уже указан для наглядности, но при первом прохождении эту колонку заполнять не нужно. Он сохранился на рисунке, т.к. вся таблица сохраняется автоматически. В любом случае этот номер будет обновлен выполнением команды по кнопке. В этой версии добавилась возможность отметить те строки которые будут участвовать, остальные сохранятся, но участвовать не будут. На этом шаге обработка формирует новые файлы схемы. При выборе в паре таблицы для переномерования предпочтение следует отдавать перечислениям, константам.
В нижней таблице будут добавлены строки с именами таблиц табличных частей.

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

Имена таблиц с кодом 28: BPrPoints28, ExtensionsRestructNGS

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

Кстати, эти особенные таблицы, их не надо обрабатывать “переименованиями”, да у них и номера нет, только для порядка в файле имен.
Т.е. такие пары в таблицу не вставлять, исправить файл имен самостоятельно.

Шаг 4. Можете посмотреть новые файлы схемы, а в сообщениях можно увидеть протокол замен. Ну и по команде нужно записать в базу SQL обновленную схему. А потом по команде подготовить SQL-запрос для переименования таблиц.

Шаг 5. Выполнить команды SQL. Подготовленный список операторов переименует таблицы.

На этом работа обработки заканчивается. Исправленную Базу следует проверить в конфигураторе. Администрирование, Тестирование и исправление, пункт Реструктуризация информационной базы. Эта процедура переименует все индексы обработанных таблиц, а так же статистики таблиц.
Поскольку 1с может использовать кэш, а в этом кэше может сохраниться старая схема, то следует либо освободиться от кэша (сервера и клиента), либо (как некоторые освобождаются от кэша) удалить базу без изменения базы SQL, а потом создать новую базу с указанием на прежнюю базу SQL. У меня в конфигураторе конфигурация была закрыта, кэш мне не помешал.
В общем случае, даже ошибка в таблице на шаге 3 не должно приводить к порче схемы (базы), просто если указать не ту таблицу (тип и номер) она будет переименована и в схеме и в базе, что не возбраняется. Просто проблема не устранится.

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

P.S. оказалось не понятно из описания и следует сфокусировать внимание:

1. Запускать обработку нужно в другой базе, не в той, которую исправляете. Обработка работает непосредственно с MS SQL, а не с базой текущего приложения.

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

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

Благодарности:
Обработка создавалась по мотивам методики следующей публикации:
//expert.chistov.pro/public/1126277/ Именно эту методику обработка автоматизирует. Руками у меня получилось криво. Благодаря чему и создал обработку.
Подсмотрены алгоритмы в приобретенной обработке:
//expert.chistov.pro/public/1018320/

Обработка тестировалась на релизе платформы: 1С:Предприятие 8.3 (8.3.15.1830).

Ошибка “Для одного ссылочного кода существует более одной таблицы в базе данных” – как проще исправить

Публикация № 1229039

Обработка для определения соответствия имен метаданных 1с именам таблиц в MS SQL

При обновлении платформы 1с 8.3.6.2100 на платформу 8.3.16.224 под  УПП 1.3.138.1 (база на MS SQL) возникла ошибка

“Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.
В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.

Имена таблиц с кодом 947: CKinds947, CKindsDN19425
Имена таблиц с кодом 950: CKinds950, CKindsDN19442
Для исправления проблемы вы можете обратиться в службу технической поддержки.”.

В интернете много есть инф. по этой проблеме, в частности в публикации //expert.chistov.pro/public/1126277/  приведено ее решение, но оно довольно таки громоздкое. Есть более простое.

Сначала мы попробовали ТиИ с реструктуризацией таблиц, но база большая , более 100 Гб, тестовая база обрабатывалась несколько дней – поняли, что это не наш вариант. С помощью обработки для определения соответствия названий объектов метаданных 1с названиям таблиц в SQL (обработка прилагается, она элементарная – но на сайте много не программистов, кому она пригодится) определили объекты метаданных 1с, в которых есть проблемы. В данном случае это были

CKinds947 – ПланВидовРасчета.ОсновныеНачисленияОрганизаций

CKinds950 – ПланВидовРасчета.УправленческиеНачисления

добавили в каждый из них по одному реквизиту – после этого сохранение и обновление конфигурации БД прошло без ошибок (потом реквизиты удалить).

Проблема была решена.

Значения по умолчанию для пользователей (Расширение)

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

При заполнении документов и справочников пользователи часто сталкиваются с необходимостью ввода одних и тех же реквизитов. Заполнение в документах некоторых из них, таких как: Организация, Склад и т.п. – выполняется реализованным в 1С механизмом подстановки значения из последних 3-5 введенных документов. Если же вы хотите заполнять все реквизиты шапки (и даты, и флажки, и другие поля, включая дополнительные реквизиты), то вам поможет данный механизм.

Расширенное редактирование трудовой деятельности СЗВ-ТД

Зарплата Обработка документов Кадровый учет Корректировка данных Платформа 1С v8.3 Сложные периодические расчеты 1С:ERP Управление предприятием 2 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Бухгалтерский учет Абонемент ($m)

Расширение, позволяющее отредактировать документ Сведения о трудовой деятельности работников, СЗВ-ТД. Добавление, отмена, изменение, редактирование, удаление мероприятий, замена идентификатора (UUID). Для конфигураций ЗУП, ЗГУ, БП, КА, ERP.

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

Корректировка данных Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Иногда бывает, что после обновления конфигурации некоторые расширения перестают работать и часто такие ошибки выявляются только в процессе тестирования или рабочем режиме.
При правильной разработке и проектировании расширения можно свести к минимуму такие ошибки, но иногда их не избежать.
Если в базе расширений не более 5-10, то проверить каждое после обновления не составляет труда, а вот если их больше 50 – проверка отнимает слишком много времени
Поэтому была написана обработка, которая в автоматическом режиме проверяет расширения, подключенные в программе.
Обработка универсальная и будет работать в любой программе, в которой есть расширения.

Читайте также:  Ошибка виндовс 10 код ошибки 0x8007232b

Описана методика исправления ошибки путем внесения изменений в sql-таблицы.

Отказ от ответственности: вы все здесь взрослые и делаете всё на свой страх и риск. Да, и ещё: лицензионное соглашение не разрешает вам это делать, поэтому данное описание дано для образовательных целей.

После перехода с 8.3.12 на 8.3.15 словили неприятную ошибку “Для одного ссылочного кода существует более одной таблицы в базе данных”. Самое неприятное, что ошибка стала вылезать и на типовых базах, которые никто никогда не трогал.

Гугл ничего не дал кроме стандартных “почистить кэш, перерегистрировать базу в кластере, выполнить ТИИ”. Ну и еще “добавить реквизит к объекту и обновить БД” (этот пункт не пробовал, напишите в комментариях — вдруг это самый простой метод в комментариях к этой статье есть сообщение что метод сработал на 8.3.16.1030, пробуйте).

На партнерке есть пара веток, в т.ч. https://partners.v8.1c.ru/forum/topic/1792992, из которой приведу пару цитат:

Воспроизводится так (проверено на релизе 8.3.13.1644 / SQL 2023):
1. Создаём две базы test1 и test2
2. Запускаем конфигуратор test1, добавляем справочник, обновляем конфигурацию. В базе добавляется таблица _Reference21
3. Делаем SQL бэкап базы test1 и восстанавливаем его в test2.
4. Запускаем конфигуратор test2 и добавляем документ, обновляем конфигурацию. В базе видим таблицы: _Reference21 и _Document21.
Помогает перезапуск rmngr.exe после восстановления test2 из бэкапа.

И ответ представителя фирмы 1С:

Да, действительно, в этом сценарии две таблицы получают два одинаковых ссылочных номера.
Это ошибка, будет исправлена в одной из следующих версий.
Что можно сказать по этой ошибке. Во-первых, чистка кэша не поможет. Во-вторых, ошибка воспроизводится только если было хотя бы одно добавление объекта метаданных до восстановления из резервной копии (это приводит к инициализации сервиса в менеджере кластера, и как следствие — сохранению значения последнего номера таблицы).
Рекомендации на сейчас (до выхода версий с исправлением) по обходу ошибки: сразу после восстановления ИБ средствами СУБД — производите перезапуск сервера платформы.

Я провел тест на 8.3.12 — проблема по методике первой цитаты воспроизводится. Так что делаю выводы:
1) проблема с задвоением внутренней нумерации объектов существовала очень давно, как минимум с 8.3.12, но лишь в 8.3.15 добавили проверку (понятно) и запрет применения изменений (а вот тут явно не подумали что у пользователей много таких “поломанных” баз)
2) по-идее, можно жить спокойно на релизах менее 8.3.15 и ждать манны небесной от фирмы 1С.

Ну а нам ждать “одной из следующих версий” нельзя. Базы разработчиков “встают” одна за другой на этой ошибке. Я предлагал откатиться на 8.3.13 или 8.3.14 — но согласился пробовать найти свое решение, т.к. когда будет эта “манна” — неизвестно. А если продолжить использовать “старые” релизы — то дубли нумерации скорее всего будут только плодиться, хоть мы их и не будем видеть.

Размышления привели к пониманию того, что надо найти “где в базе хранится сопоставление таблиц sql и объектов конфигурации”. Как оказалось таких мест два: таблица DBSchema и реквизит DBNames таблицы Params.

Ошибка sdbl ошибка обновления конфигурации базы данных для одного ссылочного кода

Попытка получить DBSchema использованием SQL Management studio завершилась неудачей: в режиме ssms получается получить лишь первые 65КБ двоичных данных, хранящихся в таблице, и при вставке в hex-редактор получаем неполную структуру.
А уж DBNames и вовсе хранится в сжатом виде. Поэтому усилия были перенаправлены на поиск инструмента для редактирования этих данных. И он был найден: Восстановление структуры DBSchema
Стоимость инструмента  — 10sm (Мопед не мой!). Впрочем, описанная ниже методика не зависит именно от этой обработки; можете поискать аналог или написать свою. Функционал указанной обработки используется только в части выгрузки DBSchema и DBNames из sql в файл и обратно.

А я опишу методику лечения баз:

  • рекомендуется использовать Notepad++ или аналог. В отдельном файле открыть текст ошибки из конфигуратора.
  • запустить обработку, получить DBSchema (схема — список объектов — распознать схему) и DBNames (вверху “загрузить из БД в файл”), выгрузить обе структуры в файлы, указав вверху пути и нажав на кнопки рядом. Открыть файлы в Notepad++. Должно получиться примерно следующее (слева DBNames, справа — DBSchema):
  • из текста ошибки для каждой пары объектов выбрать “жертву”; проще менять номер у констант или регистров, т.к. на них обычно нет ссылок в реквизитах других объектов. Желательно выбирать в таком качестве “таблицы изменений” вида _ConstChngR2346 или _DocumentChngR3078 не имеющие табличных частей (у нет таблиц вида Document750.VT20237 или _Reference49197_VT3332).
  • в DBNames находим строку жертвы по номеру объекта, переносим строку в конец файла, меняем номер объекта (+1 к предыдущему)
  • в файле с текстом ошибки к номеру “жертвы” добавляем “-НовыйНомер”
  • в DBSchema находим объект, меняем номер объекта (в третьем параметре); ищем все вхождения имени объекта (например Reference3048) — ссылки на этот объект в реквизитах других объектов — выполняем замену например Reference3048 на Reference49189.
  • в DBNames первый параметр меняем на новый максимальный номер объекта
  • сохраняем файлы, считываем их обработкой (вся схема — текст — прочитать схему из файла, Имена — Прочитать DBNames из файла), выгружаем из обработки в БД
  • пишем sql-код для переименования всех таблиц вида:

EXEC sp_rename _Enum3066, _Enum49200
EXEC sp_rename _Enum3067, _Enum49201
EXEC sp_rename _DocumentChngR3078, _DocumentChngR49202

и выполняем его. Если все-таки жертвой был справочник с табличной частью — во всех табличных частях надо переименовать ссылку

EXEC sp_rename ‘_Reference49197_VT3332._Reference3048_IDRRef’, ‘_Reference49197_IDRRef’, ‘column’

В интернете много есть инф. по этой проблеме, в частности в публикации //is.podati.ru/public/1126277/  приведено ее решение, но оно довольно таки громоздкое. Есть более простое.

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *