Исправление ошибки "Для одного ссылочного кода существует более одной таблицы в базе данных" в БД SQL

0. 115 23.01.20 08:30 Сейчас в теме
Обработка позволяет исправить схему имен базы данных, схема которой была испорчена и из-за этого возникают ошибки при обновлении конфигурации или при сервисной процедуре тестирования и исправления.
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.
Имена таблиц с кодом ....

Далее перечисляются пары таблиц, которые имеют одинаковый номер.
Обработка таблице находит новый номер, заменяет на него все ссылки в схеме, переименовывает таблицу SQL

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. VKislitsin 23.01.20 13:20 Сейчас в теме
Сергей, подскажите, Deflate-Inflate данных из БД в Вашей обработке (и, полагаю в обработке от spawn_a) выполняется нативными методами работы с двоичными данными Платформы или сторонними компонентами?
2. rokhin 115 23.01.20 13:43 Сейчас в теме
(1) Никаких сторонних компонентов. Только родные действия платформы и работа с MSSQL чарез

//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;
43. ZloyGenii 12.03.20 09:37 Сейчас в теме
(2)


(1)
Сергей, подскажите, Deflate-Inflate данных из БД в Вашей обработке (и, полагаю в обработке от spawn_a) выполняется нативными методами работы с двоичными данными Платформы или сторонними компонентами?


Получить из бинарника xml запросом SQL:

DECLARE @serializeddataSEL VARBINARY(max)
SET @serializeddataSEL = (select top (1) serializeddata from DBSchema)
SELECT CAST(@serializeddataSEL AS xml)

В результате выгребается тот самый злосчастный xml...
44. VKislitsin 12.03.20 11:35 Сейчас в теме
(43)
Получить из бинарника xml запросом SQL

Руслан, спасибо. Попробовал.
Из таблицы DBSchema данные извлекаются. Из таблиц Files, Params - какие-то извлекаются, какие-то нет. Из таблиц Config и сопутствующих ни одной записи извлечь таким образом не удается.

Конкретно, извлекаются данные, в которых первым байтом является EF, т.е. начинающиеся с 0xEF. По-видимому, они сериализованы без последующей упаковки. Остальные данные подлежат предварительной распаковке перед десериализацией.

Сообщение одинаковое во всех случаях неудачи:
Msg 9420, Level 16, State 1, Line 4
XML parsing: line 1, character 2, illegal xml character

Есть мысли как победить?
45. VKislitsin 12.03.20 12:15 Сейчас в теме
(44)
Сам же и отвечу. Для 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

Почерпнул отсюда: http://forum.infostart.ru/forum9/topic171001/message2322841/#message2322841
46. ZloyGenii 12.03.20 13:10 Сейчас в теме
(45)
QL сервера будет работать вот така


Да все верно.

Я пока в поиске чего-то подобного для SQL 2000 :) если будут идеи буду признателен, так как так же столкнулся с тем что часть данных приведенных в моем примере не извлекается, а почему вы уже и сами сказали :)
3. ybatiaev 54 24.01.20 15:43 Сейчас в теме
Пока выдаёт ошибку
{ВнешняяОбработка.КопированиеБазыSQL_В_ПустуюКонфигурацию.Форма.Форма.Форма(320)}: Ошибка при установке значения атрибута контекста (Provider): Произошла исключительная ситуация (ADODB.Connection): Предоставленный поставщик отличается от уже используемого.

Как определить используемую? Поискал в реестре - там "SQLOLEDB" . Так то правильно, но ошибка показывает, что не тот. Версия DLL 6.1.7601.17514. На сайте https://www.microsoft.com/ru-ru/download/confirmation.aspx?id=56730 есть версия msoledbsql_18.3.0.0_x64.msi (сервер 64 10.50.4042.0). Пока не ставлю.

Помогите чайнику пожалуйста
4. ybatiaev 54 24.01.20 16:55 Сейчас в теме
(3) ping сервера показывает локальный IPV6 адреса канала, т.е. не типа 192.168.*.*
Да. В этом проблема. С другого сервера всё ок.
Если можно, то ещё описание работы. Закладка "Таблицы для корректировки номера" .. тут надо добавлять таблицы с ошибками или нет? И "текст команды SQL" для чего?
7. rokhin 115 25.01.20 22:25 Сейчас в теме
(4) по сгенерированному тексту видно, что это список для переименования таблиц. Нажать выполнение.
5. adapter 556 24.01.20 17:27 Сейчас в теме
протестировали, в целом все хорошо. Но есть особенности использования )
Если запускать не на сервере 1С, то валит базу в ошибку формата потока
6. rokhin 115 25.01.20 22:16 Сейчас в теме
Рад, что обработка помогла. Я запускал не на сервере 1с и не на сервере sql.
А все процедуры с SQL обработка выполняет в серверном модуле.
Поэтому не представляю, как эта ошибка связана с обработкой.
Выполнять нужно не в той базе, которая исправляется, а любая другая на управляемых формах.
8. ybatiaev 54 25.01.20 22:29 Сейчас в теме
(6) С ошибкой разобрался. Если можно хоть какое-то описание что и как вводится, лучше с примером. Там с закладками мне не всё понятно. Чуть выше написал это. Спасибо, что ответили.
9. rokhin 115 25.01.20 23:59 Сейчас в теме
(8)вроде ясе шаги описаны достаточно подробно. Переименование таблиц - что еще проще? Исправили схему, заменив на новые имена (новые номера) записали изменение в базу, переименовали таблицы на новые имена.
В таблице следует заполнить два поля. Наименование и номер. Третье поле будет сгенерировано обработкой. Сколько пар с совпадающими номерами, столько строк
10. ybatiaev 54 26.01.20 16:21 Сейчас в теме
(9) я не специалист, прошу меня извинить. "Сформировать новое представление" что должно сделать? У меня там так и осталось пустое поле. Шаг 3 непонятно что делает и что мне надо сделать. Как определить пары? Доступ к таблицам через MS SQL server management studio есть.
13. rokhin 115 26.01.20 16:54 Сейчас в теме
(10)Если вы словили такую ошибку:
**************************
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.

Имена таблиц с кодом ....
**************************
Далее перечисляются пары таблиц, которые имеют одинаковый номер.

Т. Е. Одинаковый ссылочный код.

Только на первой и на третьей закладке требуется заполнение.
И нажимать нужно на все кнопки по порядку шагов в описании.
14. ybatiaev 54 27.01.20 23:43 Сейчас в теме
(13) Уважаемый Сергей, только пример может всё пояснить работу Вашей обработки для меня глупого. К примеру, есть такое сообщение:
***Для одного ссылочного кода существует более одной таблицы в базе данных.

Имена таблиц с кодом 1359: Reference1359, ReferenceChngR1359
Имена таблиц с кодом 1406: Const1406, ReferenceChngR1406
***
Ссылочный код - это число в строковом виде? В моём примере это "1359" и "1406"?
На третьей закладке требуется заполнение? Какие действия должны быть? 3 шаг непонятно что делать. Если нужно взять пару и отдать предпочтение перечислениям и константам, то это как в данном примере моей ошибки?
Простое нажатие кнопки "Сформировать новое представление" ничего само не делает. Значит надо что-то вписать руками? Не зря открытая кнопка "добавить" же.
Добавляю и Вписываю в "тип" "Const" и вписываю руками 1406 в поле "Номер реквизита исходный". Так?
Добавляю и вписываю в "тип" "ReferenceChngR" и в поле "Номер реквизита исходный" "1359". Так?
И только после этого нажимаю кнопку "Сформировать новое сопоставление"?

С остальными шагами всё более имения ясно.
Прошу ещё раз меня извинить за такие подробности.
Прикрепленные файлы:
15. rokhin 115 28.01.20 00:02 Сейчас в теме
(14)
Картинка на третьем рисунке для третьей закладки правильная. Далее нажать кнопку.
Напоминаю, на тестовой копии сперва пробуйте. Кстати, почему не попробовали? Уже бы получили правильный ответ.
16. ybatiaev 54 28.01.20 01:23 Сейчас в теме
(15) Попробовал, но лучше уточнить. Так то всё исправилось. Архивы до того сделаны конечно и тестирование/исправление прошло без проблем, обновление тоже без проблем. Завтра бухи проверят оборотку. Что ещё можно проконтролировать?
И да, БОЛЬШОЕ спасибо за обработку!!!
17. rokhin 115 28.01.20 10:39 Сейчас в теме
(16) Алгоритм этой обработки, выполненный последовательно (все кнопки нажаты по порядку), не может испортить базу.
А исправит или нет ошибку зависит от того, внесены ли данные для каждого ссылочного кода, который имеет дубли.
Даже внесенные "лишние" не испортят базу, если выполнятся "нелишние" строки SQL-запроса. Т.е. выполнятся все переименования таблиц, которые есть в базе и переименовались в схеме.
Контролировать больше ничего не нужно, если прошла успешно проверка схемы, например при обновлении конфигурации.
11. rokhin 115 26.01.20 16:46 Сейчас в теме
Пары нужно выписать из сообщения об ошибке
В таблицу добавить из сообщения об ошибке любое из наименований таблиц и номер. Третье поле заполнять не нужно.
12. rokhin 115 26.01.20 16:49 Сейчас в теме
Для одного ссылочного кода... Правильнее не номер, а ссылочный код.
18. adapter 556 28.01.20 15:53 Сейчас в теме
ошибка формата потока.
В базе было много повторяющихся таблиц. Но падает на одной паре

Node21
InfoRg21

ПланОбмена.ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП30
РегистрСведений.УстаревшиеВидыЗапасовСОстатками

Меняю любую из таблиц и привет.
Все логи могу предоставить. Наверное удобнее на mail?
19. rokhin 115 28.01.20 20:05 Сейчас в теме
(18)
ошибка формата потока.

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

1. рекомендую очистить кэш
2. обращаю внимание, что запускать обработку нужно в другой базе, не в той, которую исправляете.

Жду подробности в личку, если данные рекомендации не помогли.
20. rokhin 115 29.01.20 01:40 Сейчас в теме
(18)
ошибка формата потока.

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

Сейчас ограничение обработки следующее: исправлять можно только объекты, которые не имеют табличной части.
Дмитрий74Чел; +1 Ответить
24. ybatiaev 54 31.01.20 12:32 Сейчас в теме
(20) Ну так ждём... тем, кто купил первую версию вторая же будет дешевле? ))))
25. rokhin 115 01.02.20 00:01 Сейчас в теме
(24) я не знаю, как это обеспечивает инфостарт, поэтому готов в ручном режиме выслать по почте тем, кто сообщит адрес в личном сообщении.
ybatiaev; +1 Ответить
21. rokhin 115 29.01.20 01:47 Сейчас в теме
(18)
InfoRg21

у этого объекта не может быть табличной части. Пожалуйста попробуйте его.
И после этого обязательно сделать "Исправление и Тестирование" - Реструктуризация
22. adapter 556 29.01.20 13:00 Сейчас в теме
да, я делал по каждой из таблиц.
Да, Тестирование и Исправление (в части реструктуризации) обновляет таблицы индексов, статистики. Но это и так сделается при след. значительной доработке конфигурации.

node21 - план обмена с бухкор, база работает, ТиИ падает, потому что есть табличные части, по ним есть проблема и вы ей уже занимаетесь

InfoRg21 - табличных частей нет, но база не работает вообще, сразу падает в ошибку формата потока. еще до окна авторизации, тогда зайти в конфигуратор и сделать ТиИ возможности нет

чем InfoRg21 отличается от других регистров которые нормально переименовались пока не знаю.

пока в блокноте изменил в names и sdbl - работает

возможно в обработке не правильно инициируется какой-то объект или переменная. Скажем, последний идентификатор не обновляется. И если обработкой пользоваться 2 раза подряд, то 2-й запуск процедуры валит базу. при любой таблице

а м.б. у нас в базе еще какая то структурная проблема и обработка ни при чем
23. rokhin 115 30.01.20 14:05 Сейчас в теме
(22) adapter, спасибо за найденную ошибку.
в версии 1.03 проблема "ошибка формата потока" решена.
В некоторых случаях обработка портила ID, когда заменяла код
{3b9d376f-cd28-4f84-b8a8-686da09f0e46,"BPrPoints",28},
26. t278 44 11.02.20 09:10 Сейчас в теме
не понятно как 3 вкладка заполняется !!!
У меня она не заполнилась. !!
Обработка не отработала как нужно
27. rokhin 115 11.02.20 12:38 Сейчас в теме
(26) Информация на 3-ей закладке заполняется вручную. Читайте описание третьего шага. Еще рекомендую посмотреть картинку для третьей закладки
28. sguskov 16.02.20 19:38 Сейчас в теме
Исправил ошибку следующим образом:
1. сохраняем "плохую" конфигурацию в файл.
2. создаем пустую конфигурацию (можно файловую).
3. полученный в п.1 файл конфигурации загружаем в пустую конфигурацию 2.
4. выгружаем конфигурацию 3 в файлы
5. загружаем файлы в конфигурацию 1

тестировалось на УПП 1.3.124.1 платформа 8.3.16.1148
восстановил несколько баз (ошибки плана видов расчетов, ПВХ)
29. rokhin 115 16.02.20 22:53 Сейчас в теме
(28) проблему, которая решает обработка не в конфигурации, а в связи метаданных конфигурации с таблицами базы данных.
Ваша проблема не в связи. Те у кого проблема в связи (дублируются номера баз для разных метаданных), а 1с этого не допускает ( с определенной версии) скачивают эту обработку.
до недавних пор (не знаю, может и новая платформа не решила эту проблему) 1С просила прислать выгрузку базы, чтобы исправить. Это весьма продолжительно.
Надеюсь, настанет время выпуска платформы, которая штатно решает возникшую проблему.
Дмитрий74Чел; +1 Ответить
30. sguskov 17.02.20 04:19 Сейчас в теме
т.е. в сообщение:

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

Имена таблиц с кодом 2: CKinds2, CKindsDN1051
Имена таблиц с кодом 5: CKinds5, CKindsDN1083
....
....
....

говорит о другой проблеме?
31. rokhin 115 17.02.20 13:15 Сейчас в теме
Полагаю, что в Вашем случае совсем другая проблема.
Эта обработка для следующего диагностического сообщения (пример из практики) :

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

Имена таблиц с кодом 21: BPr21, InfoRgChngR21
Имена таблиц с кодом 22: BPrPoints22, InfoRgChngR22
Имена таблиц с кодом 23: BPr23, InfoRgChngR23
Имена таблиц с кодом 24: BPrPoints24, InfoRgChngR24
Имена таблиц с кодом 25: BPr25, InfoRgChngR25
Для исправления проблемы вы можете обратиться в службу технической поддержки.
32. Nikeuk 21.02.20 20:54 Сейчас в теме
Большое спасибо!!!! всё исправил, все счастливы !!!!
33. user653415_asamsonov 28.02.20 14:17 Сейчас в теме
Обработка отработала в целом нормально, спасибо!

Есть одно замечание - среди прочих задвоений была пара следующих таблиц (справочник и таблица изменений регистра сведений)
"РегистрСведений.РезультатыОбменаДанными.Изменения" - "_InfoRgChngR80"
"Справочник.ВидыОбщественноПолезнойДеятельностиСЗВК" - "_Reference80"

Сначала указал, что исправлять надо номер таблицы "_InfoRgChngR80", т.е. в обработке в колонке "Тип" указал "InfoRgChng". Обработка не выполнила перенумераций. Когда указал таблицу справочника, то все прошло нормально.
34. rokhin 115 28.02.20 15:00 Сейчас в теме
(33) Не представляю, как обработка может по разному отработать эти два варианта. Поиск происходит простым поиском строки.
Пока только могу предположить ошибку при вводе имени поля.
Если пришлете (в личку) два исходных файла (закладка 2), то будет любопытно проверить работу обработки.
35. user653415_asamsonov 28.02.20 15:30 Сейчас в теме
(34)
>>Пока только могу предположить ошибку при вводе имени поля.
Возможно. Проверю на выходных, когда буду исправлять рабочую базу. Сейчас исправлял копию рабочей.

P.S.
Пока писал сообщение, кажется понял в чем дело. Ответ в моем же сообщении выше.
>>т.е. в обработке в колонке "Тип" указал "InfoRgChng".
а надо было "InfoRgChngR". Последний символ "R". Проверю на рабочей, сообщу.
36. rokhin 115 28.02.20 17:23 Сейчас в теме
(35) Именно. Я сам попадал в такую ситуацию.
И рекомендую перенумеровывать не объекты (документы, справочники, перечисления), а регистры.
Проскакивала не до конца выясненная ситуация, но я не стал лезть глубже, поскольку обошел ее заменой на другой объект пары.
Но для себя предположил, что где-то в данных (значения реквизитов) может стоять ссылка даже более глубокая, чем метаданные.
Кажется это было перечисление и при тестировании базы выскочило сообщение о неизвестном типе ссылки. Не запомнил, как во сне.
Сейчас жалко, что нет возможности изучить тот момент, но тогда рад был, что отмахнулся от него.
37. SxF 03.03.20 17:45 Сейчас в теме
Как дальше?

После попытки обновления конфигуратор выдал:

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

Имена таблиц с кодом 14576: DocumentChngR14576, DocumentJournal14576
Имена таблиц с кодом 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 _DocumentChngR14576 , _DocumentChngR61650
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".
38. rokhin 115 03.03.20 22:26 Сейчас в теме
(37)
Появление номера, который больше имеющихся после преобразования, свидетельствует, что была проведена реструктуризация.
Единственная перенумерация Const указывает на одну пару.
Предлагаю поменять жертву в этой паре: DocumentChngR14635.
Имена таблиц с кодом 14635: Const14635, DocumentChngR14635
39. SxF 04.03.20 08:40 Сейчас в теме
(38) Так, тут же говорится об отсутствии таблицы - пары нет...
40. rokhin 115 04.03.20 08:56 Сейчас в теме
(39) При реструктуризации отдельные таблицы копируются, получают новый номер, новый номер заменяет старый.
Если после реструктуризации загрузить схемы снова, то увидите новые номера на многих таблицах.

Обработка делает похожую процедуру для указанных таблиц. Но некоторые таблицы с нюансами, как оказывается...
Ваша ситуация с Const14635 похожа на ситуацию, описанную в (35). Было бы интересно попытаться разобраться.
Но для результата попробуйте при заменах поменять Const14635 на DocumentChngR14635
41. SxF 04.03.20 10:36 Сейчас в теме
(38) ??? Не понял - на каком основании таблицу констант нужно менять на что-то связанное с документами(.

На текущий момент еще раз после вышеописанной проблемы щелкнул по "F7" - прошла еще одна реструктуризация без ошибок... запустил клиента! идет обновление версии!
47. Alani 31.03.20 07:02 Сейчас в теме
Вот и мы словили подобную ошибку после обновления платформы... Благодарю! Обработка помогла, хотя тоже не сразу "въехали" как правильно делать, пришлось пару раз восстановление из копии делать, но конечный результат радует....
48. rokhin 115 31.03.20 10:25 Сейчас в теме
(47) Спасибо за отзыв. Составить понятное описание процесса очень трудно для создателя процесса, поскольку он излагает материал с других позиций, нежели тот, кто читает. Это извечная проблема. Поэтому было бы полезно узнать, что именно было трудно понять в описании?
49. Alani 01.04.20 07:44 Сейчас в теме
(48) Сейчас когда уже "в теме" уже вроде и все понятно; напишу что вызвало трудности:
1. хотя ситуация описана , но тем не менее, невнимательное прочтение (вот только сейчас и увидела что это написано), было непонятно какую таблицу указывать для переименования, выбирали , понятно же не те таблицы, за что были "посланы" 1с-кой. В нашем случае было несколько аналогичных ошибок "Имена таблиц с кодом 18: ExtensionsInfoNGS, Node18"
2.Чтобы попробовать сначала сделали переименование в одной паре, а затем стали делать остальные, естественно (не подумав) , не переформировав список таблиц исходной базы, за что тоже были поруганы и наказаны
3.наверное, это должен быть №1 в списке, для "особо одарённых" вот это " обращаю внимание, что запускать обработку нужно в другой базе, не в той, которую исправляете." не в коментах писать ))
50. jk3 66 14.04.20 09:57 Сейчас в теме
Огромный плюс за обработку.
Правда пришлось потратить много времени, чтобы разобраться, но всё работает как надо.

Я делал так:
Сначала в конфигураторе получаем список всех таблиц с одинаковыми кодами, отметив в ТИИ только пункт Реструктуризация таблиц.
Потом с помощью ПолучитьСтруктуруХраненияБазыДанных(,Истина); получить сопоставление таблиц БД и объектов 1С.
Проверить в 1С до замены все объекты, что они открываются и какие в них данные.
Произвести замену обработкой.
Сделать в ТИИ реструктуризацию таблиц.
Проверить в 1С после замены все объекты, что они открываются и какие в них данные.
Если какой-то из объектов не отрывается с ошибкой "В схеме базы данных нет таблицы с именем <Имя>", то выйти из базы и перезапустить службу 1С, после этого проверить заново (см. в статье пункт про кэш).

Благодаря тому, что я определил все объекты 1С, участвующие в замене, я после замены обнаружил, что поломался план обмена, поэтому восстановился из бэкапа, выбрал другую "жертву" замены в обработке и со 2-го раза всё стало гуд.
Snork; rokhin; +2 Ответить
51. elephant_x 49 05.07.20 04:19 Сейчас в теме
Спасибо за обработку, очень помогла.

Когда решил воспользоваться обработкой что бы поправить копию, пришлось запускать из другой базы, без этого почему-то работала некоректно.
52. rokhin 115 05.07.20 12:49 Сейчас в теме
(51) Очень рад, что проблему с Вашей базой решили.
В конце текста описания выделенными жирными буквами написано, что запускать нужно из другой базы.
Но почему-то не все обращают внимание на жирный текст ))))
Объяснение запуска из другой базы очень простое. Обработка от начала до конца не работает с базой в которой она запущена, а работает напрямую с таблицами SQL без посредничества 1С. Важно, чтобы во время изменения таблиц базы не было блокировок этих таблиц, и служебных таблиц.
А если запустить прямо эту базу, то 1с по определению будет вмешиваться в запущенную базу, блокировать таблицы.
Я бы добавил еще необходимость запрета запуска фоновых заданий в редактируемой базе.
elephant_x; +1 Ответить
53. elephant_x 49 06.07.20 04:14 Сейчас в теме
(52) немного я не точно выразился, лечим базу ut11, запускаем из базы bp3, после этого хотим полечить базу ut11_copy и сделать из базы bp3 это не удалось, обработка не отрабатывала, такое ощущение что какие-то значения сохранились в память. Запустив из базы unf все заработало.

Решил это дописать, вдруг у кого-то не будет копии, может спасу человека)
54. rokhin 115 06.07.20 09:05 Сейчас в теме
(53) Не вижу причин, которые бы не позволяли делать то, что Вам не удалось с первого раза.
55. Snork 312 10.10.20 09:27 Сейчас в теме
На очень больших базах ~400Гб, при нажатии на кнопку "Выполнить команды SQL" получил ошибку:
Соед.Execute(ТекстКомандыSQL.ПолучитьТекст()); {ВнешняяОбработка.ИсправлениеБазыSQL_ПриНарушенииСквознойНумерации.Форма.Форма.Форма(465)}: ВыполнитьКомандыSQLНаСервере(); по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Query timeout expired
и было не полнятно какую часть она выполнила, а какую нет
В итоге команды SQL запускал уже в самой MS SQL man console, прошло без ошибок
56. rokhin 115 10.10.20 12:56 Сейчас в теме
(55) На больших базах конечно не проверял. Спасибо за Ваш опыт. Вероятно есть параметры у 1с, которые регулируют время ожидания отклика на результаты команды. Скорее всего он выполнился. Но конечно из консоли выполнять это правильнее. Рад, что пригодился вывод SQL-команды для пользователя. Раньше думал, что это нужно только для прозрачности производимых действий. Но вот и для консоли пригодилось.
57. PbI4 2 13.10.20 00:44 Сейчас в теме
8.3.18.1128 - проблема не исправлена, так что это не баг - это фича(
Оставьте свое сообщение
Вопросы с вознаграждением