![]() |
![]() |
![]() |
|
v8: Быстрое удаление объектов 1С? | ☑ | ||
---|---|---|---|---|
0
CityCat76
11.02.09
✎
13:13
|
Платформа: 8.1 УПП (SQL)
Задача: Необходимо удалить "х" типов справочников с отбором по реквизиту. Можно обработкой через "Запрос-ПолучитьОбъект-Удалить", но удаляет долго если объектов много (более 100тыс. удаляет 30 мин.). Вопрос: Существуют ли способы удаления объектов 1С более производительнее, возможно на уровне SQL? или дайте ссылку почитать. ...Поиск не дал результатов |
|||
1
Serg_1960
11.02.09
✎
13:19
|
Если "очень быстро" удалять объекты - то тогда можно также быстро получить сообщение "Объект не найден" :)
|
|||
2
Svante Sturre
11.02.09
✎
13:25
|
Попробуй использовать процедуру УдалитьОбъекты, которая уничтожает элементы по параметру - списку ссылок. Ссылки можно получить, например, запросом.
Заодно расскажешь, насколько быстрее проходит удаление относительно способа поэлементного удаления. |
|||
3
Serg_1960
11.02.09
✎
13:25
|
Используйте комбинацию: Запрос - НайтиПоСсылкам(Массив) - УдалитьОбъекты(Массив)
|
|||
4
CityCat76
11.02.09
✎
13:28
|
(1) :)
(2,3) Спасибо, попробую |
|||
5
Serg_1960
11.02.09
✎
13:35
|
Вы чистите справочники? Хотите узнать самый быстрый способ?
|
|||
6
CityCat76
11.02.09
✎
13:39
|
(5) интересно...
|
|||
7
Serg_1960
11.02.09
✎
13:47
|
Выгрузить конфу(а) - удалить справочник в конфе - обновить конфу БД - загрузить конфу(а) - обновить конфу БД :))
Если без шуток, то используя обработку StrBaseSQL.epf узнать как Ваш справочник называется в SQL базе... и убить данные командами "TRUNCATE TABLE ИмяТаблицы" и "UPDATE STATISTICS ИмяТаблицы" |
|||
8
CityCat76
11.02.09
✎
13:59
|
(7) этот способ самый лучший :)), но необходимо удалить не все объекты, а с отбором по реквизиту.
А в этой обработке(StrBaseSQL.epf) можно отобрать не все элементы? |
|||
9
Gamm
11.02.09
✎
14:00
|
||||
10
Gamm
11.02.09
✎
14:05
|
С помощью Enterprise Integrator:
1. Формируем запрос с отбором нужных элементов 2. Трассировкой получаем запрос SQL 3. SQL-запрос переделываем на DELETE |
|||
11
Zixxx
11.02.09
✎
14:08
|
(10) думаю будет незаметно быстрее, все траблы в записи на винт, поэтому заметный самый быстрый способ это ипануть таблицу целиком
|
|||
12
Sammo
11.02.09
✎
14:19
|
(7) В 8.1 см процедуру глобального контекста ПолучитьСтруктуруХраненияБазыДанных()
|
|||
13
Gamm
11.02.09
✎
14:19
|
(11) Всю таблицу конечно быстрее но в (0) указано что нужно с отбором по реквизиту. А по сравнению с удалением средствами 1С, SQL DELETE выигрывает в разы за счет (по моему мнению) отсутствия накладных расходов на проверку сылочной целостности.
|
|||
14
Zixxx
11.02.09
✎
14:25
|
(13) в 1с можно и без ссылочной целостности грохать тоже будет очень бысто, в 1с траблы будут если на группу встаешь и ручками например пометку делаешь тогда да, там тригеры наверное какие-то запускаются.
|
|||
15
CityCat76
11.02.09
✎
16:00
|
(2) Разница между УдалитьОбъекты(Массив) и поэлементного удаления по времени никакой.
Остается как следует изучить вариант (10) |
|||
16
H A D G E H O G s
11.02.09
✎
16:02
|
(10) Интересно, как живут локальные временные таблицы ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |