Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Ошибка SDBL при обновлении БП 3.0.64.54 => 3.0.65.80 на платформе 8.3.12.1595

Ошибка SDBL при обновлении БП 3.0.64.54 => 3.0.65.80 на платформе 8.3.12.1595
Я
   jk3
 
11.10.18 - 17:09
Для начала, сразу скажу, что ТИИ базы со всеми галками до обновления сделано, ошибок не выдает.
Конфа БП 3.0.64.54 полностью типовая.

cfu встает без проблем, конфа сохраняется, изменения применяются по F7 успешно.

Потом при обновлении в режиме предприятия падает вот так:
    {Справочник.ИдентификаторыОбъектовМетаданных.МодульМенеджера(1713)}: Ошибка при вызове метода контекста (Записать)
                ТаблицаОбъект.Записать();
    по причине:
    Ошибка при выполнении обработчика - 'ПередЗаписью'
    по причине:
    {ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(902)}: Ошибка при вызове метода контекста (Добавить)
                Объект.ОбменДанными.Получатели.Добавить(Получатель);
    по причине:
    Несоответствие типов (параметр номер '1')


Это Процедура ЗарегистрироватьОбъектНаВсехУзлах(Знач Объект, Знач ИмяПланаОбмена, Знач ВключаяГлавныйУзел = Истина) Экспорт

Падает при ИмяПланаОбмена = "Полный".
Если ИмяПланаОбмена = "АвтономнаяРабота", то проходит без проблем.

Код процедуры такой:
        ТекстЗапроса =
        "ВЫБРАТЬ
        |    ПланОбмена.Ссылка КАК Получатель
        |ИЗ
        |    ПланОбмена.[ИмяПланаОбмена] КАК ПланОбмена
        |ГДЕ
        |    ПланОбмена.Ссылка <> &ЭтотУзел
        |    И НЕ ПланОбмена.ПометкаУдаления";
        
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяПланаОбмена]", ИмяПланаОбмена);
        
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("ЭтотУзел", ПланыОбмена[ИмяПланаОбмена].ЭтотУзел());// возвращает Неопределено, хотя должно возвращать ссылку на предопределенный элемент плана обмена

        Запрос.Текст = ТекстЗапроса;
        
        Получатели = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Получатель");
        
        ГлавныйУзел = ПланыОбмена.ГлавныйУзел();
        
        Для Каждого Получатель Из Получатели Цикл
            Если Не ВключаяГлавныйУзел И Получатель = ГлавныйУзел Тогда
                Продолжить;
            КонецЕсли;
            Объект.ОбменДанными.Получатели.Добавить(Получатель);// падает здесь

        КонецЦикла;


Если в отладчике попробовать получить значение переменной Получатель, возвращает "Ошибка SDBL: Таблица или поле ID не содержится в разделе FROM".

Эту ошибку можно обойти в отладчике, заменив значение ИмяПланаОбмена = "Полный" на "АвтономнаяРабота" в начале процедуры.

Но потом после того как обновление установится, при попытке сделать ТИИ с галкой "проверка логической целостности" сразу выдается ошибка в виде предупреждения и ТИИ останавливается:
    Microsoft SQL Server Native Client 11.0: Нарушено "PK___tmpRCT__80E37C38266317B0" ограничения PRIMARY KEY.
    Не удается вставить повторяющийся ключ в объект "dbo._tmpRCT".
    Повторяющееся значение ключа: (0x0000001b).
    HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2627, line=1


Т.е. фактически на выходе получаем битую базу.
 
 
   МихаилМ
 
1 - 11.10.18 - 17:27
поняли. а что хотели? предупредть ?
   jk3
 
2 - 11.10.18 - 17:32
(1) Что делать чтобы обновилось без этой ошибки?

Всё делал на тестовой базе.
Рабочую, естественно, оставил пока на релизе 3.0.64.54.
Но рано или поздно придётся обновлять, а тут такая Ж.
Может быть кто-то уже столкнулся с тем же самым и смог победить.
   Amra
 
3 - 11.10.18 - 17:33
Более свежий релиз платформы попробуй, из 12ых
   dka80
 
4 - 11.10.18 - 17:34
(2) вы не первый, кто жалуется на ошибки при переходе на этот релиз. Поэтому лучше переждать
   jk3
 
5 - 11.10.18 - 17:39
Да, забыл уточнить, что никакого РИБ в помине нет. Это одиночная база.
   jk3
 
6 - 11.10.18 - 17:41
(3) Я понимаю, что это баг платформы, а не конфы.

Из более свежих только 2 версии 8.3.12.1616 и 8.3.12.1685.
В описании исправленных багов нечто отдаленно похожее нашёл, но не совсем оно:
При выполнении тестирования и исправления информационной базы, в которой определены разделители, при тестировании служебных таблиц некоторых объектов может происходить ошибка вида Ошибка SDBL: таблица или поле Fld2683 не содержится в разделе FROM (pos=7)

Исправлена: "Технологическая платформа", версия 8.3.12.1685
   VladZ
 
7 - 11.10.18 - 17:41
(0) Последнюю платформу (8.3.13) не пробовал ставить?
   jk3
 
8 - 11.10.18 - 17:46
(7) Я таким экстримом не занимаюсь))
Обновляю платформу только по надобности и не на самый последний релиз.
   elCust
 
9 - 11.10.18 - 17:54
Файловая без ошибок обновилась на 3.0.65.80.
Правда пустая.

Платформа 8.3.12.1616.
   jk3
 
10 - 11.10.18 - 17:57
(9) Демо-база БП у меня без ошибок обновилась до 3.0.65.80 на платформе 8.3.12.1595.
А вот копия реальной базы -- фиг.
 
 Рекламное место пустует
   МихаилМ
 
11 - 11.10.18 - 21:13
(10) значит ТЖ в руки и исправляйте ошибку.
   jk3
 
12 - 14.10.18 - 23:26
Та же самая ошибка на последней платформе 8.3.13.1513.

(11) Как надо настроить тех.журнал, чтобы попытаться самостоятельно отловить ошибку?
   hhhh
 
13 - 14.10.18 - 23:40
(12) всё ж таки проверьте планы обмена. наверняка левый узел там кто-то создал.
   MSOliver
 
14 - 15.10.18 - 04:32
Ошибка зарегистрирована?
   jk3
 
15 - 15.10.18 - 10:21
(13) Это я первым делом проверил.
В плане обмена "Полный" только один предопределенный элемент без кода, наименования, т.е. который не использовался никогда.
По остальным планам обмена на всякий случай тоже посмотрел.
У всех остальных, кроме 3-х (ниже), точно такая же картина с одним предопределенным элементом.
"Обновление информационной базы" -- кроме предопределенного еще 5 обычных элементов.
"Синхронизация данных через универсальный формат" -- 2 элемента: один предопределенный и еще один обычный элемент.
"Управление торговлей, редакция 11" -- 2 элемента: один предопределенный, а второй помечен на удаление.

   jk3
 
16 - 15.10.18 - 10:21
(14) Еще в субботу написал на v8, но, такое ощущение, что по выходным они почту не обрабатывают.
   jk3
 
17 - 15.10.18 - 10:44
Только вот сейчас ответили "Ваше письмо будет рассмотрено в ближайшее время".
   hhhh
 
18 - 15.10.18 - 10:55
(15) ну вот, тот что помечен на удаление, удалите нахрен. Бывших узлов не бывает.
   MSOliver
 
19 - 16.10.18 - 07:25
Я обновился без проблем.
   jk3
 
20 - 16.10.18 - 10:06
(18) Его невозможно удалить, на него куча ссылок, т.к. раньше до EnterpriseData этот обмен использовался.
Да и я думаю он никак не влияет, какой-то косяк с планом обмена Полный, а не с ним.
   jk3
 
21 - 16.10.18 - 10:06
(19) Поздравляю!
А мне даже еще не ответили в какую сторону хотя бы копать.
   hhhh
 
22 - 16.10.18 - 10:08
(20) вот именно он и влияет. Так что тянуть с удалением нет смысла.
   vladko
 
23 - 16.10.18 - 10:46
Обновил в выходные типовую рабочая базу. Без проблем обновилась и работает на рекомендованной платформе 8.3.12.1529 (правда в базе не используются синхронизации)
   Naumov
 
24 - 16.10.18 - 12:12
(23) У пользователей с ограниченными правами при поиске в динамическом списке (например в документах реализации) ошибок не возникает?
   El_Duke
 
25 - 16.10.18 - 12:45
(21) Ответили, ты не захотел увидеть
В (3) этот ответ прозвучал. Я на платформе 8.3.12.1685 обновился успешно, только долго адски
   crotnn
 
26 - 16.10.18 - 12:47
(21) У меня при запуске самописки на 8.3.12 в планах обмена самопроизвольно очистились значения реквизита "ЭтотУзел" у всех узлов всех планов обмена, и тоже посыпались ошибки. После "ручной" установки значений все заработало. Проверь на всякий случай.
   jk3
 
27 - 16.10.18 - 14:22
(25) Пробовал на платформах 8.3.12.1595, 8.3.12.1685, 8.3.13.1513 -- результат одинаковый как в (0)
   jk3
 
28 - 16.10.18 - 14:23
Попробовал выгрузить базу в dt-файл и загрузить обратно. Не помогло.
   jk3
 
29 - 16.10.18 - 14:25
(26) А как это сделать?
После наката обновления по F7 и старта базы как-то можно отказаться от запуска обновления в предприятии?
   1c_asadi
 
30 - 16.10.18 - 14:29
(0) Попробуй запустить тестирование(без исправления) с 4я первыми галками сразу после завершения обновления в конфигураторе, была такая беда с типовой - помогло.
   jk3
 
31 - 16.10.18 - 14:43
(26) В окне "Не удалось выполнить обновление" есть кнопка Еще - Открыть внешнюю обработку.
Запустил внешнюю обработку с таким кодом:
Сообщить(ПланыОбмена.Полный.ЭтотУзел().ЭтотУзел);
Выдает "Да".
Т.е. значение реквизита не слетело.
   Naumov
 
32 - 16.10.18 - 14:45
(29) Нет, после наката только из архивной копии
   crotnn
 
33 - 16.10.18 - 14:51
(31) я бы и остальные планы обмена так проверил, не только полный. Ведь в (0) явно ошибка в каком-то узле обмена. В крайнем случае попробовать на копии удалить все узлы обмена с отключенным контролем целостности и попробовать обновиться.
 
 
   jk3
 
34 - 16.10.18 - 15:25
(30) Попробовал.
Если сразу после завершения обновления в конфигураторе запустить ТИИ (т.е. даже без запуска предприятия), то вываливается с сообщением, описанным в (0)
Microsoft SQL Server Native Client 11.0: Нарушено "PK___tmpRCT__80E37C38266317B0" ограничения PRIMARY KEY.
    Не удается вставить повторяющийся ключ в объект "dbo._tmpRCT".
    Повторяющееся значение ключа: (0x0000001b).
    HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2627, line=1

Т.е. до обновления ТИИ проходит без ошибок, после обновления в конфигураторе -- база поломанная. Релиз платформы последний. Фирма 1С молчит как партизан.
   Bony-andrey
 
35 - 16.10.18 - 15:44
У меня было слегка похожая ситуация при переходе БП 2.0 -> 3.0

Таблица была "dbo._AccRgAT2486", SQL ругался на неуникальность конкретного индекса. В Management Studio я временно разрешил этому конкретного индекса пропускать повторяющиеся значения,а после выполнения всех процедур обратно запретил.

Но что за таблица "dbo._tmpRCT"?
   1c_asadi
 
36 - 16.10.18 - 15:57
(34) вышел еще 84 релиз БП мож там поправили,как вариант попробуй в файловый вариант сконвертить и там обновить
   jk3
 
37 - 16.10.18 - 17:40
(35) При ТИИ создается такая таблица в скулевской базе:
CREATE TABLE [dbo].[_tmpRCT](
    [TabID] [binary](4) NOT NULL,
PRIMARY KEY CLUSTERED 
(
    [TabID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

И даже данные в ней есть, 1189 строк.
0x0000001B -- строка с таким значением есть.
Хз почему пытается вставить в эту таблицу еще одно такое значение. Естественно, скуль не даёт это сделать.
   jk3
 
38 - 16.10.18 - 17:42
(36) Попробовал накатить 3.0.65.84 релиз. Ошибка та же.
   jk3
 
39 - 16.10.18 - 17:56
При ТИИ базы до обновления в таблице _tmpRCT это значение 0x0000001B так же есть, но количество строк в таблице 1268 (больше).
Т.е. получается на базе после обновления спотыкается на дублирующимся ключе и недозаполняет таблицу.

Где хранится обратная связь ID таблиц с человеческим наименованием?
Чтобы хотя бы попытаться понять что где задублировалось при обновлении.
   1c_asadi
 
40 - 17.10.18 - 07:49
(39)для таких целей писал обработку, если нужна напиши почту - скину
https://cloud.mail.ru/public/DTQ1/B9ZWfDtnW типо так умеет
   jk3
 
41 - 17.10.18 - 14:44
(40) Спасибо, кончено, но это немного не то.
Значения в таблице _tmpRCT:
0x00000008
0x0000000A
0x0000000B
...
0x0000001A
0x0000001B
0x0000001C
..
0x000078B4
0x000078B5

Т.е. какой-то внутренний ID таблицы, а не её имя.
Но количество строк странное.
Чуть больше 1 тыс. даже в нормальной базе, хотя таблиц в базе больше 5 тыс.
   МихаилМ
 
42 - 17.10.18 - 15:10
с помощью ddl триггера отключите  индекс
   jk3
 
43 - 17.10.18 - 23:30
(33) >я бы и остальные планы обмена так проверил, не только полный
Вот такой код выдает "Да" и в битой базе после обновления, и в нормальной до обновления:
    Для Каждого ТекПланОбмена Из Метаданные.ПланыОбмена Цикл
        Сообщить(ТекПланОбмена.Имя + " = " + ПланыОбмена[ТекПланОбмена.Имя].ЭтотУзел().ЭтотУзел);
    КонецЦикла;

   jk3
 
44 - 19.10.18 - 11:07
Выяснил, то ошибка с PRIMARY KEY воспроизводится даже на релизе 3.0.64.54, если включить возможность изменений и поменять режим совместимости 8.3.10 => 8.3.12.
При этом реструктуризации подвергаются объекты:
    Новый объект: Хранилище расширений конфигурации (новое поколение данных)
    Новый объект: Хранилище информации о применении расширений конфигурации к базе данных
    Новый объект: Хранилище информации о применении расширений конфигурации к базе данных (новое поколение данных)
    Объект изменен: Хранилище расширений конфигурации
    Объект изменен: ПланОбмена.АвтономнаяРабота
    Объект изменен: ПланОбмена.МиграцияПриложений
    Объект изменен: ПланОбмена.МобильнаяБухгалтерия
    Объект изменен: ПланОбмена.МобильноеПриложениеПредприниматель
    Объект изменен: ПланОбмена.Обмен1С_КАМИН_ЗарплатаБухгалтерия30
    Объект изменен: ПланОбмена.ОбменЗарплата3Бухгалтерия3
    Объект изменен: ПланОбмена.ОбменРозница1Бухгалтерия3
    Объект изменен: ПланОбмена.ОбменРозницаБухгалтерияПредприятия30
    Объект изменен: ПланОбмена.ОбменСообщениями
    Объект изменен: ПланОбмена.ОбменСПодключаемымОборудованиемOffline
    Объект изменен: ПланОбмена.ОбменУправлениеНебольшойФирмойБухгалтерия30
    Объект изменен: ПланОбмена.ОбменУправлениеТорговлей103БухгалтерияПредприятия30
    Объект изменен: ПланОбмена.ОбменУправлениеТорговлейБухгалтерияПредприятия30
    Объект изменен: ПланОбмена.ОбновлениеИнформационнойБазы
    Объект изменен: ПланОбмена.Полный
    Объект изменен: ПланОбмена.ПоОрганизации
    Объект изменен: ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат
    Объект изменен: ПланОбмена.УдалитьОбменРозницаБухгалтерия20
    Объект изменен: ПланОбмена.УдалитьОбменРозницаБухгалтерияПредприятия
    Объект изменен: ПланОбмена.УдалитьОбменУправлениеНебольшойФирмойБухгалтерия20
    Объект изменен: ПланОбмена.УдалитьОбменУправлениеТорговлейБухгалтерияКОРП
    Объект изменен: ПланОбмена.УдалитьОбменУправлениеТорговлейБухгалтерияКОРПФоновый
    Объект изменен: ПланОбмена.УдалитьОбменУправлениеТорговлейБухгалтерияПредприятия
    Объект изменен: ПланОбмена.УдалитьПолный
    Объект изменен: ПланОбмена.УдалитьПоОрганизации
    Изменена версия структуры информационной базы

Как раз в следующем за релизом 3.0.64.54 в релизе 3.0.65.69 и меняется режим совместимости.

Но так пока что и не ясно как починить базу до обновления, чтобы изменение режима совместимости при накатывании следующего релиза не ломало базу.
   jk3
 
45 - 19.10.18 - 11:43
При возврате режима совместимости 8.3.12 => 8.3.10 ТИИ ошибок не выдает... хм.
   МихаилМ
 
46 - 19.10.18 - 12:14
(44)
"как починить базу.."
либо исправить исходные данные, приводящие к ошибке.

либо созданные.

первое решается путем расследования тж либо трасс ms sql profiler на предмет , откуда 1с8 берет данные для таблицы с последующим исправлением.
второе - отключением индекса при создании таблицы, удаления дублей, создание индекса.
   jk3
 
47 - 21.10.18 - 18:42
Выяснил, что планы обмена изменяются при включении режима совместимости 8.3.11.
Т.е. если включить возможность изменений и просто изменить режим совместимости конфигурации с 8.3.10 на 8.3.11 то баг с ТИИ воспроизводится.
При откате обратно на 8.3.10 бага при ТИИ нет.

Методом последовательного удаления планов обмена из конфигурации выяснил, при снятии с поддержки и удалении только 1 плана обмена УдалитьОбменРозницаБухгалтерия20 баг с ТИИ пропадает.
Т.е. после последующего обновления без этого плана обмена до версии 3.0.65.69 ТИИ базы проходит успешно.

Но проблема обновления в предприятии, описанная в (0), всё еще остается.
   jk3
 
48 - 23.10.18 - 23:39
(33) >В крайнем случае попробовать на копии удалить все узлы обмена с отключенным контролем целостности и попробовать обновиться.

Удалил обработкой все непредопределенные элементы всех планов обмена (у которых свойство ЭтотУзел = Ложь) перед обновлением.
Та же ошибка после обновления при обработке данных в предприятии.
   jk3
 
49 - 25.10.18 - 16:31
(36) >как вариант попробуй в файловый вариант сконвертить и там обновить

На файловой базе та же ошибка.
ТИИ и chdbfl и до, и после(!) обновления рапортуют, что проблем нет.

При этом, если при появлении ошибки обновления в предприятии открыть обработкой элемент плана обмена Полный и попробовать записать -- вываливается в ошибку SDBL.
 
 Рекламное место пустует
   jk3
 
50 - 31.10.18 - 23:41
Ответ поддержки 1С, цитата:
Проблема возникает, если загрузить dt сформированной более новой версией (в более новом режиме совместимости). Теперь при попытке загрузить такой dt возникает ошибка. Базы, сформированные такой загрузкой ранее некоректны и с ним работать не получится. Исправление на них не влияет.

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

Если это не так, то следует прислать dt вашей базы, сделанные до обновления и на платформе 8.3.10

Помогите перевести этот ответ на русский.
Что надо сделать?

P.S. Я им отправлял .bak-файл MSSQL-бэкапа текущей базы до обновления.
   jk3
 
51 - 09.11.18 - 11:44
Новости с полей: "Ваше сообщение зарегистрировано для расследования в отделе разработки <номер>".
   Mankubus
 
52 - 21.11.18 - 11:26
(51) не удалось решить проблему?
   jk3
 
53 - 30.11.18 - 16:20
(52) Прошло 3 недели, ответа от отдела разработки 1С нет.
Напомнил им сегодня о себе.
Посмотрим на следующей неделе что ответят.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует