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

Добрый день!
В данном случае платформа пытается обратиться к Центру лицензирования конфигураций по адресу 1cv8update.com, но попытка соединения оказывается неудачной. Для регистрации конфигурации в центре лицензирования необходимо временно предоставить доступ к сети Интернет для этих компьютеров.
Обратите внимание! При последующем обновлении платформы или программы может опять выходить данное сообщение.
Если же такое сообщение появляется, и при этом у пользователя есть выход в интернет, то возможны следующие причины:

1. Брандмауэр или другое промежуточное ПО (антивирусы и т.п.) блокируют попытки программы установить подключение по адресуhttps://1cv8update.com/*. В этом случае необходимо проверить настройки брандмауэра или антивируса, при необходимости разрешить подключение к указанному адресу;
2. Если подключение устанавливается через прокси-сервер:
2.1 Неверно настроены параметры прокси-сервера. В этом случае необходимо проверить настройки прокси-сервера в программе Internet Explorer или конфигурационном файле inetcfg.xml (только если пользователь настроил такой файл, инструкция по настройке:http://its.1c.ru/db/v836doc#bookmark:adm:TI000000391);
2.2. Параметры безопасности, заданные на прокси-сервере, запрещают устанавливать подключение по адресу 1cv8update.com/*. В этом случае необходимо обратиться к администратору прокси-сервера для разрешения подключения по адресу 1cv8update.com/*;

Проверить доступность адреса 1cv8update.com »» вы можете обратившись по нему в браузере, запускаемом на том же компьютере, что и ваш клиент “1С:Предприятие 8”. После загрузки страницы (не пугайтесь ошибки 403), замочек в браузере должен быть зеленым, что означает, что ваша цепочка сертификатов проверена и валидна.

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

Пример текста ошибки:
Попытка вставки неуникального значения в уникальный индекс:
Microsoft SQL Server Native Client 11.0: Выполнение инструкции CREATE UNIQUE INDEX прервано, поскольку обнаружен повторяющийся ключ для объекта с именем “dbo._InfoRg22530” и индекса с именем “_InfoRg22530_ByPeriod”. Повторяющееся значение ключа: (0, 3900-01-01 00:00:00, 0x9100fa815581b9604de110ca98afc344, 0x00000000000000000000000000000000).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1

Ошибка возникает, если в базе есть у каких-то объектов, реквизитов, субконто  – значение NULL, а у них такого значения быть не может. И появляется такая ошибка только в SQL базах. Т.е. если такую базу выгрузить в файловую, то там уже этой ошибки не будет. Т.к. у файловой базы свои таблицы (всего 4 шт.), а у SQL свои. И SQL база критично реагирует на такие значения в своих таблицах.

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

Разберём решение проблемы на примере перехода с Бухгалтерии 3.0 ПРОФ на КОРП. После перехода у счёта 68.01 появляется новое субконто РегистрацияВНалоговомОргане. И тогда, в базах на SQL, все создание в ПРОФ версии документы которые используют этот счёт, не будут перепроводится. Будет выходить выше показанная ошибка. Т.к. это новое субконто у старых документов, в проводках, запишется со значением NULL (хотя должно быть Пустое значение, ну или как-нибудь налоговый орган).

.НО так заменить NULL в SQL базе не получится, во время выполнения обработки будет выдана та же самая ошибка. Поэтому необходимо сделать так:

1. Выгрузить уже рабочую, переведённую на КОРП версию, SQL базу в dt’шник (в конфигураторе Администрирование – Выгрузить базу – выберите куда выгрузить базу в виде файла *.dt)

2. Загрузить dt’шник в файловую базу (в ненужной или заранее подготовленной, чистой, файловой базе, в конфигураторе Администрирование – Загрузить базу – выбрать выгруженный ранее dt’шник)

3. Выполнить обработку в файловой базе (там ошибки не будет и все NULL’ы корректно заменяться) (как выполнить обработку описано ниже)

4. Выполнить внешнее и внутреннее тестирование базы. Это обязательно нужно сделать иначе при загрузке базы обратно в SQL будет выходить та же ошибка. (как выполнить эти тестирования можно посмотреть тут: http://kb.stspp.ru/software/inner_and_outer_1c_testing)

5. Теперь наоборот выгрузить dt’шник из файловой базы и загрузить его в SQL базу. Теперь при проведении обработанных документов ошибки выходить не будет.

Обработка из этой статьи находит все документы, за указанный период, у которых в проводках фигурирует субконтно РегистрацияВНалоговомОргане (которое появляется в КОРП версии), у которого значение NULL. И заменяет это значение на Пустое значение.

Читайте также:  Количество попыток ввода правильного Pin-кода достигнуто из-за ошибки 0x8010006c, которая недоступна для карты

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

Соответственно если у кого-то такая же ошибка, но НЕ после перехода на КОРП, а на пример после обмена, загрузки каких-то данных, выполнения каких-то обработок и т.д. То необходимо выявить, где присвоилось значение NULL в конкретном документе/справочнике и подобным способом убрать этот NULL но уже своей обработкой, но в том порядке, как описано выше. Помните, что NULL может быть, как в проводках документа, в т.ч. не только бухгалтерских, так и где-нибудь на форме документа/справочника, в каком-нибудь реквизите, но в таком случае он наверно даже не откроется.

Также если это ошибка появилась у вас при проведении документа, после того как вы перевели файловую базу Бух КОРП на SQL (а база когда-то изначально была ПРОФ), то значит у тех документов что были созданы в ПРОФ версии, сейчас также в субконто РегистрацияВНалоговомОргане значение NULL и SQL база такое не приемлет. И при загрузке базы в SQL будет выходить такая ошибка. Тут на самом деле в файловой базе значений NULL по факту не будет, но SQL в свои таблицы загрузит именно такие значения. Поэтому тут надо заставить базу SQL создать эти NULL’ы и потом в файловой базе их исправить. Но как это сделать, уже не подскажу.

Описана методика исправления ошибки путем внесения изменений в 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.

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

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

1.

ixijixi

Сейчас в теме

Работает! Правда, реквизиты нужно потом все руками прописать, но это таксть мелочи жизни)

2.

MaxS

Сейчас в теме

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

3.

elenko1

Сейчас в теме

4.

SeiOkami

Сейчас в теме

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

5.

CratosX

Сейчас в теме

(4) SeiOkami, он создастся и запишется, но перезаписать его не сможешь до тех пор, пока их не определишь

6.

SeiOkami

Сейчас в теме

(5), неужели процедуры ПередЗаписью() не сработают?
Ок, проверю)

7.

CratosX

Сейчас в теме

8.

Vin_Tik

Сейчас в теме

Всем привет и спасибо за отклик. Замена id “существующего объекта” возможна конечно,но нужно учитывать, что мы можем получить другую битую ссылку от уже “существующего объекта”. Смысл обработки прост и понятен. Думаю если кому припрет это можно и самому дописать, если будет много просьб могу добавить такой функционал.

9.

Антон Ширяев

Сейчас в теме

Если не секрет расскажите пожалуйста как получаете тип битой ссылки – путем парсинга ЗначениеВСтрокуВнутр() всех возможных пустых ссылок, как это делается в обработке

(Анализ и редактирование файлов журнала регистрации 1С 8.1/8.2 – ELF/LOG/LGF/LGP) или найден другой способ поиска типа?

10.

Vin_Tik

Сейчас в теме

Метод чуток другой, но все равно с перебором метаданных. Поглядеть можно в обработке, код открытый

А есть ли обработки, в которых можно указать таблицу и обработка сама создаст объекты по битым ссылка в реквизитах объекта?

12.

webester

Сейчас в теме

Не совсем понял, где она возьмет код, наименование справочника, дату документа? Или это все будет пустое?

13.

Vin_Tik

Сейчас в теме

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

16.

Bukaska

Сейчас в теме

14.

Artemuch2

Сейчас в теме

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

15.

Vin_Tik

Сейчас в теме

Скоро выложу новую версию для работы с копией базы и воссоздания ссылки из нее

Читайте также:  СБОРКА ЗАВЕРШЕНА С ОШИБКАМИ ПРОЦЕСС ТЕРМИНАЛА ЗАВЕРШЕН С КОДОМ ВЫХОДА 1

17.

ZLENKO

Сейчас в теме

Спасибо. Помогло убрать битую ссылку.

18.

Mi4man

Сейчас в теме

Отличная обработка! Спасибо автору!

19.

galinka1c8

Сейчас в теме

Замечательная вещь. Подскажите, а вариант для переноса информации по справочникам был сделан?

20.

Vin_Tik

Сейчас в теме

(19) galinka1c8, Привет, к сожалению сейчас нет времени дописать обработку, но думаю это не так сложно дописать самому. Тут главное идея поиска и битой восстановления ссылки.

21.

qdr1k

Сейчас в теме

22.

Nadushka74

Сейчас в теме

огромное спасибо – для нас оказалась мега вещь!

23.

Zebar

Сейчас в теме

А почему на скриншоте УФ а скачалось обычное?

24.

Vin_Tik

Сейчас в теме

На скриншоте как раз обычная фрма, если хотите могу добавить УФ форму.

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

Публикация № 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 Оперативный учет 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Закрытие месяца – важный процесс в современных конфигурациях, таких как УТ 11.4, УТ 11.5, КА 2.4, КА 2.5 ERP 2.4,ERP 2.5, КА 2 Казахстан, УТ 3 Казахстан регламентные операции влияют на расчет себестоимости, и ошибки в данном расчете не дают картины деятельности организации.

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

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

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

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

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

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

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

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

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

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