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

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

Администрирование - Администрирование данных 1С - Тестирование и исправление

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

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

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

Гугл ничего не дал кроме стандартных "почистить кэш, перерегистрировать базу в кластере, выполнить ТИИ". Ну и еще "добавить реквизит к объекту и обновить БД" (этот пункт не пробовал, напишите в комментариях - вдруг это самый простой метод в комментариях к этой статье есть сообщение что метод сработал на 8.3.16.1030, пробуйте). Upd: на данный момент это самый простой и эффективный способ, рекомендую. Но он не работает например для перечислений т.к. у них нет реквизитов.
Другой вариант из комментариев - создать копию базы через РИБ. В копии проблема ушла: "Создал узел для базы (РИБ), потом отвязал эту базу от основной".
Дальше читаем если простой способ не помог.

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

Воспроизводится так (проверено на релизе 8.3.13.1644 / SQL 2016):
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 в файл и обратно.

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

  1. рекомендуется использовать Notepad++ или аналог. В отдельном файле открыть текст ошибки из конфигуратора.
  2. запустить обработку, получить DBSchema (схема - список объектов - распознать схему) и DBNames (вверху "загрузить из БД в файл"), выгрузить обе структуры в файлы, указав вверху пути и нажав на кнопки "выгрузить схему из списка в файл" и "загрузить из БД в файл". Открыть файлы в Notepad++, выставить синтаксис "С/С#" (или иной - для удобства сворачивания групп). Должно получиться примерно следующее (слева DBNames, справа - DBSchema):
  3. из текста ошибки для каждой пары объектов выбрать "жертву"; проще менять номер у констант или регистров, т.к. на них обычно нет ссылок в реквизитах других объектов. Желательно выбирать в таком качестве "таблицы изменений" вида _ConstChngR2346 или _DocumentChngR3078 не имеющие табличных частей (у нет таблиц вида Document750.VT20237 или _Reference49197_VT3332).
  4. в DBNames находим строку жертвы по номеру объекта, переносим строку в конец файла, меняем номер объекта (+1 к предыдущему)
  5. в файле с текстом ошибки к номеру "жертвы" добавляем "-НовыйНомер"
  6. в DBSchema находим объект, меняем номер объекта (в третьем параметре); ищем все вхождения имени объекта (например Reference3048) - ссылки на этот объект в реквизитах других объектов - выполняем замену например Reference3048 на Reference49189.
  7. в DBNames первый параметр меняем на новый максимальный номер объекта
  8. сохраняем файлы, считываем их обработкой (вся схема - текст - прочитать схему из файла, Имена - Прочитать DBNames из файла), выгружаем из обработки в БД
  9. пишем 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. после выполнения указанных действий также рекомендую удалить-добавить базу в кластере.
    Хотя от представителя 1с на партнерском форуме есть альтернатива - рекомендация перезапускать сервер - в комментариях (7) к данной статье коллега отписался о неэффективности этого метода.

upd 24.01.2020: рекомендую ознакомиться с обработкой из комментария 39.

 

Понравилась статья? Поставь плюс. Рекомендую другие статьи:

Хотите снизить нагрузку на процессор сервера в 2 раза?

Очистка диска от кэша неиспользуемых баз 1С

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. vladpisklov 23.09.19 19:47 Сейчас в теме
Мне помогло просто выгрузить базу в *.dt из sql, загрузить в Postgres, выгрузить обратно в *.dt и опять загрузить
Vyacheslide; +1 Ответить
5. TMV 14 24.09.19 18:11 Сейчас в теме
(1) кажется и через файловую сработает. Но всё упирается в размер.
2. vladpisklov 23.09.19 19:48 Сейчас в теме
Мне помогло просто выгрузить базу в *.dt из sql, загрузить в Postgres, выгрузить обратно в *.dt и опять загрузить в SQL. Проблемма исчезла
4. Дмитрий74Чел 198 24.09.19 18:11 Сейчас в теме
53. user970589 4 20.02.20 15:08 Сейчас в теме
(2)
помогло просто выгрузить базу в *.dt из sql, загрузить в Postgres, выгрузить обратно в *.dt и опять загрузить в SQL. Проблемма
а если постгри нет? )
3. Alfie83 24.09.19 18:02 Сейчас в теме
Мне помог * платформы на предыдущий релиз, где эта ошибка не возникала. Сделал копии поломанных объектов заново в конфигураторе, стараясь избегать объектов ссылочных типов (мне повезло в паре к справочникам поломаны были несколько регистров сведений и накопления). Скопировал информацию оттуда опять же средствами 1с. Старые объекты удалил. И запустил на свежей платформе с перезапуском сервера 1с. Выгрузка или ТиИ занимает много времени поэтому пришлось так.
6. user1284675 30.09.19 14:51 Сейчас в теме
Что было предпринято и не помогло, на что не стоит тратить время:

- Тестирование и исправление на уровне конфигуратора - результат: долго проверяет и в итоге вываливает ту же самую ошибку без исправления;

- Выгрузка базы в Dt –файл и загрузка его в чистую базу – ошибка не исчезает;

- Выгрузка базы в Dt –файл и загрузка в файловый вариант – ошибка не исчезает;

- Установка Postgre и загрузка данных туда из Dt –файла, снова выгрузка в Dt –файл и загрузка в базу на SQL север;

- Тестирование встроенным проверщиком утилитой chdbfl - тоже ничего не нашло и ошибку не исправило.

При всех этих вариантах структура базы переносилась с ошибкой и ничего не менялось.

Что помогло

купили обработку:
Однако, в ней нет инструкции, что и как, по чату с разработчиком удалось восстановить целостность базы данных. Обработка помогла, база восстановлена. Рекомендую провести восстановление на копии базы, А затем, когда уже будут готовые текстовые файлы с исправленным содержимым для DBNames и СхемаБазы - просто обновить эти таблицы из этих файлов и после сделать запрос: sp_rename _ReferenceХХXX, _ReferenceYYYY - где ХХХХ номер с задвоением таблиц, YYYY - следующий свободный порядковый номер в таблице имен.
Если ошибок несколько, то по каждой надо отдельно вносить корректировки.
Вносить корректировки лучше через автопоиск и автозамену, т.к. малейшие неточности приведут к тому, что при открытии базы получите надпись "Ошибка открытия потока" и восстановить базу можно будет только с бэкапа SQL

За тем, как именно это делается обращайтесь к разработчику или пишите в личку, вышлю свою инструкцию что и как делал.
user784245; ybatiaev; +2 Ответить
25. Mekadote 2 20.12.19 15:20 Сейчас в теме
(6)
Зафиксировано исключение из подпункта 1.
ТиИ помогло, НО оно должно быть провоедено в файловом формате и на новой платформе (в моем случае на 8.3.15.1778)
потом нужно на файловой же завершить обновление и только потом через dt в клиент-серверный вариант
ЗЫ был переход УПП 1.3.128.2 -> 1.3.129.1 была только 1 конфликтующая пара (документ (осн. табл) и регистр сведений (также осн. табл)) база 0,9 Gb в файловом формате
7. k9260130000 25 21.10.19 01:18 Сейчас в теме
Благодарю помогло. Но таки поправь в статье - "P.s. после выполнения указанных действий также рекомендую удалить-добавить базу в кластере, или перезапустить службу. " Заменить на п.10 Обязательно удалить/добавить ИБ в кластере .Если просто рестартовать сервер ошибки будут - проверил ((
8. user949348 19.11.19 12:16 Сейчас в теме
Ну и еще "добавить реквизит к объекту и обновить БД" (этот пункт не пробовал, напишите в комментариях - вдруг это самый простой метод) - похоже что да, помогло на версии 8.3.16.1030
freeek; avant2004; alena_igorevna; Дмитрий74Чел; +4 Ответить
9. alena_igorevna 32 21.11.19 14:30 Сейчас в теме
(8)"добавить реквизит к объекту и обновить БД" если несколько объектов то нужно к каждому добавить. Помогло на платформе 1С:Предприятие 8.3 (8.3.15.1747)
10. user687083_vinsla 24.11.19 09:50 Сейчас в теме
(8) у меня было 40! задублированных ссылочных кодов таблиц. Мне помогла выгрузка данных для перехода в сервис из битой базы и загрузка их в чистую базу. Платформа 8.3.16.1030
Ujine1313; avant2004; +2 Ответить
12. Дмитрий74Чел 198 25.11.19 10:50 Сейчас в теме
14. user687083_vinsla 25.11.19 11:39 Сейчас в теме
(12) В режиме предприятия: Администрирование - Сервис - Выгрузить данные для перехода в сервис. Если команда не видна - в верхнем углу шестеренка - Настройка действий. Там же и команда загрузки данных из сервиса. (11) База небольшая. Для больших баз конечно, наверное, проще возиться с добавлением атрибутов или действовать по плану (6), тут каждый выбирает что ему подходит
Mastekor; +1 Ответить
46. Mastekor 03.02.20 16:21 Сейчас в теме
54. user970589 4 20.02.20 15:21 Сейчас в теме
(14)
Выгрузить данные для перехода в сервис

полагаю, что вариант Управление производственным предприятием, редакция 1.3 (1.3.120.1) тут не пройдет ( ибо не 8.3
62. Ujine1313 8 12.03.20 16:34 Сейчас в теме
(10)Спасибо за совет. не стал заморачиваться с иправлением ошибки - выгрузил то же все в сервис и потом загрузил в чистую базу - помогло.
11. user949348 25.11.19 08:16 Сейчас в теме
размер базы какой у вас?
13. Дмитрий74Чел 198 25.11.19 11:30 Сейчас в теме
15. user949348 25.11.19 14:08 Сейчас в теме
ну тогда можно и dt выгружать пробовать, у нас так не получится, поэтому сразу решили реквизитами пробовать исправлять
16. user646807_kazako.a911 5 25.11.19 17:39 Сейчас в теме
На мой взгляд не совсем корректное решение. Правильное: https://infostart.ru/public/1147114/
17. Риник 8 27.11.19 17:41 Сейчас в теме
(16) ахаха ты просто скопировал коммент автора со своего поста и заменил ссылку? Обиделся шоль?)
Дмитрий74Чел; +1 Ответить
18. Дмитрий74Чел 198 28.11.19 17:27 Сейчас в теме
(17) Очевидно да, он обиделся.
19. Дмитрий74Чел 198 28.11.19 17:31 Сейчас в теме
(16) Ответ на твой вопрос "Чем же решение Дмитрий74Чел корректней (правильней) чем решение user646807_kazako.a911? "

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

В решении Дмитрий74Чел приведены несколько вариантов, как сложных (с заменой номеров объектов), так и простых и 100% безопасных (временное добавление объекту реквизита).
20. ZloyGenii 02.12.19 15:35 Сейчас в теме
Может кто из гуру подскажет как быть в такой ситуации ?
Если в посте выше ошибка конкретно указывает на действительно существующие объекты где номер одинаковый, то у нас например вообще не понятно что именно не нравится конфигуратору и платформе...

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

Имена таблиц с кодом 18: DataHistoryVersions, Reference18
Имена таблиц с кодом 19: DataHistoryLatestVersions, Reference19
Имена таблиц с кодом 20: DataHistoryMetadata, Reference20
Имена таблиц с кодом 21: DataHistorySettings, Reference21
Для исправления проблемы вы можете обратиться в службу технической поддержки."

Я не наблюдаю в первых ссылках на всякие инструменты хранения истории хоть какой то нумерации, к тому же инструментарий хранения историй полностью выключен... 1С пока что работает под пользователем.

Добавление реквизитов к выше упомянутым справочникам вообще в принципе ничего не дает... Натолкните куда копать и как решать ? Платформа по сути ругается на все то что связано с инструментом истории данных...

направьте куда копать....
21. ZloyGenii 03.12.19 17:00 Сейчас в теме
(20)

В моем случае помогло ПОМИМО добавки временных реквизитов к данным объектам еще смена режима совместимости в конфигураторе на "Версия 8.3.10"

Может кому то поможет... После данных манипуляций конфигурация обновилась без ошибок.
23. Дмитрий74Чел 198 09.12.19 11:46 Сейчас в теме
(21) полагаю, ключевое изменение здесь именно понижение версии совместимости. Т.е. по-сути вы просто отключили механизм проверки встроенный в 8.3.15
56. Oleg_Anat 10.03.20 10:55 Сейчас в теме
(21)
Руслан, у меня похожая ситуация, попытался проделать так же как и вы, но не получилось.

Конфигурация "Рарус:Альфа-авто v.5", использовалась на платформе 8.3.13. В свойствах у нее установлен родной (от разработчиков) режим совместимости 8.3.6. Так и работала без проблем.
Но разработчики выпустили новый релиз, с минимально допустимой версией платформы 8.3.16.1148, и мы установили эту платформу. После этого сама база открылась нормально, пользователи работают. Но попытке внести любые изменения в конфигурации получили ошибку:

Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.
Имена таблиц с кодом 18: DataHistoryMetadata, Reference18

Определил, что Reference18 - это справочник Валюты. Добавил в него реквизит, и изменил режим совместимости на 8.3.10 - при обновлении ошибка осталась. Поперебирал другие режимы совместимости - все аналогично, ошибка остается.

Напишите пожалуйста, какие другие критерии были в вашей ситуации: тип SQL сервера, какой режим совместимости конфигурации был изначально до изменения на 8.3.10, на какой версии платформы выполняли все действия?
57. ZloyGenii 10.03.20 14:21 Сейчас в теме
(56)

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

Характерно вот что, ничего не предпринималось более, разработка идет своим ходом, эти объекты ТОЧНО никто не дорабатывал, но с недавнего времени при ПОЛНОЙ реструктуризации из ТИИ стал ругаться уже на 3 несоответствия, "Имена таблиц с кодом 18: DataHistoryVersions, Reference18 " эта ошибка полностью исчезла... При чем если снимать режим совместимости этой ошибки так же нет, остались три следующих....

Пока сидим на режиме совместимости 8.3.10 благо это позволяет вести доработку. Полная реструктуризация из ТИИ дает эту ошибку все равно даже в режиме совместимости но разработке не мешает. Выгрузка в ДТ загрузка обратно проходит штатно, но ошибку не снимает.
58. Oleg_Anat 11.03.20 05:59 Сейчас в теме
(57)

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

Другие способы - выгрузка в DT и загрузка, через файловую базу и Postgres, реструктуризация через ТиИ, и так далее - нужного результата так же не дали.

Попробую значит воспользоваться решением, которое предлагает автор этой темы.
59. ZloyGenii 11.03.20 16:03 Сейчас в теме
(58)
ться решением, которое предлагает автор этой темы.

Не пробовали в вашем режиме совместимости (8.3.6) выгрузить в DT. Найти/Поставить сервер 1С версии 8.3.6.* и с предприятия той же версии загрузить в чистую базу выгруженный ранее DT. Сделать реструктуризацию через ТИИ. Вернуть обратно последнюю версию сервера и платформы 1С. Перерегистрировать базу на сервере 1С. Зайти в базу и снять режим совместимости ?

Некоторым это помогло, именно в такой последовательности, когда реструктуризированная база на старой платформе подходящей для текущего режима совместимости как будто открывается на только что обновленном сервере 1С с последующим снятием режима совместимости, нам увы нет.
60. Oleg_Anat 12.03.20 10:58 Сейчас в теме
(59)

Спасибо за подсказку ее одного варианта действий. Проделал все в указанной последовательности - но увы не помогло.

Вопрос еще ко всем . У меня на данный момент нет стартмани. Может ли кто то продать их или может возможны какие то другие варианты. Если есть возможность - напишите в личку.
61. ZloyGenii 12.03.20 15:57 Сейчас в теме
(60)

На выходных будут опробованы два варианта дополнительно (параллельно буду пробовать оба):

1. Выгрузка в DT (благо это отрабатывает без проблем). Загрузка в postgresql. Реструктуризация там. Если пройдет без ошибок снятие режима совместимости конфигурации. Последующая реструктуризация через ТИИ. Если пройдет без проблем выгрузка в DT и загрузка на SQL в совершенно чистую базу.

2. Если проблема с записями в DBNames и DBSchema то родилась идея за неимением возможности приобрести здешние обработки по (простите мне мой французский) конским ценам...
Собственно идея, создание копии базы на SQL (именно средствами SQL). Регистрация копии на сервере (с отключением регламентных заданий). Вход в конфигуратор копии базы. Сохранение конфигурации в CF. Удаление проблемных объектов из конфигурации с удалением ссылок на эти объекты в других объектах. Сохранение получившейся конфигурации. (на всякий случай перерегистрация базы на сервере 1С). Далее через сравнить объединить накатить сохраненную ранее CF чтобы получить ту же самую базу но с новыми объектами так сказать. Реструктуризация через ТИИ. Если проходит без ошибок то уже дальше средствами SQL копировании из починившейся базы таблиц DBNames и params, а так же config (что-то мне подсказывает что данный способ имеет место жить если все сделать правильно). Надо не забыть что в копии после всех манипуляций необходимо будет зайти и через получение структуры хранения узнать новые имена наших объектов, чтобы потом их переименовать в старой базе. (если что копия у нас будет так как мы ее делали чтобы развернуть рядом вторую базу).
63. ZloyGenii 16.03.20 09:26 Сейчас в теме
(61)

1) postgresql - результат полностью нулевой. собственно потеря времени и только.

2) не хватило места развернуться :) пока откладывается... База несколько сотен гигов а место на серваке не резиновое :( не удалось одновременно несколько испытаний провести.
64. ZloyGenii 19.03.20 08:47 Сейчас в теме
(60)

Второй вариант полностью жизнеспособен. Собственно нужно только время.
Делается копия базы (я делал две). На одной из копий, условно назовем ее 2 следующие действия.
(обязательно сделать выгрузку CF в файл к которой мы должны вернуться)
1. Удаление объектов на которые ругается 1С. У меня это справочники и один из них договоры контрагентов (гемор тот еще). Везде где есть реквизит договор контрагента переделывал на строку 10. И так удалил все справочники. Обновление прошло без проблем.
2. Не знаю есть ли смысл или нет но на всякий случай я это сделал. Удаление с сервера 1С базы (скульную не трогаем). Остановка сервера 1С. Очистка всех кешей и данных, а так же папки которая относится к этой базе в каталоге регистрации сервера 1С. Запуск сервера 1С. Регистрация базы.
3. Реструктуризация через ТИИ.
4. повторил п.2
5. Сравнение объединение с ранее выгруженным CF. Обновляемся. Все хорошо.
6. ТИИ - реструктуризация. Ошибок нет.
7. Заходим в 1С базы 2, смотрим какие имена получили объекты, у меня например вместо ранее "Reference21" объект стал именоваться "Reference21NG" так же запоминаем какие имена получились у других справочников.
8. Копирование на SQL из базы 2 в базу 1 следующих таблиц: [Config] [Configsave] [Params] [DBSchema]
9. Переименование на SQL таблиц в новые имена.
10. Повторил п.2
11. Захожу в базу 1. Делаю ТИИ-Реструктуризация. Профит.
12. На всякий случай выгрузка в DT, загрузка в новую чистую базу на SQL. ТИИ - Реструктуризация. Профит.
13. Снял режим совместимости. Все ок.

Долго нуторно. нужны ресурсы сервера. но способ действенный.

PS Первый раз пробовал но не в точности сделал все как описал выше. В результате при объединении с CF объекты получили то же самое наименование что и было ранее в результате ошибка оставалась :) ЧТо именно из пунктов выше помогло сказать точно не могу, но результат меня порадовал :)


(60)
Nikola_P_L; +1 Ответить
65. ZloyGenii 19.03.20 08:52 Сейчас в теме
(64)
т стал именоваться "Reference21NG" так же запоминаем какие имена получились у других справочников.
8. Копирование на SQL из базы 2 в б


Скрин новых имен баз. Странно то что объекты не продолжили нумерацию, а получили буквенные окончания.

http://joxi.ru/gmvzkMHvBoM3ma
67. Дмитрий74Чел 198 19.03.20 10:25 Сейчас в теме
(65) NG - new generation. Где-то читал в комментах что это механизм реструктуризации новый: сперва создается новая таблица "OldNameNG", потом в неё копируются данные из старой таблицы "OldName", старая удаляется, новая переименовывается в старую. Так что на мой взгляд у вас не совсем корректно получилось.
70. ZloyGenii 19.03.20 16:38 Сейчас в теме
(67)

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

В выходные буду на боевой проводить подобный эксперимент.
66. Дмитрий74Чел 198 19.03.20 10:23 Сейчас в теме
(64) добавьте реквизиты к объектам, или лучше накатите новый релиз - проверьте точно ли все в порядке.
68. ZloyGenii 19.03.20 13:25 Сейчас в теме
(66)
или лучше накатите


Проверил вроде все ок.
Добавление реквизитов ВООБЩЕ никак не сказывалось, что только не делал. И к ним реквизиты добавлял разные. и строки и булево, и ссылки на другие справочники/документы/перечисления, объект имел прежнее наименование хоть ты тресни.... И создавал новые справочники и в них пихал реквизиты на проблемные справочники, и перекрестное создание реквизитов делали. Тупость в том что обновление проходило без проблем. А вот ТИИ - Реструктуризация падала с ошибкой.

Смена платформы так же не давала никаких результатов (пробовали поочередно откатываться до 8.3.10.*, сейчас 8.3.16.*), жили долгое время в режиме совместимости конфигурации 8.3.10

В любом случае это не рабочая база. может что-то выстрелит. Это я делал на копиях :) ибо в боевой в течении недели такие действия провести в принципе невозможно.
69. ZloyGenii 19.03.20 13:31 Сейчас в теме
(68)
сти в принципе невозможно.

(66)

Мне больше не понятна следующая картина и ответа дать никто не смог.
Дело в том что пока база находилась в режиме совместимости 8.3.10 я облазил на SQL базу вдоль и попере, таблиц начинающихся на DataHistory* вообще не было !!! Почему при ТИИ платформа ругалась на эти таблицы. Сейчас эти тпблицы появились после снятия совместимости. и теперь их хоть видно :) но почему в режиме совместимости при ТИИ платформа ругалась на эти таблицы - мне не понятно до сих пор.
71. ZloyGenii 24.03.20 13:25 Сейчас в теме
(64)

Полностью жизнеспособный вариант, вылечено несколько огромных баз. Но для моего конкретного случая, когда ни ТИИ, ни выгрузки в DT, ни загрузки в другие варианты баз, ни добавления реквизитов не давали ровно никакого результата. А купить обработки здесь возможности тупо нет. И да у меня полностью не типовая конфигурация на базе УТ 10.2 которая переписана вдоль и поперек, поэтому накатить обновление как я видел где то советы так же отметалось.

Перезапускать ничего не надо, ни сервер 1С, ни SQL. Чистить кэши и прочее тоже ни к чему.

1. Делаете копию средствами SQL (это прям всегда пред телодвижениями). Сохраняем из под конфигуратора CF - это то к чему нам надо будет вернуться. (нужная так сказать структура).
2. Поднимаете копию базы средствами SQL. Эта база - мученик, она в дальнейшем ни для чего не пригодится от слова совсем. Так как будет изувечена.
3. В каждом конкретном случае индивидуальный подход но суть думаю будет ясна. В моем случае мне мешали справочники, один из которых "Договоры контрагентов" которым база пропитана вдоль и поперек сверху до низу. И так в копии создаются новые справочники вида "Справочник_ДоговорыКонтрагентов", "Справочник_ДругойПоломанныйСправочник" ну или например "Документ_ПоломанныйДокумент" собственно суть понятна, после нижнего прочерка точное наименование поломанного объекта (тупо для того чтобы эти объекты получили новый номер). Обновление и принятие новых данных.
4. Так как база несколько сотен гигов, а ждать напрасно времени нет, были написаны скрипты которые зачистили самые большие таблицы в копии базы (мученике), чтобы не тратить напрасно время на реструктуризацию. Собственно немного покопавшись в инете можно самому написать обработку которая сгенерит SQL скрипт который зачистит объекты больше какого то объема... В результате база мученик стала весить около 10 гигов что меня вполне устраивало. Можно было совсем в ноль ужать но некоторые данные были нужны при старте 1С чтобы не переписывать код при начале работы системы (мне нужны были полностью идентичные данные таблицы config).
5. Удаление в базе поломанных объектов, все что ссылалось на них в реквизитах (и прочее) было заменено на строку-10 (по умолчанию). Можно руками, можно через выгрузку конфигурации в файлы и обработкой опять же пробежаться по файлам (но не везде это проходит как и в моем случае, пришлось руками). Обновление конфигуратора.
6. Переименование объектов которые были созданы для поломанных, то есть "Справочник_ДоговорыКонтрагентов" в "ДоговорыКонтрагентов" и так далее для всех поломанных объектов. Обновление конфигурации.
7. ТИИ - реструктуризация. почти мухой.
8. Сравнение объединение конфигурации с ранее выгруженным CF, принимаем изменения. В результате у вас будет не создание справочников (так как поломанные объекты мы удаляли) а обновление имеющихся (так как мы создавали для них новые справочники которые получили новую нумерацию). Обновляем конфигурацию.
9. ТИИ - реструктуризация, почти мухой.
10. Запускаем 1С и смотрим какие имена получили новые объекты. ВНИМАНИЕ! Помимо того что будут переименовываться сами таблицы, относящиеся к объектам, так же надо будет переименовать реквизиты внутри них если они имели нумерацию как у меня. ВНИМАНИЕ! Помимо того что вы переименуете таблицу которая относится к этому справочнику так же надо будет переименовать Таблицу (если она будет) которая относится к предопределенным данным (как в моем случае). На самом деле, опять же можно написать обработку которая сгенерит вам скрипт переименования объектов (ну или ручками). Обработка до нельзя простая, по COM подключаемся к живой базе получаем структуру хранения нужных объектов, потом в мученике так же получаем структуру хранения нужных объектов, дальше дело техники...
11. После переименования нужных объектов в ПРАВИЛЬНОЙ базе, необходимо из базы МУЧЕНИКА скопировать таблицы [Config] [Configsave] [Params] [DBSchema] в нужную базу.

Если все было сделано правильно заходим в 1С нужной базы проверяем работоспособность объектов которые считались поломанными. Радуемся. Далее так как у меня был режим совместимости 8.3.10 я снял режим совместимости. ТИИ - Реструктуризация (все ок нареканий нет платформа не жалуется), далее на всякий случай проверка логики. Все чисто. Боевые базы работают второй день. полет более чем нормальный... Никто не жалуется.

Если кто-то скажет что это неправильно и так делать нельзя, скажите чем мой способ, хоть он и более долгий, отличается от способа вмешательства напрямую в DBSchema и прочите таблицы и там переименования/перенумерации объектов (но за деньги) ? Моим способом реанимировано несколько огромных баз и все они работают без проблем на текущий момент.

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

Спасибо за внимание.
22. Archidiavol 09.12.19 09:06 Сейчас в теме
Наша ошибка выглядела так:

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

Имена таблиц с кодом 18: Const18, Reference18
Имена таблиц с кодом 20: Const20, Reference20
Имена таблиц с кодом 22: AccumRg22, Reference22
Имена таблиц с кодом 27: AccumRgT27, Reference27
Имена таблиц с кодом 28: AccumRgOpt28, Reference28
Имена таблиц с кодом 29: ExtensionsInfoNGS, Reference29
Имена таблиц с кодом 30: ExtensionsRestruct, Reference30
Имена таблиц с кодом 31: ExtensionsRestructNGS, Reference31
Имена таблиц с кодом 34: DataHistoryQueue0, Reference34

Что было попробовано из бесплатных вариантов:
1) Тестирование и исправление c флажком Реструктуризация.
2) Выгрузка и загрузка в dt-файл.
3) Выгрузка в dt-файл, установка Postgre, загрузка dt-файла в Postgree, выгрузка его из Postgree и загрузка на SQL
4) Выгрузка конфигурации в XML-файлы и ручное изменение uuid у проблемных объектов.

Ничего из этого не помогло. Пришлось покупать вышеуказанную обработку.

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

В каждой проблемной паре выбираем один из объектов, с которым будем работать. В данном случае “жертвами” стали следующие объекты:
1) Const18, Reference18. “Жертва” - Const18 - Константа.КассаПеремещение
2) Const20, Reference20. “Жертва” - Const20 - Константа.КассаЗарплата
3) AccumRg22, Reference22. “Жертва” - AccumRg22 - РегистрНакопления.ПеремещениеДС (Основная)
4) AccumRgT27, Reference27. “Жертва” - AccumRgT27 - РегистрНакопления.ПеремещениеДС (Итоги)
5) AccumRgOpt28, Reference28. “Жертва” - AccumRgOpt28 - РегистрНакопления.ПеремещениеДС (НастройкиХраненияИтоговРегистраНакопления)
6) ExtensionsInfoNGS, Reference29. “Жертва” - Reference29 - Справочник.ЕдиницыИзмерения
7) ExtensionsRestruct, Reference30. “Жертва” - Reference30 - Справочник.ЗначенияСвойствОбъектов
8) ExtensionsRestructNGS, Reference31. “Жертва” - Reference31 - Справочник.Календари
9) DataHistoryQueue0, Reference34. “Жертва” - Reference34 - Справочник.КлассификаторЕдиницИзмерения

Запускаем обработку.
Указываем параметры подключения к SQL (заполняем все поля, кроме поля “Имя копии базы”).
В поля “Файл схемы” и “Файл имен” вводим пути для будущих файлов. Например, “C:\TEMP\bdschema.bin” и “C:\TEMP\DBNames.txt” соответственно. Эти файлы будут созданы позже самой обработкой.

Для начала распознаем схему базы данных. Вся схема -> Список объектов -> Распознать схему базы. Распознанную схему выгружаем в файл через кнопку “Выгрузить схему из списка в файл”. Таблицу имен выгружаем через кнопку “Загрузить из БД в файл” (эта кнопка находится вверху обработки напротив пути, где мы указывали путь к файлу имен).
Полученные файлы “bdschema.bin” и “DBNames.txt” открываем в Notepad++.

Берем первую проблемную пару. Жертву из первой пары (Const18) ищем в файле “DBNames.txt”. Найденная строка выглядит так: {eee363bd-e278-428e-a7c3-fb6f80415746,"Const",18}. Вырезаем эту строку и вставляем ее в конец файла. При этом меняем “18” на новый номер, который на +1 больше, чем номер в предпоследней строке. В моем случае строка стала выглядеть так: {eee363bd-e278-428e-a7c3-fb6f80415746,"Const",11768}.
В самом начале файла “DBNames.txt” в первой строке указан максимальный номер (раньше там был 11767), но максимальный номер у нас уже 11768, поэтому первую строку тоже изменяем. Теперь она выглядит так: {11768,
С файлом “DBNames.txt” закончили, сохраняем его.

Переходим к файлу схемы “bdschema.bin”. В нем нужно найти все упоминания нашей жертвы. Я пользовался командой Поиск -> Найти все в текущем документе. Ищем “Const18”. Результат поиска 1 строка, которая выглядит так: {"Const18","N",18,"",
В этой строке меняем “18” на “11768”. Получаем такую строку: {"Const11768","N",11768,"",
Если результат поиска – несколько строк, то меняем “18” на “11768” в каждой из них. Сохраняем файл.

Идем в обработку. Теперь нам нужно загрузить наши новые файлы обратно. Для файла схемы заходим в Вся схема -> Текст -> Прочитать схему из файла. Для файла имен: Имена -> Прочитать DBNames из файла.
После этого вверху обработки жмем поочередно 2 кнопки “Выгрузить в БД”.

Закрываем 1С, идем в “SQL Server Management Studio”, там находим нашу базу и создаем к ней запрос для переименования таблиц: EXEC sp_rename _Const18, _Const11768. Выполняем запрос.

Следующим шагом обязательно нужно удалить базу из Кластера 1С и загрузить ее туда обратно. Для этого заходим в “Администрирование серверов 1С”, находим нашу базу в кластере и удаляем ее с флажком “Оставить без изменений”. База удалена и можно заново добавить ее в кластер с прежними настройками.

После этого можно запускать 1С. Ошибка с нашей первой парой (Const18, Reference18) пропала.

Все то же самое нужно проделать с каждой проблемной парой. При этом можно сразу выполнить все замены в файлах для всех строк ошибок за 1 раз, а потом поочередно переименовать все таблицы.
В итоге конец файла “DBNames.txt” у меня выглядел следующим образом:
{eee363bd-e278-428e-a7c3-fb6f80415746,"Const",11768},
{bc56b272-4023-48e5-a4ac-755b878d2f1d,"Const",11769},
{7e27c633-69b2-4ac0-b7d5-0257b989a4c5,"AccumRg",11770},
{7e27c633-69b2-4ac0-b7d5-0257b989a4c5,"AccumRgT",11771},
{7e27c633-69b2-4ac0-b7d5-0257b989a4c5,"AccumRgOpt",11772},
{d37c9a18-64d9-4df1-ab12-f564f16eb59c,"Reference",11773},
{02eb864a-c046-4e26-ab09-d57934e0aba2,"Reference",11774},
{1c09bf33-9b54-4bfd-bc92-e7324025fab0,"Reference",11775},
{efad9316-ebd0-45d1-81d0-4717759dea54,"Reference",11776}

А запросы в SQL выглядели так:
EXEC sp_rename _Const18, _Const11768
EXEC sp_rename _Const20, _Const11769
EXEC sp_rename _AccumRg22, _AccumRg11770
EXEC sp_rename _AccumRgT27, _AccumRgT11771
EXEC sp_rename _AccumRgOpt28, _AccumRgOpt11772
EXEC sp_rename _Reference29, _Reference11773
EXEC sp_rename _Reference30, _Reference11774
EXEC sp_rename _Reference31, _Reference11775
EXEC sp_rename _Reference34, _Reference11776

Любое отклонение от указанного алгоритма у меня приводило к фатальной ошибке потока при открытии базы 1С, так что пробуем на копии, а потом уже на живой базе.
Дмитрий74Чел; rokhin; rps_ooo; +3 Ответить
24. Дмитрий74Чел 198 09.12.19 11:49 Сейчас в теме
(22) на данный момент по-моему самый просто вариант "добавить реквизит к объекту и обновить БД". В вашем случае - добавить к каждому проблемному объекту.
Если остался интерес и "битая" база - попробуйте.
26. rokhin 106 24.12.19 16:22 Сейчас в теме
(24) Пожалуйста объясните подробно, какие действия следует произвести для того, чтобы "добавить реквизит к объекту и обновить БД" ?
Пробовал к перечислению добавить еще одно значение, ничего не изменилось.
28. Дмитрий74Чел 198 25.12.19 13:26 Сейчас в теме
(26) реквизит к объекту, а не значение к существующему реквизиту. Например реквизит "НовыйРеквизит" типа "Справочник.Номенклатура" к справочнику "Организации".
Да, у вас проблемный объект - перечисление, а не справочник. Но попробуйте к справочнику добавить.
30. rokhin 106 25.12.19 15:44 Сейчас в теме
(28) Предполагаю, что суть добавления реквизита - вызвать при применении измененной конфигурации реструктуризацию этой таблицы.
При реструктуризации конфигуратор создает новую таблицу (с новым номером), копирует все записи в соответствии с полями, а старую таблицу удаляет, схему корректирует в соответствии с новым номером.
Таким образом дублирование исчезает.
Поэтому от добавления значения для перечисления добавится лишь запись в таблице, а создание новой таблицы не произойдет.
Olenik; user728723; +2 Ответить
31. Дмитрий74Чел 198 26.12.19 09:08 Сейчас в теме
(30) Да, Вы правы. Я пожалуй чушь написал.
27. rokhin 106 25.12.19 02:03 Сейчас в теме
Логика исправления вполне понятна. Приступаю.
Исправил схему, Исправил таблицу имен, переименовал таблицы.
Пересоздал базу. (удалил в 1с, создал на освободившейся базе SQL)

Проверяю исправления в базе, таблица есть и в схеме и в таблице имен

"Вся схема - Текст - Загрузить из SQL":

{"ByOrder",1,
{2,"EnumOrder","ID"},0,0,0}
},1,"R",
{0},
{0},"",0,0},
{"Enum36589","N",36589,"",
{2,
{"ID",0,
{1,
{"R",0,0,"Enum36589",2}
},"",0},
{"EnumOrder",0,
{1,

Кнопка "Загрузить из БД в файл".
Смотрю файл:

{9d17dfca-337e-44a6-b1f2-b7bf9ca1f9ee,"Enum",36587},
{050975fa-772c-4ce0-98d4-04289d6622b0,"Enum",36588},
{ced20a30-7d1b-431b-8276-e247307df415,"Enum",36589}

Т.е. Схема и Таблица имен в базу загрузилась.
Переименовал таблицы базы. Проверил, новые таблицы есть.

При ТиИ реструктуризация, выскочила:

В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка SDBL:
Тип поля CAST(Document251.VT34516.Fld34520 AS REF(Enum377)) AS Fld34520 несовместим с типом поля Fld34520

Снял с поддержки, поменял тип этого поля. Хотя не понятно, что там не так.

При сохранении конфигурации в базу:

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

Это следующий свободный номер в Таблице имен. Кто решил его занять?
В схеме и в таблице имен этого номера нет.

Тупик.
29. Дмитрий74Чел 198 25.12.19 13:28 Сейчас в теме
(27) см. (28). Если не поможет, и точно не накосячили в (27) то:
- обновиться на платформе ниже 8.3.15 (точно прокатит)
- или пробовать самую свежую платформу (не факт)
35. rokhin 106 21.01.20 10:59 Сейчас в теме
(27)
Т.е. Схема и Таблица имен в базу загрузилась.
Переименовал таблицы базы. Проверил, новые таблицы есть.

При ТиИ реструктуризация, выскочила:

В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка SDBL:
Тип поля CAST(Document251.VT34516.Fld34520 AS REF(Enum377)) AS Fld34520 несовместим с типом поля Fld34520


Спустя месяц вернулся к проблеме.
Понял. В моем случае еще и сбилась схема соответствия полей.

А релиз платформы 8.3.16.1148 проблему не решил (ТИИ)
36. Дмитрий74Чел 198 21.01.20 17:16 Сейчас в теме
(35) Стоп. У Вас там же Document.vt - это табличная часть, а в ней колонка Fld34520. Которая ссылается на что-то. Например, на справочник или перечисление.
Возможно, вы переименовали основную таблицу объекта в sql, но не учли ссылки на этот объект в других местах (например, в ТЧ у какого-то документа).
Именно поэтому рекомендую выбрать "жертву" ту, у кого нет табличных частей (и на кого нет нескольких ссылок в DBSchema).

Дайте текст ошибки вида:

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

Имена таблиц с кодом 1: xxx, yyy
37. rokhin 106 21.01.20 21:34 Сейчас в теме
Есть предположение из-за чего такая ошибка выскочила:
Ошибка SDBL:
Тип поля CAST(Document251.VT34516.Fld34520 AS REF(Enum377)) AS Fld34520 несовместим с типом поля Fld34520

(36)
Дмитрий, конечно это табличная часть, конечно она принадлежит документу.
Я понял, что табличные, да и все реквизиты, тоже имеют нумерацию, а у них имеется такое же сопоставление.
Оно также записано в схеме, и если сопоставление испорчено, то при проверке может не совпасть тип.
Хорошо, что то что в них записано при Реструктуризации не проверяется, проверяется только тип.
В этом и ошибка.
Теперь я это понял, и эту проблему уже исправлю. НО
Тогда я ручками это все проделывал (переименования и прочее) повторять ручками уже не хочу. Сейчас пишу обработку для этих целей.
Еще одна база проявила себя, буду автоматизировать исправление.
40. rokhin 106 23.01.20 09:53 Сейчас в теме
(27)
Enum377

Как раз, это поле пропустил, не поменял. Когда ручками трудно все уследить.
32. han_kdz 11 12.01.20 16:29 Сейчас в теме
Лично у меня было вот такое сообщение:
В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.

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


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

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

Релиз 1С:Предприятие 8.3 (8.3.15.1489) Конфигурация УТП (Украина)
Olga_Pro; wowik; Bernstein_13; ketr; 1cprogr_nsk; +5 Ответить
33. 1cprogr_nsk 85 12.01.20 17:56 Сейчас в теме
(32) У меня УПП ред. 1.3.116.1, после перехода на платформу 8.3.16.1063 Выдало тоже две строки с CKinds (2 и 5) , добавил реквизиты в каждом из 6 и помогло
freeek; Olga_Pro; ketr; dachnik; +4 Ответить
75. freeek 22.07.20 11:26 Сейчас в теме
(33) ошибка была один в один, УПП, таблицы CKinds2 и CKinds5.
Обработкой https://infostart.ru/public/19671/ нашел, что за объекты и добавил по одному реквизиту. Помогло.
34. dnikolaev 17.01.20 22:25 Сейчас в теме
Спасибо всем. поделюсь как я решил.
Ошибка SDBL:
Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных.

Имена таблиц с кодом 333: CKinds333, CKindsDN863
Имена таблиц с кодом 641: CKinds641, CKindsDN671



вот таким кодом я получил соответствие таблиц SQL и метаданных

СтруктураХраненияБазыДанных = ПолучитьСтруктуруХраненияБазыДанных();

сч=1;
Для Каждого ЭлементСтруктуры Из СтруктураХраненияБазыДанных Цикл

новстр = объект.ТабличнаяЧасть1.Добавить();
новстр.реквизит1 = ЭлементСтруктуры.ИмяТаблицыХранения;
новстр.реквизит2 = ЭлементСтруктуры.Метаданные;

КонецЦикла;

КонецПроцедуры



узнал что в моем случае это были
Планывидовхаракетристик.Начисления
Планывидовхаракетристик.Удержания

добавил по реквизиту.. и обновление прошло успешно.

2) также помогло.

параллельно с этим выгружался в файловую базу.. произвел ТИИ- реструктуризацию.. в моем случае тоже помогло 8.3.16

еще раз всем спасибо.
freeek; goracio_99; +2 Ответить
72. goracio_99 09.06.20 13:07 Сейчас в теме
(34) Спасибо! Помогло, сэкономил кучу времени.
76. freeek 22.07.20 11:28 Сейчас в теме
(34) тоже помогло, использовал обработку https://infostart.ru/public/19671/ чтобы увидеть объекты по именам таблиц.
38. dubovenko_m 26 22.01.20 10:35 Сейчас в теме
ВАЖНО!!! вчера написала разработчику. получила ответ:
1С Линия консультации Вчера, 13:28
Кому: вам
Здравствуйте!
Присылайте базу в ремонт. Самостоятельно не лечится.
Вам предоставлен ресурс для передачи службе технической поддержки дополнительных файлов ,
в рамках вашего обращения (#HL-106678) , просьба загружать данные только относящиеся к этому обращению.
42. Дмитрий74Чел 198 24.01.20 09:10 Сейчас в теме
(38) Конечно "не лечится". Ведь конфигуратор не может исправить ситуацию (которую вообще-то сам и породил), а по внесению изменений на уровне sql - оф.позиция 1С "в sql лезть нельзя".
43. Дмитрий74Чел 198 24.01.20 09:19 Сейчас в теме
(38) А вообще интересно, что они вам дальше ответят и как "быстро" вернут базу. Или будет исправленный cf (вряд-ли)?
39. rokhin 106 23.01.20 09:35 Сейчас в теме
Вручную эту методику реализовать не удалось, трудно сделать все аккуратно, повторять было лень, пришлось писать обработку.
https://infostart.ru/public/1183875/
Никаких замечаний по несоответствию поля уже не было. Видимо ручками что-то испортил.
А с обработкой прошло все гладко. Даже не сбрасывал кэш, не производил "тестирование и исправление" базы.
r.zdorkin; Дмитрий74Чел; +2 Ответить
41. Дмитрий74Чел 198 24.01.20 09:09 Сейчас в теме
44. dubovenko_m 26 24.01.20 09:33 Сейчас в теме
Вернули базу через день. хотя обещали сутки. и на вторые мы уже ругательные письма писали. без комментов о причинах ошибки.
45. Veika 25 03.02.20 11:16 Сейчас в теме
А нельзя просто исправить базу через тестирование и исправление информационной базы с установленным флажком "Реструктуризация таблиц информационной базы"?
47. Дмитрий74Чел 198 03.02.20 18:11 Сейчас в теме
48. Veika 25 03.02.20 18:59 Сейчас в теме
И как теперь обновляться? Даже как-то страшно...
49. Дмитрий74Чел 198 04.02.20 08:32 Сейчас в теме
(48) Выпить валерианки. Нажать "обновить". При неполадках скачать (39).
50. Veika 25 04.02.20 10:14 Сейчас в теме
Нет, ну я же серьезно, это что может быть у всех...
51. Дмитрий74Чел 198 04.02.20 10:19 Сейчас в теме
(50) И я серьезно. У всех, кто менял конфигурацию.
52. pavel_pss 268 12.02.20 17:10 Сейчас в теме
на 1С:Предприятие 8.3 (8.3.16.1063) до сих пор вылезает
55. iones 176 03.03.20 11:37 Сейчас в теме
Помогло добавление нового реквизита. Выгрузка в DT и загрузка в новую не помогла.
73. itikhomirov 10.06.20 09:12 Сейчас в теме
В случае плана видов расчета помогло добавление кода предопределенным элементам. Думаю поможет и просто добавление предопределенного элемента.
Прикрепленные файлы:
74. GlebBR 11 25.06.20 13:40 Сейчас в теме
Помогло ТиИ. Платформа 1С:Предприятие 8.3 (8.3.16.1224)
77. user949348 19.08.20 10:57 Сейчас в теме
Еще один вариант "танцев с бубном".
Если есть где развернуть 1с сервер с предыдущей платформой, переключаем на него базу, опять же добавляем реквизиты в проблемные объекты и обновляемся, потом на новой платформе проблем нет, это если по какой то причине не поможет добавление реквизитов на новой платформе.
78. PbI4 2 13.10.20 00:44 Сейчас в теме
8.3.18.1128 - проблема не исправлена, так что это не баг - это фича(
Дмитрий74Чел; +1 Ответить
79. Nikola_P_L 23.10.20 14:35 Сейчас в теме
Может кому поможет
Платформа 8.3.16.1063
Ошибка SDBL: Ошибка обновления конфигурации базы данных. Для одного ссылочного кода существует более одной таблицы в базе данных. Имена таблиц с кодом 18: ExtensionsInfoNGS, Reference18 Имена таблиц с кодом 19: ExtensionsRestruct, Reference19 Имена таблиц с кодом 20: ExtensionsRestructNGS, Reference20 Имена таблиц с кодом 24: DataHistoryMetadata, Reference24
Это таблицы справочников банк, банковские счета, виды контактной информации и адресные сокращения
При реструктуризации те же ошибки
Пробовал добавлять реквизиты, загружать в чистую базу, в файловом и клиент серверном режиме ничего не помогало
Решение с удалением таблиц и загрузкой из CF помогло, но не удалось вернуть данные

Помогло следующее:
Создал узел для базы (РИБ), потом отвязал эту базу от основной и реструктуризация прошла успешно. Можно работать в этой базе только нужно заново активировать пользователей
Дмитрий74Чел; +1 Ответить
80. dikar40 9 02.11.20 16:40 Сейчас в теме
(8) Помогло добавление реквизита к "проблемным" объектам.
Оставьте свое сообщение

См. также

Восстановление работоспособности файловой базы. 3. Конфигурация Промо

Тестирование и исправление Практика программирования v8 1cv8.cf Бесплатно (free)

Восстановление работоспособности разрушенной файловой базы. Этап 3. Лечим конфигурацию.

21.04.2013    50444    andrewks    20    

Как восстановить конфигурацию, если разрушены данные

Тестирование и исправление v8 Бесплатно (free)

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

23.10.2020    1392    aramius    4    

Ошибка формата потока данных, частный случай

Тестирование и исправление v8 Бесплатно (free)

Вариант решения ошибки формата потока данных при попытке открытия конфигурации в конфигураторе.

11.07.2020    2673    Zhilyakovdr    6    

Исправление ошибки SDBL: Тип поля * несовместим с типом поля *

Тестирование и исправление v8 1cv8.cf Бесплатно (free)

После обновления конфигурации при записи одного документа стала появляться ошибка "Ошибки SDBL: Тип поля * несовместим с типом поля". В статье привожу пример исправления ошибки.

17.06.2020    2993    Farsis    0    

Восстановление SQL базы 1С 8.2. рухнувшей во время сохранения конфигурации. Промо

Тестирование и исправление Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

При обновлении конфигурации вылетела 1С. После чего наотрез отказалась входить в базу. При этом в конфигураторе выдавалось сообщение "Внимание!!! При обновлении данных, после последней реструктуризации, произошла критическая ошибка. Повторить обновление?" Потом выходило сообщение "Обнаружена незавершённая операция сохранения конфигурации. Для продолжения необходимо завершить операцию". Горела кнопка Ок - на этом работоспособность конфигуратора и базы заканчивалась.

08.02.2012    130271    VanDiesel1    137    

Восстановление данных 1С8 при помощи механизма РИБ

Распределенная БД (УРИБ, УРБД) Тестирование и исправление v8 Бесплатно (free)

Предлагаю сообществу способ восстановления утраченных данных из бэкапа используя механизм РИБ. Зачастую наличие бэкапа базы не позволяет просто взять и откатить состояние базы на утро или вечер предыдущего дня. Бывает так, что утерю важных данных заметили спустя 2 дня, и свежий бекап нам не поможет. Предлагаю относительно простой способ переноса определенных данных из резервной копии базы в рабочую. Не надо писать обработку по выгрузке, загрузке данных или по переносу через COM-соединение. Единственное условие: в базе должны работать обмены РИБ.

13.06.2020    1533    Vortigaunt    1    

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

Администрирование СУБД Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

При обновлении платформы 1с 8.3.6.2100 на платформу 8.3.16.224 под УПП 1.3.138.1 возникла ошибка "Для одного ссылочного кода существует более одной таблицы в базе данных...". В интернете много есть информации по этой проблеме, в частности в публикации https://infostart.ru/public/1126277/ приведено ее решение, но оно довольно громоздкое. Есть вариант более простой

2 стартмани

28.04.2020    3330    2    Ион    3    

Ошибка формата потока. Частный случай при обновлении

Тестирование и исправление v8 УПП1 Бесплатно (free)

При обновлении конфигурации столкнулся с ошибкой формата потока. Нашел вполне экономное решение по времени для решение этой проблемы.

25.04.2020    3811    Gasilin    8    

Проверка регистраторов при обновлении конфигурации

Тестирование и исправление v8 Бесплатно (free)

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

23.04.2020    2943    ipoloskov    10    

У Вас задваивание безналичных платежей в УТ 11.4, исправляем!!!

Тестирование и исправление v8 v8::ОУ УТ11 УУ Бесплатно (free)

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

16.04.2020    2384    VID1234    6    

Недопустимое состояние объекта !m_usingOldShema [backend - src\DBGenerationsImpl.cpp (2377)]

Тестирование и исправление v8 Бесплатно (free)

Не знаю, что именно вызвало такую ошибку, поэтому напишу, что выполнен был переход с платформы 8.3.10.2561 на 8.3.16.1148. Конфигурация разрабатывалась с использованием хранилища конфигурации. База серверная на Microsoft SQL. В результате изменений в конфигурации, не вызывающих реструктуризацию базы, после нажатия F7 возникло такое сообщение.

04.04.2020    7424    EvgeTrofi    8    

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

Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

Нашёл ещё три способа решить проблему. Также есть ссылки на другие решения других авторов.

26.02.2020    1766    t278    2    

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

Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

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

3 стартмани

23.01.2020    9977    127    rokhin    56    

Зависает полнотекстовый поиск! Что было? Что я сделал?

Тестирование и исправление v8 БП3.0 Россия Бесплатно (free)

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

10.01.2020    6213    VID1234    14    

"Объект не найден" - не приговор! Простой способ восстановить удаленный объект

Тестирование и исправление v8 1cv8.cf Бесплатно (free)

В статье будет рассмотрен простой способ восстановления удаленного объекта с помощью обработки «Выгрузка и загрузка данных XML».

12.11.2019    6955    Olesia_Matusevich    12    

Решение для клиент-серверной архитектуры на базе POSTGRE SQL при возникновении ошибки "Нарушена целостность структуры конфигурации"

Тестирование и исправление v8 1cv8.cf Бесплатно (free)

При динамическом обновлении возможно нарушении структуры конфигурации. Об этом можно узнать по характерному сообщению: "Нарушена целостность структуры конфигурации", после чего предлагается перезапуск или завершение. Решение описано для клиент-серверной конфигурации на PostgreSQL

07.11.2019    7914    leaguener    5    

Восстановление индексов СУБД

Тестирование и исправление v8 1cv8.cf Россия Бесплатно (free)

Восстановление индексов СУБД на основе структуры хранения базы данных 1С.

09.10.2019    5525    kadr    2    

Хотите снизить нагрузку на процессор сервера в 2 раза?

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

В статье рассмотрено влияние частого запуска регламентных заданий на процессор сервера 1С.

27.06.2019    9976    Дмитрий74Чел    6    

Ошибка формата потока и команды конфигурации

Тестирование и исправление v8 Бесплатно (free)

Один из вариантов устранения данной ошибки.

11.06.2019    8896    l_men    9    

Исправление ошибки при открытии внешнего отчета "Не удалось обновить вспомогательные данные расширений"

Тестирование и исправление v8 Россия Бесплатно (free)

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

30.05.2019    5793    AlkB    4    

MS SQL Ошибка СУБД: Предоставленный поток статистики разрушен. Как решить проблему с разрушенной статистикой

Тестирование и исправление v8 1cv8.cf Бесплатно (free)

MS SQL Ошибка СУБД: Предоставленный поток статистики разрушен... Как решить проблему с разрушенной статистикой

16.04.2019    7125    ikorulev    1    

Восстановление структуры DBSchema

Тестирование и исправление v8 БП3.0 Абонемент ($m)

Обработка для анализа ошибок в структуре DBShema, восстановление структуры объектов, перенос данных из выгруженных в XML таблиц базы, при помощи "Tool 1CD".

10 стартмани

11.03.2019    12147    59    spawn_a    23    

Cannot insert duplicate key. Кто виноват и что делать

Распределенная БД (УРИБ, УРБД) Тестирование и исправление v8 Бесплатно (free)

Ошибка "CANNOT INSERT DUPLICATE KEY" в базах 1С и связанная с ней "магия".

25.02.2019    22280    YPermitin    32    

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

Тестирование и исправление v8 Россия Бесплатно (free)

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

17.01.2019    28417    PoZiTiFFF    53    

Восстановление базы 1С, ошибка источника потока

Тестирование и исправление v8 Бесплатно (free)

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

09.01.2019    20125    idle    25    

Авто-восстановление "битых ссылок" при обменах с несколькими базами данных в режиме управляемых форм

Тестирование и исправление v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

В процессе исполнения проектов консолидации данных из разных источников, возникновение «битых ссылок», особенно для закрытых периодов и действующих бизнес-процессов, могут быть крайне нежелательными в конкретный момент времени. Ясно, что специалисты со временем нормализуют обмены, восстановят утраченные по ошибке записи, но в моменте это не быстро, и необходим способ решения, который позволит продолжить производственный процесс на уровне продвинутого пользователя.

31.07.2018    7350    SvkMaster    5    

1С: Сценарное тестирование 3.0. Запись и отладка интерактивного сценария

Тестирование и исправление v8 1cv8.cf Бесплатно (free)

Конфигурация «Сценарное тестирование 3.0» (далее СТ) позволяет записывать интерактивные действия пользователей и формировать на их основании сценарий тестирования, который в последующем можно использовать в тестах. Рассмотрим это на примере.

07.11.2017    16831    user759624    7    

Окно "Зарегистрировано 0 изменений из 1 на узле "Имя узла""

Тестирование и исправление v8 1cv8.cf Бесплатно (free)

Почему может появляться окно предупреждения "Регистрация изменений" с текстом " Зарегистрировано 0 изменений из 1 на узле "Имя узла" "" ? Как исправить проблему?

02.08.2017    24079    StudentM    6    

Рекурсия тестирования баз 1С. Когда однократного тестирования базы недостаточно

Тестирование и исправление v8 1cv8.cf Россия Бесплатно (free)

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

22.06.2017    11637    iskan    7    

Отладка не работает, или отладка фоновых заданий

Тестирование и исправление v8 1cv8.cf Бесплатно (free)

На написание данной статьи вдохновила статья http://infostart.ru/public/633522/ Я разработчик старой формации, до сих пор обслуживаю клиентов на платформах 7.7, 8.1, 8.2, времени изучать все мануалы и отслеживать новые тенденции не хватает. Цель этой статьи помочь разработчикам, таким же людям, как и я. Если эта статья сэкономит, хотя бы, 1 человеко-час жизни, значит, написана не зря.

16.06.2017    27586    IvanovAV    26    

Когда перестает работать отладчик

Тестирование и исправление v8 Россия Бесплатно (free)

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

13.06.2017    30549    mickey.1cx    20    

Предопределенный элемент отсутствует в данных

Тестирование и исправление v8 БП3.0 Бесплатно (free)

Предопределенный элемент отсутствует в данных. Исправляем ошибку.

13.06.2017    27292    niko11s    12    

Перенос данных из базы с поврежденными таблицами

Тестирование и исправление Обмен через XML Перенос данных из 1C8 в 1C8 v8 БП2.0 Казахстан БУ УУ Бесплатно (free)

У клиента что-то произошло с жестким диском, что потребовало восстановления данных на нем. Базу 1С вроде бы сохранили, и она даже открылась. Однако при попытке доступа к документу "Платежный ордер, списание денежных средств" база вылетает с ошибкой. Также при получении оборотов за период в целом и по декадам выводились разные цифры. Обработка переноса данных в идентичную конфигурацию не подошла, из-за того, что так же вылетала с ошибкой БД. Ниже опишу мои действия по созданию новой конфигурации.

06.06.2017    16352    ermek6    14    

Ошибка формата потока. Решение с описанием проблемы

Тестирование и исправление v8 1cv8.cf Россия Бесплатно (free)

Ошибка формата потока. Страшная, но симпатишная своей загадочностью. 1С ничего толком не объясняет и не подсказывает. Ниже решение, которое мне помогает решать данную проблему на 100%. Всё очень просто. Данная ошибка возникает (на моей практике) только у клиент серверного варианта. просто потому что с другим форматом не работаю. Рекомендация: Старайтесь избегать динамического обновления, особенно если у вас возможны кратковременные проблемы с 220 и LAN. Далее описание лечения:

25.04.2017    32349    juker    6    

Ошибка в 1С: Не удается вставить повторяющуюся строку ключа в объект

Тестирование и исправление v8 1cv8.cf Бесплатно (free)

В 1С может появиться ошибка такого рода: Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Попытка вставки неуникального значения в уникальный индекс: Microsoft SQL Server Native Client 11.0: Не удается вставить повторяющуюся строку ключа в объект "dbo._AccRgAT118760" с уникальным индексом "_AccR118760_ByPeriod_TRRRRN". Повторяющееся значение ключа: (ноя 1 5999 12:00AM, 0xab52f3e52b35efa847b0cfef9c90ff9d, 0x95eb00112f2a1abf11dac09f12116a47, NULL, NULL, NULL, NULL, 0). HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2601, line=1 Техническая информация: Ошибка при чтении изменений при обмене РИБ: {ОбщийМодуль.ПроцедурыОбменаДанными.Модуль(1559)}: Ошибка при вызове метода контекста (ПрочитатьИзменения): Попытка вставки неуникального значения в уникальный индекс: Для ее решения делаем следующее:

18.04.2017    23190    tonn12    13    

Автоматизированная проверка конфигураций… и пара слов о стандартах разработки

Практика программирования Тестирование и исправление v8 1cv8.cf Бесплатно (free)

Предлагаю познакомиться с инструментом "Автоматизированная проверка конфигураций" и получить практику его применения

18.01.2017    57878    Vladimir Litvinenko    23    

BDD 1С по душе

Тестирование и исправление v8 Россия Бесплатно (free)

Размышляя над проблемой тестирования, а точнее над проблемой качества решений, умные и не очень люди, в основном ломают копья над следующим противоречием “надо тестировать, но надо разрабатывать, а не тестировать” (Алексей Лустин) www.silverbulleters.org

15.01.2017    26172    dima_tuzov    44    

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

Тестирование и исправление v8 1cv8.cf Россия Бесплатно (free)

После динамического обновления перестал открываться конфигуратор. При попытке открытия возникала ошибка "Нарушена целостность структуры конфигурации", после чего предлагался перезапуск или завершение программы. Решено с использованием материалов из сети. Описание личного опыта решения проблемы для клиент-серверного варианта на базе MS SQL 2012 и 1С Предприятие 8.3 (8.3.8.1675) при наличии прав администратора на сервере и резервных копий конфигурации

17.12.2016    19332    Dot78    13    

Файловая база зависает при реструктуризации таблиц. 8.3

Тестирование и исправление v8 Бесплатно (free)

Файловая база УНФ 1.6, платформа 8.3.7.1790. База перестала проходить Тестирование и исправление (ТиИ), при реструктуризации зависала на таблице Присоединенные файлы, при этом можно было закрыть окно ТиИ по кнопке Закрыть и закрыть потом конфигуратор, но база оставалась в монопольном режиме, помогало только принудительное удаление файла блокировок.

18.11.2016    14984    de0nis    2    

Очистка диска от кэша неиспользуемых баз 1С

Сервисные утилиты v8 v8::УФ 1cv8.cf Абонемент ($m)

Ищем папки кэша, не указанные в файле ibases.v8i и в C:\Program Files\1cv8x\srvinfo\reg_1541\ и удаляем их.

5 стартмани

14.10.2016    14685    21    Дмитрий74Чел    14