Вс, 21.12.2025, 22:16:11
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Подбор и обработка объектов. Удалить через СУБД
yasnovidyashiiДата: Пн, 04.03.2024, 15:37:05 | Сообщение # 1
Полковник
Группа: Проверенные
Сообщений: 180
Репутация: 236
Статус: Оффлайн
Впервые пользуюсь удалением через СУБД. Но так как это копия базы, а записей в регистре сведений очень много (под 2 миллиона), решил попробовать.

Примерно через 5 минут после нажатия на кнопку "Удалить через СУБД" получаю ошибку:

Код
Ошибка при вызове метода контекста (Open)
{ОбщийМодуль.ирОбщий.Модуль(28473)}:            РезультатЗапроса.Open(ТекстЗапроса, СоединениеADO, adOpenStatic, adLockOptimistic, adCmdText);
{Обработка.ирПодборИОбработкаОбъектов.Форма.Удалить.Форма(378)}:    КолонкиКандидатов = ирОбщий.ВыполнитьЗапросЭтойСУБДЛкс(ТекстПоискаИмениВТ,,,,,, мСоединениеСУБД);
{Обработка.ирПодборИОбработкаОбъектов.Форма.Удалить.Форма(298)}:        УдалитьОбъектыЧерезСУБД(Запрос, ИмяТаблицы,, ИмяТаблицыКлючей, ТекстСУБД, ОтключенныеИтоги);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания запроса истекло






Добавлено (04.03.2024, 15:43)
---------------------------------------------
И еще. В каком случае доступен выбор количества потоков обработки объектов? При выполнении на сервере?
Чекбокс "Выполнять на сервере" в моем случае недоступен, несмотря на то, что ИР установлены в режиме "Конфигурация", а в описании чекбокса написано, что функция недоступна в портативном варианте.
Прикрепления: 3004740.png (18.9 Kb)


Сообщение отредактировал yasnovidyashii - Пн, 04.03.2024, 15:44:26
 
tormozitДата: Пн, 04.03.2024, 16:00:12 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 7259
Репутация: 193
Статус: Оффлайн
Цитата
Инструменты разработчика. Асинхронность запрещена: Да
Либо сеанс запущен с параметром запрета асинхронности.
Либо она автоматически отключена кодом ИР из-за проявления ошибки платформы. Тогда ИР выводит соответствующее сообщение.
 
tormozitДата: Пн, 04.03.2024, 16:01:34 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 7259
Репутация: 193
Статус: Оффлайн
Обработка "Удалить через СУБД" выполняется через собственный механизм и не использует многопоточность.
 
yasnovidyashiiДата: Пн, 04.03.2024, 16:05:48 | Сообщение # 4
Полковник
Группа: Проверенные
Сообщений: 180
Репутация: 236
Статус: Оффлайн

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

Вопрос про многопоточность звучал отдельно от "Удаления через СУБД". Оно в целом недоступно.
 
tormozitДата: Пн, 04.03.2024, 19:53:51 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 7259
Репутация: 193
Статус: Оффлайн
В консоли запросов ИР в запросе ADO подключись к собственной базе 1С кнопкой "Эта БД".
Выполни запросы
1. select count(*) from tempdb.sys.tables
2. select count(*) from tempdb.sys.columns
Желательно делать это сразу после возникновения ошибки, если она не стабильно появляется.

Прикрепления: 3065823.png (30.1 Kb)
 
yasnovidyashiiДата: Вт, 05.03.2024, 08:31:41 | Сообщение # 6
Полковник
Группа: Проверенные
Сообщений: 180
Репутация: 236
Статус: Оффлайн
Цитата
Либо сеанс запущен с параметром запрета асинхронности.
Либо она автоматически отключена кодом ИР из-за проявления ошибки платформы. Тогда ИР выводит соответствующее сообщени

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

Код
Ошибка при вызове метода контекста (Open)
{ОбщийМодуль.ирОбщий.Модуль(28477)}:            РезультатЗапроса.Open(ТекстЗапроса, СоединениеADO, adOpenStatic, adLockOptimistic, adCmdText);
{Обработка.ирПодборИОбработкаОбъектов.Форма.Удалить.Форма(411)}:    ирОбщий.ВыполнитьЗапросЭтойСУБДЛкс(ТекстСУБД,,,,,, мСоединениеСУБД);
{Обработка.ирПодборИОбработкаОбъектов.Форма.Удалить.Форма(298)}:        УдалитьОбъектыЧерезСУБД(Запрос, ИмяТаблицы,, ИмяТаблицыКлючей, ТекстСУБД, ОтключенныеИтоги);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Invalid column name '_Q_000_F_000_TYPE'.


Цитата
1. select count(*) from tempdb.sys.tables
2. select count(*) from tempdb.sys.columns

1. 5 636
2. 48 717
 
tormozitДата: Вт, 05.03.2024, 08:52:41 | Сообщение # 7
Генералиссимус
Группа: Администраторы
Сообщений: 7259
Репутация: 193
Статус: Оффлайн
Покажи в консоли кластера серверов 1С сколько времени удерживается твое соединение СУБД
 
yasnovidyashiiДата: Вт, 05.03.2024, 09:13:04 | Сообщение # 8
Полковник
Группа: Проверенные
Сообщений: 180
Репутация: 236
Статус: Оффлайн
Цитата
Покажи в консоли кластера серверов 1С сколько времени удерживается твое соединение СУБД

Это который из многочисленных параметров соединения нужен? Не очень понял просьбу.
Сегодняшняя ошибка, если что, возникает практически сразу после согласия со всеми предупреждениями. В пределах 10 секунд.
 
tormozitДата: Ср, 06.03.2024, 23:02:43 | Сообщение # 9
Генералиссимус
Группа: Администраторы
Сообщений: 7259
Репутация: 193
Статус: Оффлайн
По ошибке "Invalid column name '_Q_000_F_000_TYPE' нужен текст из переменной ТекстЗапроса, полное имя таблицы регистра и все колонки его таблицы с типами.
 
tormozitДата: Ср, 06.03.2024, 23:08:01 | Сообщение # 10
Генералиссимус
Группа: Администраторы
Сообщений: 7259
Репутация: 193
Статус: Оффлайн
Цитата yasnovidyashii ()
который из многочисленных параметров соединения нужен?
Захвачено СУБД

Прикрепления: 2747546.png (3.7 Kb)
 
yasnovidyashiiДата: Чт, 07.03.2024, 09:35:55 | Сообщение # 11
Полковник
Группа: Проверенные
Сообщений: 180
Репутация: 236
Статус: Оффлайн
Цитата tormozit ()
По ошибке "Invalid column name '_Q_000_F_000_TYPE' нужен текст из переменной ТекстЗапроса, полное имя таблицы регистра и все колонки его таблицы с типами.

ТекстЗапроса =

Код
CREATE TABLE #tt3(
      [_Q_001_F_000RRef] BINARY(16) NULL
    , [_Q_001_F_001RRef] BINARY(16) NULL
    , [_Q_001_F_002RRef] BINARY(16) NULL
    , [_Q_001_F_003RRef] BINARY(16) NULL
)
;
exec sp_executesql N'INSERT INTO #tt3 WITH(TABLOCK) (_Q_000_F_000_TYPE, _Q_000_F_000_RTRef, _Q_000_F_000_RRRef, _Q_000_F_001) SELECT
T1._Fld22345_TYPE,
T1._Fld22345_RTRef,
T1._Fld22345_RRRef,
T1._Fld22346
FROM dbo._InfoRg22344 T1 WITH(NOLOCK)
WHERE (T1._Fld22349 < @P1)',N'@P1 datetime2(3)','2024-02-01 00:00:00'

По поводу имени таблицы и его колонок, из инструмента "Структура хранения БД" (закладка Поля) вытащил вот такое.
Но колонка с типами тут пустая.



Поэтому эту часть попробую решить вот так.



Цитата tormozit ()
Захвачено СУБД

Так понимаю, это будет актуально, если изначальная ошибка "время ожидания запроса истекло".
Прикрепления: 8978209.png (17.1 Kb) · 3033504.png (68.4 Kb)
 
yasnovidyashiiДата: Чт, 07.03.2024, 09:58:15 | Сообщение # 12
Полковник
Группа: Проверенные
Сообщений: 180
Репутация: 236
Статус: Оффлайн
P.S. Самый "сложный" тип у измерения Объект. Из Конфигуратора он выглядит, как СправочникСсылка, ДокументСсылка.

Прикрепления: 4154026.png (5.8 Kb)
 
tormozitДата: Чт, 07.03.2024, 22:20:46 | Сообщение # 13
Генералиссимус
Группа: Администраторы
Сообщений: 7259
Репутация: 193
Статус: Оффлайн
Причину ошибки нашел https://www.hostedredmine.com/issues/981927
 
tormozitДата: Пн, 11.03.2024, 00:07:10 | Сообщение # 14
Генералиссимус
Группа: Администраторы
Сообщений: 7259
Репутация: 193
Статус: Оффлайн
Исправлено в 7.18
 
yasnovidyashiiДата: Пн, 11.03.2024, 11:30:02 | Сообщение # 15
Полковник
Группа: Проверенные
Сообщений: 180
Репутация: 236
Статус: Оффлайн
Цитата tormozit ()
Исправлено в 7.18

Теперь вот такая возникает:

Код
Не удалось найти временную таблицу в СУБД
{Обработка.ирПодборИОбработкаОбъектов.Форма.Удалить.Форма(403)}:        ВызватьИсключение "Не удалось найти временную таблицу в СУБД";
{Обработка.ирПодборИОбработкаОбъектов.Форма.Удалить.Форма(298)}:        УдалитьОбъектыЧерезСУБД(Запрос, ИмяТаблицы,, ИмяТаблицыКлючей, ТекстСУБД, ОтключенныеИтоги);


 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: