В процессе обновления информационной базы произошла критическая ошибка по причине: Ошибка SDBL: Тип поля Code несовместим с типом литерала STRING





В этой статье описан способ решения ошибки "В процессе обновления информационной базы произошла критическая ошибка по причине: Ошибка SDBL: Тип поля Code несовместим с типом литерала STRING". Сразу оговорюсь, что описанный метод больше похож на "танцы с бубнами", но, возможно, кому-нибудь сможет помочь или пригодится что-то из того, что я перепробовал. По крайней мере, поможет натолкнуть на правильную мысль, а также будут подняты другие проблемы, интересные к обсуждению.

В процессе обновления нетиповой ИБ выходит ошибка:

Ошибка возникает на этапе обновления конфигурации базы данных.

 

Начнём с того, что мне посоветовали:

  1. Выгрузить/загрузить базу
  2. Выгрузить/загрузить .сf
  3. Провести «Тестирование и исправление информационной базы»

Первые 2 пункта мне не помогли, а ТиИ именно на проверке логической целостности вываливается со следующей ошибкой:

Причину этой ошибки выявить не удалось, как и загрузить в файловую версию, т.к. 2 таблицы (

AccumRg27945 — это РегистрНакопления.ЗатратыНаВыпускПродукцииНалоговыйУчет

AccumRg27891 -РегистрНакопления.ЗатратыНаВыпускПродукцииБухгалтерскийУчет) превышают 4 гига.

Буду рад услышать в комментариях ваше мнение по решению этой, уже другой ошибки. Конечно, не очень хотелось заниматься сворачиваем этих регистров ради выгрузки в файловую версию ради проведения ТиИ, а просто заставить ТиИ работать на клиент-серверной версии. А всё началось просто с ошибки обновления. Вернемся к ней…

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

В результате недельного труда, виновником оказался Справочник.ВидыДокументов, он же «Виды подтверждающих документов».

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

Типовой справочник, который появился в предыдущем обновлении месяц-два назад. Самое интересное что он в текущей базе не используется, потому что организация не занимается государственными контрактами и в настройке параметров учета эта функциональность отключена. Всё, что там есть — это предопределенные элементы.

В моей базе справочник типовой, но при сравнении/объединении показывает что будто бы изменили динамический список в форме списка справочника.

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

Делаем запрос и ищем странности в этом справочнике:

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

Далее смотрим, какие же изменения вносит поставщик:

 

Видим, что поставщик уменьшил длину кода с 9 до 3, но самое интересное тут то, что поставщик изменил тип кода со «строки» на «число». Видимо, именно об этом и говорит ошибка «Тип поля Code несовместим с типом литерала STRING». Получается, платформа меняет тип кода, а потом не может записать строковые коды предопреденных элементов в числовое поле. Или что там в какой последовательности, я точно не знаю.

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

Теперь накатываем обновление поставщика, видим, что тип кода и его длина не участвуют в обновлении, потому что совпадают, зато участвуют предопреденные элементы.

Обновление прошло успешно! Теперь осталось дождаться выходных и накатить это на рабочую базу.

И последнее, о чем следует упомянуть, это то, что все эти действия выполнялись на платформе 1С:Предприятие 8.3 (8.3.5.1248), при переходе с релиза УПП 1.3.73.2 на 1.3.74.1

23 Comments

  1. alexks321

    Интересная статья.

    Тоже вышла ошибка при переходе с релиза УПП 1.3.73.2 на 1.3.74.1,но платформа 1С:Предприятие 8.2 (8.2.19.130).

    Ошибка была следующего характера «Код справочника стал не уникальным: Статьи калькуляции (0)».

    Хотя данный справочник не используется по причине того, что он связан настройкой «Государственные контракты», которые не ведутся в организации.

    Reply
  2. Anesk

    (1) alexks321, аналогично вышла. И тоже не используется. Это не критичная ошибка, в случае чего просто нужно будет изменить код.

    Reply
  3. kapustinag

    Описанная в статье ошибка — со справочником ВидыДокументов — не выходит при обновлении типовой УПП 1.3.73.2 на 1.3.74.1 на платформе 8.2.19.90 и 8.2.19.83. А насчет уникальности кода статьиКалькуляции предупреждение — выходит.

    Reply
  4. alexks321

    (2) Конечно, так и сделал, просто проигнорировал это предупреждение, но остался осадок, а все ли верно прошло с обновлением. О таких вещах можно было и предупрелить, особно осторожных, что это штатная ситуатция.

    Reply
  5. wano37

    Спасибо за статью! Вылетела эта же ошибка при обновлении УПП.

    Reply
  6. Anesk

    (5) wano37, рад помощь)

    Reply
  7. Andrefan

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

    Reply
  8. daho

    Спасибо за информацию. Однозначно может пригодится. Еще не натыкался на такую ситуацию а уже один из вариантов решения если что будет в запасе..)

    Reply
  9. pioneeer

    Ащее респект! Столько времени сэкономил! Благодарен очень)

    Reply
  10. igorbel

    Спасибо, столкнулся с такой же проблемой.

    Reply
  11. alexnov

    спасибо за помощь! А вообще хотелось бы узнать более правильный способ нахождения такой ошибки…

    Reply
  12. Anesk

    (11) alexnov, мне кажется если обновить на более новом релизе платформы, то этой ошибки не будет — может это более правильный способ, но и указанный способ вполне безопасен.

    Reply
  13. frkbvfnjh

    Большое спасибо за то, что поделились опытом! Сэкономил кучу времени…

    Reply
  14. luchyk

    Спасибище, только представил себе как это всё самому искать, это ж целый день запросто угробить можно.

    Reply
  15. kudlach

    Добавлю (спустя еще год).

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

    Вылезло после обновления. Тестирование и исправление останавливается именно на таблице этого документа. В конфигураторе обнаруживаю единственный реквизит, вставленный программистами. И тип реквизита после обновления вместо типа «Документ» стал типом «Строка».

    Поменял на нужное — все исправилось. Повезло, что потерянные данные не критичны для работы.

    Reply
  16. Derek777

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

    по причине:

    Попытка вставки неуникального значения в уникальный индекс:

    Microsoft SQL Server Native Client 10.0: Не удается вставить повторяющуюся строку ключа в объект «dbo._ReferenceChngR2121NG» с уникальным индексом «_Refere2121_ByDataKey_RRNG». Повторяющееся значение ключа: (0x97b6002590a25f6611e5aec6c6ce632f, 0x00000012, 0x97b9002590a25f6611e61201af44237e).

    HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2601, line=1

    В этом же справочнике удали все предопределенные элементы. Затем в режиме приложения удалил помеченные объекты. Затем провел обновление, все норм.

    Reply
  17. nvv1970

    Интересно, какие особенности эксплуатации заставляют пользоваться столь древней платформой? Даже на момент написания статьи…

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

    Reply
  18. Anesk

    (17) вот и сделайте, кто вам мешает? Все данные есть, номера релизов есть проверяйте.

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

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

    Reply
  19. nvv1970

    (18) Зачем так критично. Ошибка интересная. Я, например, с ней не встречался.

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

    За публикацию и однозначно спасибо. На то и открытые комментарии, чтобы в спорах родить/узнать истину.

    Вы хотели только хвалебные комментарии? ))) Их нещадно заминусуют как творение ботов )

    не имеет ни одной

    да уж… Не нашел пока в себе мотивации. И до сих пор не знаю для чего это другие делают (слава? деньги? некуда время девать?).

    Reply
  20. progr-2008

    При обновлении типовой УПП 1.3.73.2 на 1.3.74.1 на платформе 8.3.8.2322 — стали неуникальными коды предопределенных элементов справочника статьи калькуляции, который не используется.

    А вот других ошибок на этом обновлении — не было.

    Reply
  21. mburkin

    Ну вот на дворе 2019 год, платформа 8.3.13.1809, обновляю без дважды измененных свойств бухгалтерию Проф на версию Корп, того же релиза. Выскакивает ошибка SDBL с указанием некого Document34 и поля Parent — но такого в базе данных нет… да и какой у документа Parent…

    уже даже отказался от доработок и привёл к типовому виду. Обновляю уже без сравнения — всё равно Выскакивает ОШИБКА SDBL уже без каких-либо вообще дополнительных слов…сейчас делаю ТиИ сообщилась ошибка

    Тестирование начато

    Проверка логической целостности. Справочник.ФизическиеЛица М****в Юрий Николаевич

    ОбщийРеквизит.ОбластьДанныхОсновныеДанные = 0

    Неправильная ссылка на родителя. Перенесен в корень.

    Тестирование закончено

    Вроде как про родителя речь… надеюсь в этом было дело… обновляю теперь опять на корп… посмотрим что будет

    Reply
  22. mburkin

    (21) продолжение

    Обновление прошло без ошибок в конфигураторе, а вот в режиме предприятия такое сообщение…

    Reply
  23. mburkin

    (22) продолжение

    В общем сделал тестирование и исправление — реструктуризацию и реиндексацию. База выросла с 9 гб до 12 гб. Но ошибка ушла — всё хорошо обновилось

    Reply

Leave a Comment

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