Имя: Пароль:
1C
1С v8
Удаление записей справочника
,
0 trialex3
 
15.10.21
10:49
Добрый день. Какой самый правильный и/или самый быстрый способ удалить все данные в справочнике (40к записей). В гугле все примеры через объект.Удалить() делаются - неужели это оптимальный вариант? Это же очень долго.
1 ДенисЧ
 
15.10.21
10:49
А ссылки кто проверять будет?
Самый быстрый это drop database, но он тебя не устроит
2 Bigbro
 
15.10.21
10:51
а если УРБД?
3 exwill
 
15.10.21
10:52
(1) truncate table, не путай людей
4 trialex3
 
15.10.21
10:53
(1) Ссылок на него точно нету нигде
5 exwill
 
15.10.21
10:56
(4) Есть команда очистить таблицу. Называется truncate table. Вот ее тебе и надо выполнить
6 ДенисЧ
 
15.10.21
10:57
(3) (5) Фу. Полумеры. А если там несколько справочников?
7 trialex3
 
15.10.21
10:58
(5) Это у какого объекта такая команда?
8 exwill
 
15.10.21
10:59
(7) Это у базы данных такая команда. На языке SQL
9 successful
 
15.10.21
10:59
(0) 40 К это же копейки по времени... в чем вопрос то?
10 ДенисЧ
 
15.10.21
11:01
(7) У ADODB.Connection()
11 trialex3
 
15.10.21
11:03
(9) Да пол часа у меня удаляет
12 Bigbro
 
15.10.21
11:08
полчаса разве это много?
13 acht
 
15.10.21
11:09
(11) > пол часа
Ты на форуме сидишь дольше.
14 trialex3
 
15.10.21
11:09
Блин это странно, что такой команды нету в 1С. Пускай это неправильно и вся ответственность лежит на программисте, но было бы полезно удалять все махом.
15 trialex3
 
15.10.21
11:10
(13) Ну так ща пол-часа, а потом еще пол-часа. И еще.
16 youalex
 
15.10.21
11:10
(11) А через УдалениеОбъекта ?
Типа Удаление = Новый УдалениеОбъекта(СсылкаСправочника);
Удаление.ОбменДанными.Загрузка = Истина;
Удаление.Записать()
17 Aleksey
 
15.10.21
11:12
(14) у РС есть, но там это скорее побочный продукт
18 DimVad
 
15.10.21
11:13
(14) 1. Заходите в ИР
2. Пункт меню "Структура хранения БД"
3. Выбираете нужных справочник, регистр и т.д.
4. "Очистка таблиц СУБД..."

:-)
19 acht
 
15.10.21
11:19
(15) > а потом еще пол-часа. И еще

Стесняюсь спросить, а зачем ты заводишь по 40к элементов справочников чтобы потом их удалять?
Мсье мазохист?
20 Bigbro
 
15.10.21
11:19
(15) если тебе постоянно раз за разом требуется удалять справочники такими объемами - то что-то у вас пошло не так. совсем не так.
21 ДенисЧ
 
15.10.21
11:20
(18) И тут "введите пароль sa"...
22 Базис
 
naïve
15.10.21
11:21
(18) Даже проще. В "ИР" из конструктора запроса выделяем столбец, нажимаем готовую кнопку - выделенное попадает в "Групповую обработку объектов", там выбираем или просто удаление, или с контролем ссылок.
23 trialex3
 
15.10.21
11:21
(20) Согласен. Я бы тут использовал регистр, но меня поставили перед фактом. Есть давно функционирующий справочник. Его иногда нужно будет очищать. Сделай кнопку.
24 DimVad
 
15.10.21
11:21
(21) Естественно. А что, работают без админского доступа в скуль ?
25 acht
 
15.10.21
11:22
(23) > меня поставили перед фактом
Сделай тоже самое. Поставь их перед фактом - полчаса.
26 trialex3
 
15.10.21
11:23
(16) Ща попробую)
27 DimVad
 
15.10.21
11:24
(22) Но таким способом удаление будет происходить с "одинэсовской скоростью".
Мне недавно нужно было зачистить РС "Версии объектов". База УПП - много лет :-)
Через стандарное "набор записей" не удалилось за ночь. А ИР формирует "транкат"...
28 ДенисЧ
 
15.10.21
11:28
(24) Вот, например, у меня нет сейчас админского в скуль. Слава Элберет, Пресветлой Гилтониэль...
29 DimVad
 
15.10.21
11:30
(28) Я просто предложил вариант. Если он человеку подходит - можно воспользоваться.
30 youalex
 
15.10.21
11:33
(27) РС можно и из конфигуратора грохнуть) Со ссылочными объектами сложнее.
31 trialex3
 
15.10.21
11:34
(16) Но это так же по одной ссылке? Там конечно можно в массив сначала выгрузить все ссылки, но надо тестировать - будет ли это быстрее.
32 youalex
 
15.10.21
11:37
(31) так же по одной, 1С по другому не умеет,  но должно быть быстрее.
33 DimVad
 
15.10.21
11:41
(30) Можно грохнуть. Но потом надо будет добавить, правда. И там могут быть вопросы на тему "в какой степени конфа на поддержке".

В моём случае обновлённая конфа не сохранялась ибо РС выдавал "дубли". Если бы я его грохнул в конфигураторе (но не зачищал в БД) то после сохранения конфы пришлость бы делать объединение конфигурации чтобы его восстановить.

А через ИР - в режиме предприятия, абсолютно мгновенно и без проблем.
34 Обработка
 
15.10.21
11:48
Все относительно в мире. На днях удалял записи с РС четверть ярда было.
40к это копейки. И пол часа это Сходить попить кофе и потом обсудить с бухом одну мелкую проблему.
35 vova1122
 
15.10.21
11:48
А если удалять в транзакции, например по 100-500 элементов, не будет быстрее?
36 Обработка
 
15.10.21
11:49
+ 34 Не все удалял а удалял отбором по условию.
И сейчас тоже удаляю в копии записи пока в конфе код смотрю.
37 Dmitrii
 
гуру
15.10.21
12:00
(23) >> меня поставили перед фактом. Есть давно функционирующий справочник. Его иногда нужно будет очищать. Сделай кнопку.

Предложи им сделать фоновое задание по очистке этого справочника.
И варианты запуска - по кнопке в несколько потоков, по кнопке в один поток, регламентным заданием (само по расписанию).
Пользователь нажал кнопку и пошел делать свои дела, а оно пусть себе удаляет хоть весь день.
38 trialex3
 
15.10.21
13:45
(32) Да, быстрее. Тот же объем удалил раз в 6 быстрее.
39 trialex3
 
15.10.21
13:45
(32) Спасибо!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн