Исправление ошибки "Для одного ссылочного кода существует более одной таблицы в базе данных" в БД SQL
Задачи пользователя - Корректировка данных
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Решаемая обработкой проблема появилась при обновлении в релизах платформы 8.3.15
О природе ее возникновения можно только догадываться, поскольку на более поздних релизах такая ситуация не является ошибкой.
Дело в том, что начиная с указанного релиза 1с при проверке состояния базы проверяет, уникальность каждого номера таблиц, а до этого, для "правильности" было достаточно, чтобы уникальность сохранялась для отдельного вида таблиц. Т.е. проверялась отдельно уникальность для справочников, документов, регистров и прочее... Какой из релизов платформы напортачил при обновлении конфигураций неясно, но релиз довольно древний.
Обработка позволяет исправить схему имен базы данных, схема которой была испорчена, и тем самым устраняет ошибки при обновлении конфигурации или при сервисной процедуре тестирования и исправления. Следует отметить, что пока эта ошибка не мешает работе программы, а проявляется только при работе в конфигураторе.
Если вы словили такую ошибку:
**************************
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.
Имена таблиц с кодом ....
**************************
Далее перечисляются пары таблиц, которые имеют одинаковый номер.
То эта обработка должна помочь. Запускать ее можно в любой базе на управляемых формах, только не в той, что исправляется.
Шаг 1. Указать параметры доступа к базе SQL. Перейдите на вторую закладку
Шаг 2. Файлы исходной базы. Под файлами понимаем текст имен и текст схемы. На рис. 2 показаны как они выглядят, но на этом шаге поля будут пустыми, их заполнит обработка после нажатия на указанную кнопку. Обработка считывает схему прямо через sql-запрос.
Шаг 3. Таблицы корректировки номеров. Пользователю требуется для каждой пары определить таблицу, которую он будет перенумеровывать. Требуется указать тип таблицы и тот злополучный неуникальный ссылочный код. Новый ссылочный код обработка укажет сама, после выполнения этого шага можно вернуться и посмотреть его. На рисунке 3 ссылочный код уже указан для наглядности, но при первом прохождении эту колонку заполнять не нужно. Он сохранился на рисунке, т.к. вся таблица сохраняется автоматически. В любом случае этот номер будет обновлен выполнением команды по кнопке. В этой версии добавилась возможность отметить те строки которые будут участвовать, остальные сохранятся, но участвовать не будут. На этом шаге обработка формирует новые файлы схемы. При выборе в паре таблицы для переномерования предпочтение следует отдавать перечислениям, константам.
В нижней таблице будут добавлены строки с именами таблиц табличных частей.
Рекомендуется в случае подобных пар:
Имена таблиц с кодом 28: BPrPoints28, ExtensionsRestructNGS
Совершенно безопасно разлепить эту пару второй таблицей. В схеме она не числится, нашел свободный код 16 и заменил вручную в таблице имен. Никаких переименований таблиц базы не потребуется:
{00000000-0000-0000-0000-000000000000,"ExtensionsRestructNGS",16},
Кстати, эти особенные таблицы, их не надо обрабатывать "переименованиями", да у них и номера нет, только для порядка в файле имен.
Т.е. такие пары в таблицу не вставлять, исправить файл имен самостоятельно.
Шаг 4. Можете посмотреть новые файлы схемы, а в сообщениях можно увидеть протокол замен. Ну и по команде нужно записать в базу SQL обновленную схему. А потом по команде подготовить SQL-запрос для переименования таблиц.
Шаг 5. Выполнить команды SQL. Подготовленный список операторов переименует таблицы.
На этом работа обработки заканчивается. Исправленную Базу следует проверить в конфигураторе. Администрирование, Тестирование и исправление, пункт Реструктуризация информационной базы. Эта процедура переименует все индексы обработанных таблиц, а так же статистики таблиц.
Поскольку 1с может использовать кэш, а в этом кэше может сохраниться старая схема, то следует либо освободиться от кэша (сервера и клиента), либо (как некоторые освобождаются от кэша) удалить базу без изменения базы SQL, а потом создать новую базу с указанием на прежнюю базу SQL. У меня в конфигураторе конфигурация была закрыта, кэш мне не помешал.
В общем случае, даже ошибка в таблице на шаге 3 не должно приводить к порче схемы (базы), просто если указать не ту таблицу (тип и номер) она будет переименована и в схеме и в базе, что не возбраняется. Просто проблема не устранится.
Предупреждение об ответственности.
Использование обработки только под Вашу ответственность, не забывайте про бэкапы и тестирование результатов. Не исключена ситуация, которая не учитывает данная версия обработки и методики, которую она реализует.
P.S. оказалось не понятно из описания и следует сфокусировать внимание:
1. Запускать обработку нужно в другой базе, не в той, которую исправляете. Обработка работает непосредственно с MS SQL, а не с базой текущего приложения.
2. Если основная конфигурация изменена, то нужно вернуться к конфигурации базы данных.
3. Для результата нужно обрабатывать сразу все пары, нет смысла устраивать цикл запусков обработки.
Благодарности:
Обработка создавалась по мотивам методики следующей публикации:
//infostart.ru/public/1126277/ Именно эту методику обработка автоматизирует. Руками у меня получилось криво. Благодаря чему и создал обработку.
Подсмотрены алгоритмы в приобретенной обработке:
//infostart.ru/public/1018320/
Обработка тестировалась на релизе платформы: 1С:Предприятие 8.3 (8.3.15.1830).
Вступайте в нашу телеграмм-группу Инфостарт
См. также
Поиск данных Инструменты администратора БД Корректировка данных Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Решение для автоматической сверки данных между любыми конфигурациями 1С. Помогает контролировать и проверять обмены, проверять наличие документов при переносах данных, находить изменения в закрытых периодах
9760 руб.
14.11.2025 6173 28 8
Задачи пользователя Инструментарий разработчика Корректировка данных Закрытие периода Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта Стажер 1С 8.3 1С:ERP Управление предприятием 2 1С:Управление нашей фирмой 3.0 Управленческий учет Платные (руб)
Обработка предназначена для поиска, анализа и исправления отрицательных остатков во всех регистрах накопления информационной базы 1С.
6100 руб.
27.02.2026 3205 17 3
Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)
Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).
14640 руб.
29.04.2020 52957 145 164
Зарплата Корректировка данных Бухгалтер 1С 8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Бухгалтерский учет НДФЛ Платные (руб)
Внешняя обработка сравнивает НДФЛ из расчетного листка и НДФЛ из регистра, на разницу формирует операцию учета НДФЛ. Исправляет расхождения, в том числе, когда Аванс больше Зарплаты Рассчитывает НДФЛ и сравнивает с исчисленным в программе. На отклонение формирует документ "Перерасчет НДФЛ"
9760 руб.
01.09.2023 10116 325 93
Корректировка данных Разработчик Пользователь 1С:Предприятие 8 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)
Представьте, что есть система QR - кодирования, которая НЕ ТРЕБУЕТ изменения конфигурации, НЕ ТРЕБУЕТ изменения ни одной печатной формы для добавления QR-кода, включая внешние, НЕ ХРАНИТ данные штрихкодов и их связь, от чего база не "пухнет", ИМЕЕТ возможность закодировать в QR-коде произвольные данные параметров для последующей обработки полученных данных, УМЕЕТ прикреплять сканы, УМЕЕТ обработать считанный QR-код как ВЫ захотите. А также ХРАНИТ историю операций в обход базы для каждого пользователя в отдельности и УМЕЕТ работать с 2D - сканерами. А также автоматически распознавать отсканированные печатные формы (картинки или pdf-файлы) и выполнять заданные произвольные алгоритмы, в том числе прикрепление их к документам! Обновление 3.3 от 24.06.2025!
26840 руб.
26.08.2018 57634 20 65
Файловый обмен (TXT, XML, DBF), FTP Поиск данных Инструменты администратора БД Корректировка данных Системный администратор Разработчик 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)
Данная обработка позволит Вам легко и просто, а главное - быстро, выполнить сравнение данных между ЛЮБЫМИ базами (и РИБ, по правилам конвертаций) по контрольным суммам выбранных объектов баз 1С, работающих на платформах 8.3 и выше. Удобный и понятный интерфейс в виде "мастера". Высокая скорость сравнения достигается за счет специального алгоритма расчета контрольной суммы объекта/записи и сравнения по данным суммам объектов 2х баз через файл. Имеется возможность выбора реквизитов, по которым система будет сравнивать объекты. Сравнение количества записей в движениях документов, возможность сравнивать данные по правилам конвертации и не только! Выбор объектов конфигурации для КАЖДОГО узла в отдельности с индивидуальным отбором для каждого объекта конфигурации, работа с FTP, сохранение или загрузка настроек, сохранение или загрузка результата сравнения, регистрация на обмен объекта и его движений. (Обновление от 12.11.2024, версия 2.2-2.5)
24400 руб.
27.10.2017 47846 33 15
Закрытие периода Корректировка данных Разработчик Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)
Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.
5084 руб.
13.07.2015 55912 191 31
Корректировка данных Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С:Предприятие 8 1С:Управление торговлей 11 1С:Розница 3.0 1C:ERP 1С:ЗУП 1С:УТ Платные (руб)
Инструмент для анализа и устранения битых записей в регистрах 1С:Предприятия. Позволяет поддерживать целостность данных и повышает стабильность работы системы. Обработка предназначена для диагностики и корректировки ошибок в регистрах накопления и сведений. Обеспечивает контроль корректности данных и упрощает администрирование информационной базы. Решение для автоматизированного выявления и исправления записей в регистрах 1С. Снижает вероятность сбоев при расчётах и формировании отчётности.
5490 руб.
05.09.2025 2197 4 0
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.
Имена таблиц с кодом 66: ExtensionsInfoNGS, Reference66
Имена таблиц с кодом 67: ExtensionsRestruct, Reference67
Имена таблиц с кодом 68: ExtensionsRestructNGS, Reference68
Имена таблиц с кодом 84: DataHistoryQueue0, Reference84
Обработкой получилось исправить с первого раза.
Респект автору!
//http://technet.microsoft.com/en-us/library/aa905872(v=sql.80).aspx
cn = Новый COMОбъект("ADODB.Connection");
cn.Provider = "sqloledb";
cn.Properties("Data Source").Value = SQL_ИмяСервера;
cn.Properties("Initial Catalog").Value = DatabaseName;
(1)
Получить из бинарника xml запросом SQL:
DECLARE @serializeddataSEL VARBINARY(max)
SET @serializeddataSEL = (select top (1) serializeddata from DBSchema)
SELECT CAST(@serializeddataSEL AS xml)
В результате выгребается тот самый злосчастный xml...
Руслан, спасибо. Попробовал.
Из таблицы DBSchema данные извлекаются. Из таблиц Files, Params - какие-то извлекаются, какие-то нет. Из таблиц Config и сопутствующих ни одной записи извлечь таким образом не удается.
Конкретно, извлекаются данные, в которых первым байтом является EF, т.е. начинающиеся с 0xEF. По-видимому, они сериализованы без последующей упаковки. Остальные данные подлежат предварительной распаковке перед десериализацией.
Сообщение одинаковое во всех случаях неудачи:
Msg 9420, Level 16, State 1, Line 4
XML parsing: line 1, character 2, illegal xml character
Есть мысли как победить?
Сам же и отвечу. Для 2016-го SQL сервера будет работать вот такая конструкция:
SEL ECT
CAST(DECOMPRESS(0x1F8B0800000000000400 +
(SELECT TOP 1 BinaryData FR OM Config WHERE FileName = '000522e0-7aab-4ad7-af59-ace640f2918a')
) AS XML) AS DecompressedData
Почерпнул отсюда:
Да все верно.
Я пока в поиске чего-то подобного для SQL 2000 :) если будут идеи буду признателен, так как так же столкнулся с тем что часть данных приведенных в моем примере не извлекается, а почему вы уже и сами сказали :)
{ВнешняяОбработка.КопированиеБазыSQL_В_ПустуюКонфигурацию.Форма.Форма.Форма(320)}: Ошибка при установке значения атрибута контекста (Provider): Произошла исключительная ситуация (ADODB.Connection): Предоставленный поставщик отличается от уже используемого.
Как определить используемую? Поискал в реестре - там "SQLOLEDB" . Так то правильно, но ошибка показывает, что не тот. Версия DLL 6.1.7601.17514. На сайте есть версия msoledbsql_18.3.0.0_x64.msi (сервер 64 10.50.4042.0). Пока не ставлю.
Помогите чайнику пожалуйста
Да. В этом проблема. С другого сервера всё ок.
Если можно, то ещё описание работы. Закладка "Таблицы для корректировки номера" .. тут надо добавлять таблицы с ошибками или нет? И "текст команды SQL" для чего?
А все процедуры с SQL обработка выполняет в серверном модуле.
Поэтому не представляю, как эта ошибка связана с обработкой.
Выполнять нужно не в той базе, которая исправляется, а любая другая на управляемых формах.
В таблице следует заполнить два поля. Наименование и номер. Третье поле будет сгенерировано обработкой. Сколько пар с совпадающими номерами, столько строк
**************************
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.
Имена таблиц с кодом ....
**************************
Далее перечисляются пары таблиц, которые имеют одинаковый номер.
Т. Е. Одинаковый ссылочный код.
Только на первой и на третьей закладке требуется заполнение.
И нажимать нужно на все кнопки по порядку шагов в описании.
***Для одного ссылочного кода существует более одной таблицы в базе данных.
Имена таблиц с кодом 1359: Reference1359, ReferenceChngR1359
Имена таблиц с кодом 1406: Const1406, ReferenceChngR1406
***
Ссылочный код - это число в строковом виде? В моём примере это "1359" и "1406"?
На третьей закладке требуется заполнение? Какие действия должны быть? 3 шаг непонятно что делать. Если нужно взять пару и отдать предпочтение перечислениям и константам, то это как в данном примере моей ошибки?
Простое нажатие кнопки "Сформировать новое представление" ничего само не делает. Значит надо что-то вписать руками? Не зря открытая кнопка "добавить" же.
Добавляю и Вписываю в "тип" "Const" и вписываю руками 1406 в поле "Номер реквизита исходный". Так?
Добавляю и вписываю в "тип" "ReferenceChngR" и в поле "Номер реквизита исходный" "1359". Так?
И только после этого нажимаю кнопку "Сформировать новое сопоставление"?
С остальными шагами всё более имения ясно.
Прошу ещё раз меня извинить за такие подробности.
И да, БОЛЬШОЕ спасибо за обработку!!!
А исправит или нет ошибку зависит от того, внесены ли данные для каждого ссылочного кода, который имеет дубли.
Даже внесенные "лишние" не испортят базу, если выполнятся "нелишние" строки SQL-запроса. Т.е. выполнятся все переименования таблиц, которые есть в базе и переименовались в схеме.
Контролировать больше ничего не нужно, если прошла успешно проверка схемы, например при обновлении конфигурации.
В базе было много повторяющихся таблиц. Но падает на одной паре
Node21
InfoRg21
ПланОбмена.ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП30
РегистрСведений.УстаревшиеВидыЗапасовСОстатками
Меняю любую из таблиц и привет.
Все логи могу предоставить. Наверное удобнее на mail?
Из сообщения не ясно в какой момент эта ошибка возникает? Пока не вижу связи между этой ошибкой и действиями обработки.
Как по моему опыту, то причиной этой ошибки является несоответствие данных конфигурации (служебной информации) в базе и в кэше.
Кэш используется как сервером 1с, так и клиентом.
1. рекомендую очистить кэш
2. обращаю внимание, что запускать обработку нужно в другой базе, не в той, которую исправляете.
Жду подробности в личку, если данные рекомендации не помогли.
Сегодня "повезло" исправлять базу с аналогичной ошибкой.
Обработка требует доработки, чтобы учесть переименование табличных частей.
Сейчас ограничение обработки следующее: исправлять можно только объекты, которые не имеют табличной части.
Да, Тестирование и Исправление (в части реструктуризации) обновляет таблицы индексов, статистики. Но это и так сделается при след. значительной доработке конфигурации.
node21 - план обмена с бухкор, база работает, ТиИ падает, потому что есть табличные части, по ним есть проблема и вы ей уже занимаетесь
InfoRg21 - табличных частей нет, но база не работает вообще, сразу падает в ошибку формата потока. еще до окна авторизации, тогда зайти в конфигуратор и сделать ТиИ возможности нет
чем InfoRg21 отличается от других регистров которые нормально переименовались пока не знаю.
пока в блокноте изменил в names и sdbl - работает
возможно в обработке не правильно инициируется какой-то объект или переменная. Скажем, последний идентификатор не обновляется. И если обработкой пользоваться 2 раза подряд, то 2-й запуск процедуры валит базу. при любой таблице
а м.б. у нас в базе еще какая то структурная проблема и обработка ни при чем
1. сохраняем "плохую" конфигурацию в файл.
2. создаем пустую конфигурацию (можно файловую).
3. полученный в п.1 файл конфигурации загружаем в пустую конфигурацию 2.
4. выгружаем конфигурацию 3 в файлы
5. загружаем файлы в конфигурацию 1
тестировалось на УПП 1.3.124.1 платформа 8.3.16.1148
восстановил несколько баз (ошибки плана видов расчетов, ПВХ)
Ваша проблема не в связи. Те у кого проблема в связи (дублируются номера баз для разных метаданных), а 1с этого не допускает ( с определенной версии) скачивают эту обработку.
до недавних пор (не знаю, может и новая платформа не решила эту проблему) 1С просила прислать выгрузку базы, чтобы исправить. Это весьма продолжительно.
Надеюсь, настанет время выпуска платформы, которая штатно решает возникшую проблему.
В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.
Имена таблиц с кодом 2: CKinds2, CKindsDN1051
Имена таблиц с кодом 5: CKinds5, CKindsDN1083
....
....
....
говорит о другой проблеме?
Эта обработка для следующего диагностического сообщения (пример из практики) :
В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.
Имена таблиц с кодом 21: BPr21, InfoRgChngR21
Имена таблиц с кодом 22: BPrPoints22, InfoRgChngR22
Имена таблиц с кодом 23: BPr23, InfoRgChngR23
Имена таблиц с кодом 24: BPrPoints24, InfoRgChngR24
Имена таблиц с кодом 25: BPr25, InfoRgChngR25
Для исправления проблемы вы можете обратиться в службу технической поддержки.
Есть одно замечание - среди прочих задвоений была пара следующих таблиц (справочник и таблица изменений регистра сведений)
"РегистрСведений.РезультатыОбменаДанными.Изменения" - "_InfoRgChngR80"
"Справочник.ВидыОбщественноПолезнойДеятельностиСЗВК" - "_Reference80"
Сначала указал, что исправлять надо номер таблицы "_InfoRgChngR80", т.е. в обработке в колонке "Тип" указал "InfoRgChng". Обработка не выполнила перенумераций. Когда указал таблицу справочника, то все прошло нормально.
Пока только могу предположить ошибку при вводе имени поля.
Если пришлете (в личку) два исходных файла (закладка 2), то будет любопытно проверить работу обработки.
>>Пока только могу предположить ошибку при вводе имени поля.
Возможно. Проверю на выходных, когда буду исправлять рабочую базу. Сейчас исправлял копию рабочей.
P.S.
Пока писал сообщение, кажется понял в чем дело. Ответ в моем же сообщении выше.
>>т.е. в обработке в колонке "Тип" указал "InfoRgChng".
а надо было "InfoRgChngR". Последний символ "R". Проверю на рабочей, сообщу.
И рекомендую перенумеровывать не объекты (документы, справочники, перечисления), а регистры.
Проскакивала не до конца выясненная ситуация, но я не стал лезть глубже, поскольку обошел ее заменой на другой объект пары.
Но для себя предположил, что где-то в данных (значения реквизитов) может стоять ссылка даже более глубокая, чем метаданные.
Кажется это было перечисление и при тестировании базы выскочило сообщение о неизвестном типе ссылки. Не запомнил, как во сне.
Сейчас жалко, что нет возможности изучить тот момент, но тогда рад был, что отмахнулся от него.
После попытки обновления конфигуратор выдал:
В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.
Имена таблиц с кодом 14635: Const14635, DocumentChngR14635
Имена таблиц с кодом 14671: ConstChngR14671, DocumentChngR14671
Имена таблиц с кодом 14775: ConstChngR14775, DocumentChngR14775
Имена таблиц с кодом 14876: ConstChngR14876, DocumentChngR14876
Имена таблиц с кодом 14923: ConstChngR14923, DocumentChngR14923
Имена таблиц с кодом 14949: ConstChngR14949, DocumentChngR14949
Имена таблиц с кодом 14963: ConstChngR14963, DocumentChngR14963
Имена таблиц с кодом 14996: ConstChngR14996, DocumentChngR14996
Имена таблиц с кодом 15049: ConstChngR15049, DocumentChngR15049
Имена таблиц с кодом 15138: ConstChngR15138, DocumentChngR15138
Имена таблиц с кодом 15205: ConstChngR15205, DocumentChngR15205
Имена таблиц с кодом 15233: DocumentChngR15233, InfoRgChngR15233
Имена таблиц с кодом 16172: AccumRgChngR16172, DocumentChngR16172
Имена таблиц с кодом 16663: DocumentChngR16663, ReferenceChngR16663
Имена таблиц с кодом 19243: DocumentChngR19243, InfoRgChngR19243
Имена таблиц с кодом 19307: DocumentChngR19307, InfoRgOpt19307
Имена таблиц с кодом 19327: DocumentChngR19327, InfoRgChngR19327
Имена таблиц с кодом 19336: DocumentChngR19336, InfoRgChngR19336
Имена таблиц с кодом 19436: AccumRgAggDictfh19436, DocumentChngR19436
Имена таблиц с кодом 19558: AccumRgAggDictch19558, DocumentChngR19558
Для исправления проблемы вы можете обратиться в службу технической поддержки.
Обработкой прошелся - итог:
EXEC sp_rename _Const14635 , _Const61651
EXEC sp_rename _ConstChngR14671 , _ConstChngR61652
EXEC sp_rename _ConstChngR14775 , _ConstChngR61653
EXEC sp_rename _ConstChngR14876 , _ConstChngR61654
EXEC sp_rename _ConstChngR14923 , _ConstChngR61655
EXEC sp_rename _ConstChngR14949 , _ConstChngR61656
EXEC sp_rename _ConstChngR14963 , _ConstChngR61657
EXEC sp_rename _ConstChngR14996 , _ConstChngR61658
EXEC sp_rename _ConstChngR15049 , _ConstChngR61659
EXEC sp_rename _ConstChngR15138 , _ConstChngR61660
EXEC sp_rename _ConstChngR15205 , _ConstChngR61661
EXEC sp_rename _DocumentChngR15233 , _DocumentChngR61662
EXEC sp_rename _AccumRgChngR16172 , _AccumRgChngR61663
EXEC sp_rename _DocumentChngR16663 , _DocumentChngR61664
EXEC sp_rename _DocumentChngR19243 , _DocumentChngR61665
EXEC sp_rename _DocumentChngR19307 , _DocumentChngR61666
EXEC sp_rename _DocumentChngR19327 , _DocumentChngR61667
EXEC sp_rename _DocumentChngR19336 , _DocumentChngR61668
EXEC sp_rename _AccumRgAggDictfh19436 , _AccumRgAggDictfh61669
EXEC sp_rename _AccumRgAggDictch19558 , _AccumRgAggDictch61670
После повторной попытки обновления конфигуратор выдал:
по причине:
В схеме базы данных отсутствует таблица "Const65838".
Появление номера, который больше имеющихся после преобразования, свидетельствует, что была проведена реструктуризация.
Единственная перенумерация Const указывает на одну пару.
Предлагаю поменять жертву в этой паре: DocumentChngR14635.
Если после реструктуризации загрузить схемы снова, то увидите новые номера на многих таблицах.
Обработка делает похожую процедуру для указанных таблиц. Но некоторые таблицы с нюансами, как оказывается...
Ваша ситуация с Const14635 похожа на ситуацию, описанную в (35). Было бы интересно попытаться разобраться.
Но для результата попробуйте при заменах поменять Const14635 на DocumentChngR14635
На текущий момент еще раз после вышеописанной проблемы щелкнул по "F7" - прошла еще одна реструктуризация без ошибок... запустил клиента! идет обновление версии!
1. хотя ситуация описана , но тем не менее, невнимательное прочтение (вот только сейчас и увидела что это написано), было непонятно какую таблицу указывать для переименования, выбирали , понятно же не те таблицы, за что были "посланы" 1с-кой. В нашем случае было несколько аналогичных ошибок "Имена таблиц с кодом 18: ExtensionsInfoNGS, Node18"
2.Чтобы попробовать сначала сделали переименование в одной паре, а затем стали делать остальные, естественно (не подумав) , не переформировав список таблиц исходной базы, за что тоже были поруганы и наказаны
3.наверное, это должен быть №1 в списке, для "особо одарённых" вот это " обращаю внимание, что запускать обработку нужно в другой базе, не в той, которую исправляете." не в коментах писать ))
Правда пришлось потратить много времени, чтобы разобраться, но всё работает как надо.
Я делал так:
Сначала в конфигураторе получаем список всех таблиц с одинаковыми кодами, отметив в ТИИ только пункт Реструктуризация таблиц.
Потом с помощью ПолучитьСтруктуруХраненияБазыДанных(,Истина); получить сопоставление таблиц БД и объектов 1С.
Проверить в 1С до замены все объекты, что они открываются и какие в них данные.
Произвести замену обработкой.
Сделать в ТИИ реструктуризацию таблиц.
Проверить в 1С после замены все объекты, что они открываются и какие в них данные.
Если какой-то из объектов не отрывается с ошибкой "В схеме базы данных нет таблицы с именем <Имя>", то выйти из базы и перезапустить службу 1С, после этого проверить заново (см. в статье пункт про кэш).
Благодаря тому, что я определил все объекты 1С, участвующие в замене, я после замены обнаружил, что поломался план обмена, поэтому восстановился из бэкапа, выбрал другую "жертву" замены в обработке и со 2-го раза всё стало гуд.
Когда решил воспользоваться обработкой что бы поправить копию, пришлось запускать из другой базы, без этого почему-то работала некоректно.
В конце текста описания выделенными жирными буквами написано, что запускать нужно из другой базы.
Но почему-то не все обращают внимание на жирный текст ))))
Объяснение запуска из другой базы очень простое. Обработка от начала до конца не работает с базой в которой она запущена, а работает напрямую с таблицами SQL без посредничества 1С. Важно, чтобы во время изменения таблиц базы не было блокировок этих таблиц, и служебных таблиц.
А если запустить прямо эту базу, то 1с по определению будет вмешиваться в запущенную базу, блокировать таблицы.
Я бы добавил еще необходимость запрета запуска фоновых заданий в редактируемой базе.
Решил это дописать, вдруг у кого-то не будет копии, может спасу человека)
Соед.Execute(ТекстКомандыSQL.ПолучитьТекст()); {ВнешняяОбработка.ИсправлениеБазыSQL_ПриНарушенииСквознойНумерации.Форма.Форма.Форма(465)}: ВыполнитьКомандыSQLНаСервере(); по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Query timeout expired
и было не полнятно какую часть она выполнила, а какую нет
В итоге команды SQL запускал уже в самой MS SQL man console, прошло без ошибок
- После формирования с новыми номерами текст базы получается правильный как надо, а вот в тексте схемы почему-то остались старые номера. Исправил ручками.
- Плюс еще с неожиданного конца проблема с SQL-скриптом переименования таблицы: в моем случае старые цифры в схеме были 19 и 20, но физически в базе в именах таблиц DataHistory* цифр вообще не было, поэтому переименовал вручную в консоли mssql.
- Таблица DataHistoryMetadata так и осталась без номера, но на неё конфигуратор 1С и не ругается.
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.
Имена таблиц с кодом 66: ExtensionsInfoNGS, Reference66
Имена таблиц с кодом 67: ExtensionsRestruct, Reference67
Имена таблиц с кодом 68: ExtensionsRestructNGS, Reference68
Имена таблиц с кодом 84: DataHistoryQueue0, Reference84
Обработкой получилось исправить с первого раза.
Респект автору!
{ВнешняяОбработка.ИсправлениеБазыSQL_ПриНарушенииСквознойНумерации.Форма.Форма.Форма(332)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): [DBNETLIB][ConnectionOpen (ParseConnectParams()).]Недопустимое соединение.
Что я мог сделать не так? Как исправить? Помогите пожалуйста!
Не сразу увидел. Эта обработка для MS SQL.
Если база на PostgreSQL, то выгрузите базу, загрузите на в базу на MS SQL.
Потом можно обратно.
MS SQL Express должен подойти. Он полностью совместим, есть только ограничение на объем базы.
Имеется ввиду после шага №2
После выполнения действий в обработке при ТИИ выдает сообщение:
«В схеме базы данных нет таблицы с именем Node41593»
Возможно это у новой платформы теперь есть.
Но это не важно.
В вашем случае в список таблиц для изменения номеров приходилось менять номера для такого типа таблицы ("Node") ?
Если обработка никак не меняла номера таких таблиц, то проблема никак не связана с обработкой.
Реструктуризацию надо делать для индексов. Переиндексация поможет восстановить индексы (номера поменялись).
Остальное по желанию. Реструктуризация в ТиИ не обязательна, но если её провести успешно, то значит все имена таблиц успешно перенумерованы.
Шаг 5. Первый же абзац. При реструктуризации пересоздаются и индексы, потому что исходные таблицы меняют номера в именах.
(76)
Посмотрите текст скрипта SQL, протокол выполнения скрипта.
Что там сказано про эту таблицу?
Скрипт можно запустить непосредственно из MS-SQL Menagement Studio, тогда можно получить полноценный протокол.
Текст скрипта:
EXEC sp_rename _Node41593 , _Node58237
EXEC sp_rename _Node41593_VT41773 , _Node58237_VT41773
EXEC sp_rename '_Node58237_VT41773._Node41593_IDRRef' , '_Node58237_IDRRef' , 'COLUMN'
EXEC sp_rename _Node41593_VT41777 , _Node58237_VT41777
EXEC sp_rename '_Node58237_VT41777._Node41593_IDRRef' , '_Node58237_IDRRef' , 'COLUMN'
EXEC sp_rename _Node41593_VT41780 , _Node58237_VT41780
EXEC sp_rename '_Node58237_VT41780._Node41593_IDRRef' , '_Node58237_IDRRef' , 'COLUMN'
Протокола нет, но есть сообщение об успешном выполнении (прикрепил скрин). В полном запросе фигурируют 3 объекта для переименования, но по двум другим ошибок при ТиИ не было, их не стал указывать.
На этом шаге - две кнопки на каждую из которых указывает стрелочка.
Схема на таблицы хранится в базе, т.е. нужно не только таблицы переименовать (sql-скрипт), но и новую схему загрузить в базу 1с.
Но самих таблиц AccumRgAggDictfh1046701, Const1046701 (на примере первой строки) в схеме нет. Подскажите, куда копать?
В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.
Имена таблиц с кодом 1046701: AccumRgAggDictfh1046701, Const1046701
Имена таблиц с кодом 1047441: AccumRgTn1047441, Reference1047441
Имена таблиц с кодом 1047442: AccumRgAggGridK1047442, Reference1047442
Имена таблиц с кодом 1047443: AccumRgAggOptK1047443, Reference1047443
Имена таблиц с кодом 1047444: AccumRgAggDict1h1047444, Reference1047444
Имена таблиц с кодом 1047445: AccumRgAggDict2h1047445, Reference1047445
Имена таблиц с кодом 1047446: AccumRgAggDict3h1047446, Reference1047446
Имена таблиц с кодом 1047447: AccumRgAggDict4h1047447, Reference1047447
Имена таблиц с кодом 1047448: AccumRgAggDict5h1047448, Reference1047448
Имена таблиц с кодом 1047449: AccumRgAggDict6h1047449, Reference1047449
Имена таблиц с кодом 1047450: AccumRgAggDict7h1047450, Reference1047450
Имена таблиц с кодом 1047451: AccumRgAggDict8h1047451, Reference1047451
Имена таблиц с кодом 1047452: AccumRgAggDict9h1047452, Reference1047452
Имена таблиц с кодом 1047453: AccumRgAggDictah1047453, Reference1047453
Имена таблиц с кодом 1047454: AccumRgAggDictbh1047454, Reference1047454
Имена таблиц с кодом 1047455: AccumRgAggDictch1047455, Reference1047455
Имена таблиц с кодом 1047456: AccumRgDlK1047456, Reference1047456
Имена таблиц с кодом 1047457: AccumRgBfK1047457, Reference1047457
Имена таблиц с кодом 1047458: AccumRgSt1047458, Reference1047458
Имена таблиц с кодом 1047459: AccumRgChngR1047459, Reference1047459
Имена таблиц с кодом 1047460: AccumRg1047460, Reference1047460
Имена таблиц с кодом 1047508: AccumRgT1047508, Enum1047508
Имена таблиц с кодом 1047509: AccumRgChngR1047509, Enum1047509
Имена таблиц с кодом 1047510: AccumRg1047510, Enum1047510
Имена таблиц с кодом 1047542: AccumRgAggOptK1047542, ReferenceChngR1047542
Имена таблиц с кодом 1047568: AccumRgT1047568, ReferenceChngR1047568
Имена таблиц с кодом 1048521: DocumentChngR1048521, ScheduledJobs1048521
Имена таблиц с кодом 1048522: IntegServiceSettings1048522, ScheduledJobs1048522
Имена таблиц с кодом 1048523: IntegServiceMsgBody1048523, ScheduledJobs1048523
Имена таблиц с кодом 1048524: IntegServiceExtMsgBody1048524, ScheduledJobs1048524
Имена таблиц с кодом 1048525: IntegChannelInQueue1048525, ScheduledJobs1048525
Имена таблиц с кодом 1048526: IntegChannelInQueue1048526, ScheduledJobs1048526
Имена таблиц с кодом 1048527: IntegChannelOutQueue1048527, ScheduledJobs1048527
Имена таблиц с кодом 1048528: IntegChannelOutQueue1048528, ScheduledJobs1048528
Имена таблиц с кодом 1048555: ConstChngR1048555, InfoRgOpt1048555
Для исправления проблемы вы можете обратиться в службу технической поддержки.
В схеме нет - это противоречие. Могу предположить, что не та база. Обработка смотрит другую базу, чем та, которая сформировала лог.
Посудите сами - схема - это конкретная таблица. Другой в базе нет.
Возможно, но сомневаюсь, что платформа оставила старую таблицу со схемой, а схема теперь в другой таблице.
Я бы постарался убедиться, что база SQL не перепутана.
И да, запускать обработку нужно с любой другой базы.
Обработка смотрит имеено ту базу. НО проблема в том что при обновлении происходит реструктуризация, она проходит с ошибкой (сообщение 82) и, как я понимаю, эти таблицы не сохраняются. Когда я смотрю проблемную базу обработкой этих таблиц нет.
Конечно, эта обработка подразумевает, что все таблицы, которые обозначены в схеме обязательно есть и в базе.
Обработка лишь меняет схему и переименовывает таблицы согласно новой схемы.
Решение проблемы отсутствия таблиц схемы я видел в этой ветке
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 1183875
Создание 23.01.20 08:30
Обновление 01.04.20 11:40
Просмотры 33747
Загрузки 335
Рейтинг
42
Комментарии 82
Код открыт Да
Рубрики Корректировка данных
Кому
Системный администратор
,
Разработчик
Тип файла Внешняя обработка (ert,epf)
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)