IE 2016

Очистка базы средствами SQL

Опубликовал Cobranet123 в раздел Администрирование - Чистка базы

Быстрая очистка базы 1С средствами SQL. Область применения: Любая конфигурация 1С

Помните, что манипулирование данными посредством SQL-запросов запрещено политикой фирмы 1С.

Итак, описание обработки.

Бывают нередко случаи, когда ваши базы данных хранятся на SQL-сервере и необходимо подготовить одну из баз определенным образом, очистив не нужные данные из нее. И тут на помощь придет данная обработка. С ее помощью вы сможете:

1) Удалить документы:

 - Удалить все документы из базы, либо интересующий вас вид документов.

 - Удалить документы за определенный период

 - Удалить документы по Организации

2) Удалить справочники

3) Удалить регистры сведений

4) Удалить регистры накопления, регистры бухгалтерии, регистры расчета.

5) Очистить последовательность документов, бизнес-процессы, задачи

Обновление (03.04.2012) 

Обновлена обработка.

Добавлено удаление по определенному документу!!!. Вид документа можно выбирать, либо из списка документов, либо, если отмечено все, то самим выбирать вид документа при выборе.

Обновление (28.11.2012) 

Добавлена версия для платформы 1С 8.1

Обновление (13.12.2012) 

Добавлены дополнения к объектам метаданных выводимых на форме, а именно:

- Добавлено наименование таблицы в терминах СУБД (имя таблицы в SQL-сервере)

- Добавлен размер занимаемый таблицей в SQL-сервере

Обновление (23.10.2013) 

- Добавлено удаление элементов справочников с отбором по реквизитам удаляемого справочника

- Добавлено удаление записей регистров накопления за период

- Исправлены некоторые ошибки при работе

Обновление (18.11.2013) 

- Добавлено удаление документов "Только помеченные на удаление", т.е. удаление документов с признаком ПометкаУдаления = ИСТИНА

Обновление (09.02.2015) 

Небольшая доработка:

- Добавлена возможность  "Не ограничивать время ожидания выполнения команды SQL", понадобится тем, у кого большие объемы данных хранятся в регистрах и при попытке их удалить приходит ответ от сервера SQL "... время ожидания истекло ..."

Обновление (27.05.2016) 

Доработка:

- Добавлена возможность  "Не ограничивать время ожидания выполнения команды SQL" для всех объектов конфигурации, а не только для регистров накопления.

Обновление (06.06.2016) 

Доработка:

- Исправлена ошибка с удалением справочников.

- Добавлена возможность предварительно проверить соединение с SQL не выполняя каких-либо удалений.

- Исправлены мелкие недочеты.

Обновление (15.09.2016) 

Доработка:

- Изменен механизм удаления документов, теперь документы можно удалять по произвольным отборам.

- Исправлены ошибки с запросом размеров таблиц SQL по регистрам сведений, накопления, бухгалтерии.

- Исправлены мелкие недочеты.

Обновление (16.09.2016) 

Доработка:

- Добавлено удаление табличных частей справочников при удалении элементов справочников.

Важное: После того, как удалите какие-либо данные из базы, с помощью данной обработки, необходимо обязательно выполнить "Тестирование и Исправление" конфигурации.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Очистка базы SQL для 8.2 (1.3.7)
.epf 32,76Kb
15.09.16
225
.epf 1.3.7 32,76Kb 225 Скачать
Очистка базы SQL для 8.1
.epf 25,98Kb
15.09.16
72
.epf 25,98Kb 72 Скачать

См. также

Лучшие комментарии

1. fishca (файл скачал) 27.03.2012 21:43
Помните, что манипулирование данными посредством SQL-запросов запрещено политикой фирмы 1С.


А нас рать :)
# Ответить
35. Paul_Nevada 30.11.2012 11:39
(34) adhocprog, Молодец! Какая МЫСЛЬ!!!!!)))
+ 1 [ adhocprog; ]
# Ответить
34. adhocprog 29.11.2012 11:57
обработка зверь )
добавить что ли во внешние отчеты и обработки? :)
Ответили: (35)
+ 1 [ stsasha87; ]
# Ответить
36. Abadonna 04.12.2012 08:35
(2) Если нужна "голая" конфа, не проще cf загрузить в новую базу?
Ответили: (37)
+ 1 [ Caspersky; ]
# Ответить
30. brunet (файл скачал) 28.11.2012 12:42
Для очень больших баз это незаменимая обработка.
+ 1 [ Кафтан; ]
# Ответить

Комментарии

1. fishca (файл скачал) 27.03.2012 21:43
Помните, что манипулирование данными посредством SQL-запросов запрещено политикой фирмы 1С.


А нас рать :)
# Ответить
2. knowikDen 29.03.2012 04:48
очень поможет если нужна "голая" конфа
Ответили: (3) (36)
# Ответить
3. Cobranet123 29.03.2012 05:40
(2) На самом деле, вариантов применения данной обработки может быть несколько. Вот еще один вариант применения: Есть база в которой 2 (или более организаций) организации и вам необходимо разделить базу на количество организаций. Делаете копию базу и в каждой из баз очищаете все по нужным организациям.
# Ответить
4. Murom (файл скачал) 29.03.2012 10:18
Где-то уже пробегала похожая обработка, правда только по чистке документов. Называлась вроде "БыстроеУдалениеДокументов.epf". Но там только документы можно было удалять. А тут видно функционал расширен. Надо будет попробовать как-нибудь.
Ответили: (9) (62)
# Ответить
5. pss1985 29.03.2012 10:47
что то не пойму, документы удаляются по организации, за период. А регистры? такого отбора нет???
смысл тогда удаления документов по организации?
Ответили: (8)
# Ответить
6. y22-k (файл скачал) 29.03.2012 10:51
Молодец хорошая вещь
# Ответить
7. Murom (файл скачал) 29.03.2012 11:51
Вот еще заметил, что нету отбора расширенного. Если б можно было отборы настраивать, так вообще бы обработка была "МастХев"
Ответили: (9)
# Ответить
8. Cobranet123 29.03.2012 12:54
(5)В описании же сказано, что после использования обработки необходимо ТиИ, если удаляешь документы, то в регистрах остаются записи, после ТиИ в регистрах этих записей уже не остается, только тестирование и исправление надо делать с параметрами "Очищать ссылки", "Удалять объект"
Конечно же не забываем делать копии баз предварительно...
# Ответить
9. Cobranet123 29.03.2012 12:59
(4)Видел данную обработку, именно она и сподвигла меня написать эту обработку с разными отборами.
(7)В планах все это конечно же есть )))
Первым в списке очередности выполнения сейчас стоит "отбор в документах по определенному документу или нескольким документам" и удаление всех ссылающихся на этот документ(ы) записей из регистров и т.д., чтобы не надо было ТиИ делать ради одного документа например или списка документов ))
# Ответить
10. Cobranet123 03.04.2012 10:45
Вышло обновление обработки (03.04.2012)
Появилась возможность удаления определенного документа!
# Ответить
12. evgeniti (файл скачал) 14.04.2012 19:18
А после Truncate table например справочника как потом восстанавливаются предопределенные элементы? ТиИ помогает?
# Ответить
13. Djonny (файл скачал) 11.05.2012 19:37
При попытке выполнить очистку базы, вот такая ошибка:
{ВнешняяОбработка.ОчисткаБазы.МодульОбъекта(245)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL-сервер не существует, или отсутствует доступ.
Подскажите, как решить данную проблему...
Ответили: (14)
# Ответить
14. Cobranet123 14.05.2012 15:01
(13) Djonny,
Это говорит о том что у вас нету доступа к серверу SQL, к серверу локально подключаетесь или удаленно где он находится? Серверная проверка подлинности на SQL-сервере настроена как?
Ответили: (16)
# Ответить
15. Djonny (файл скачал) 14.05.2012 20:18
(14)есть два сервера: сервер sql и сервер 1с. Оба сервера в одной сети. Обработку запускаю на сервере 1с, указываю сервер sql и пользователя sql. Серверная политика - смешанная (SQL и windows).
# Ответить
16. Djonny (файл скачал) 14.05.2012 21:18
(14) сейчас попробовал запустить обработку с того сервера, где стоит sql - эффект тот же...
Ответили: (17)
# Ответить
17. Cobranet123 15.05.2012 05:53
(16) Djonny,
Проверьте открыты ли порты, может брандмауэр не пускает.
Еще вариант, попробуйте там, где имя сервера стоит набрать ip-адрес сервера SQL, если на самом сервере SQL пробуете, то попробуйте в имени сервера указать 127.0.0.1
Ответили: (18)
# Ответить
18. Djonny (файл скачал) 15.05.2012 08:27
(17) Спасибо. Но все оказалось гораздо проще: По умолчанию в параметры подключения проставляются данные сервера 1С. (Имя сервера и имя БД). Так вот менял только название сервера, а имя БД не трогал. Оказалось что на сервере БД и на сервере 1С просто по разному называется база:) вот поэтому и возникала эта ситуация...
Спасибо.
# Ответить
19. Smaylukk (файл скачал) 22.05.2012 03:00
Спасибо, отличная обработка. 300 тысяч записей удалила очень быстро :)
Правда, я думаю стоило бы выложить сюда также версию для 8.1, так как обратного конвертирования обработок нету.
# Ответить
20. kondrat1C (файл скачал) 21.06.2012 11:00
Однозначно! Версия под 8.1 нужна!
А то не удается схему СКД 8.2 перенести в 8.1
Автор, организуй пожалуйста версию под 8.1!
Ответили: (21)
# Ответить
21. Cobranet123 21.06.2012 11:08
(20) kondrat1C,
Здравствуйте.
Ок, постараюсь перенести, но пока даже не знаю когда смогу это сделать, завал на работе...
Ответили: (29)
# Ответить
22. kondrat1C (файл скачал) 21.06.2012 11:53
ну а может тогда хотя бы подскажете как макет с СКД из 8.2 перенести в 8.1?
со всем остальным сложности не должно быть
# Ответить
23. kondrat1C (файл скачал) 22.06.2012 12:15
а кстати, а как очищаются движения в зависимых регистрах накопления?
# Ответить
24. testmode 22.06.2012 12:38
Первое сообщение должно быть обязательным к прочтению, ибо Вы не разработчик и можете что нибудь упустить при таком вмешательстве в структуру SQL. Обидно будет если ошибка обнаружится через определенное время когда будет уже поздно использовать откат на предыдущую копию. Как говорится Скорость тут не помощьник.
# Ответить
25. knowikDen 07.08.2012 06:05
Здравствуйте.

Выбираю:
- Очистить за период документы, журналы документов
- выставляю период
- в списке документов убираю галки с документов которые не нужно очищать

Запускаю, в итоге все документы за период удалены (и те которые были не отмечены)

Что я сделал не так ?
Ответили: (27)
# Ответить
26. Ольга_tmp 07.08.2012 06:30
Отличные вещи порою находятся на инфостарте
# Ответить
27. kondrat1C (файл скачал) 15.08.2012 08:54
(25) knowikDen, ну это как вариант, но только более медленный
# Ответить
29. a1ex4ndr (файл скачал) 21.11.2012 10:23
(21)
Здравствуйте.
Ок, постараюсь перенести, но пока даже не знаю когда смогу это сделать, завал на работе...

Пока не получилось под 8.1 версию сделать?
# Ответить
30. brunet (файл скачал) 28.11.2012 12:42
Для очень больших баз это незаменимая обработка.
+ 1 [ Кафтан; ]
# Ответить
31. Cobranet123 28.11.2012 12:43
Добавлена версия для платформы 1С 8.1
Прошу пожалуйста пробовать, если будут ошибки, пишите, буду исправлять по мере возможностей ))
# Ответить
32. KliMich 29.11.2012 09:56
Однозначно плюс! Для "киломентовых" баз она незаменима! Особенно когда надо облегчить базу (удалить документы, а база ~200 Гб)
# Ответить
34. adhocprog 29.11.2012 11:57
обработка зверь )
добавить что ли во внешние отчеты и обработки? :)
Ответили: (35)
+ 1 [ stsasha87; ]
# Ответить
35. Paul_Nevada 30.11.2012 11:39
(34) adhocprog, Молодец! Какая МЫСЛЬ!!!!!)))
+ 1 [ adhocprog; ]
# Ответить
36. Abadonna 04.12.2012 08:35
(2) Если нужна "голая" конфа, не проще cf загрузить в новую базу?
Ответили: (37)
+ 1 [ Caspersky; ]
# Ответить
37. Cobranet123 04.12.2012 08:46
(36) Abadonna,
Если нужна "голая" конфа с текущими релизами, то да, проще cf накатить.
А если нужна точно такая же без документов, например еще одну организацию заводим (еще встречаются клиенты кто разные фирмы в разных базах ведет)? с помощью данной обработки мы как раз и сможем создать довольно быстро такую конфигурацию сохранив нужные нам справочники. Конечно, вариантов использования данной обработки довольно много ))
Ответили: (38)
# Ответить
38. Abadonna 04.12.2012 09:03
(37) Cobranet123, мой коммент относился к конкретно "голой", как и написано в /2/
А товарищи восьмерочники заново изобретают то, что давно было в 7.7 "изобретено".
Скуль - он и в Африке скуль.
Ответили: (39)
# Ответить
39. knowikDen 04.12.2012 10:10
(38) Abadonna, я и писал как раз для случаев когда нужно "без документов"
# Ответить
40. Abadonna 04.12.2012 10:16
Я читаю, что написано:
2. knowikDen 29.03.12 4:48
очень поможет если нужна "голая" конфа

Без всяких там "этим стихотворением Пушкин хотел сказать..."
# Ответить
41. dimdmitry 11.12.2012 10:05
Как альтернатива мне ещё два года назад помогла http://infostart.ru/public/59489/ (тоже удаляет, но там информация в полном объеме), если и работать напрямую с SQL необходимы данные по именам таблиц и их размерам, и есть не только таблицы самих объектов конфигурации, но и связанные, иногда перед очисткой интересно посмотреть. Как Ваша поступает с ними?
# Ответить
42. Cobranet123 11.12.2012 11:14
(41)
В представленной вами обработке, она удаляет целиком данные из всей таблицы базы SQL, у меня в обработке такое тоже можно делать, например с документами это пункт 1. (Выбираете интересующий вас вид документа и удаляете целиком таблицу).
1. Для чего вам видеть объем таблиц базы SQL ?
2. Для чего вам имена таблиц? Вы хотите 1С-ными средствами обращаться к определенным именам таблиц SQL ?
Это немного другая область работы с SQL (определение узких мест в базе, посмотреть насколько разрослись таблицы базы) - вот для чего нужна обработка на которую вы ссылаетесь.
Можно их например, в паре использовать. Смотрите объем таблицы документов и с помощью моей обработки удаляете либо за период, либо по фирме данные определенной вами ранее таблицы.
При удалении например определенного документа (выбранных журнала документов и вида документов) удалятся также записи из таблиц регистров по которым проходят движения по данному документу.
# Ответить
43. Cobranet123 14.12.2012 05:44
Обновление (13.12.2012)

Добавлены дополнения к объектам метаданных выводимых на форме, а именно:
- Добавлено наименование таблицы в терминах СУБД (имя таблицы в SQL-сервере)
- Добавлен размер занимаемый таблицей в SQL-сервере, а также можно просмотреть размер занимаемый таблицей с обновлением сведений об использовании места на диске.
# Ответить
44. Арах (файл скачал) 14.12.2012 11:48
Хорошая обработка, вот ещеб добавил чтоб удалялись движения документа вмести с самим документом и вобщеб цены небыло...
Ответили: (45)
# Ответить
45. Cobranet123 14.12.2012 11:57
(44) Арах,
На самом деле движения при удалении документа тоже удаляются ))
Попробуйте удалить какой-либо документ и найти в регистрах по которым он проводился движения по этому документу))) Вы их не найдете.
Ответили: (48)
# Ответить
46. Арах (файл скачал) 14.12.2012 12:05
при попытке удалить определенный документ

{ВнешняяОбработка.ОчисткаБазы.МодульОбъекта(797)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]Недопустимое имя столбца "_IDRRef".
Ответили: (47)
# Ответить
47. Cobranet123 14.12.2012 12:11
(46) Арах,
Какой вид документа пытаетесь удалить? в какой конфигурации?
Дайте больше данных пожалуйста.
Ответили: (49)
# Ответить
48. Арах (файл скачал) 14.12.2012 12:14
(45) Cobranet123,
на самом деле движения = записи в регистрах, все остаются только удаляются ссылки на регистратор:)
щас посмотрим что будет после ТиИ....
Ответили: (50)
# Ответить
49. Арах (файл скачал) 14.12.2012 12:17
(47) Cobranet123,
пытаюсь удалить определенную РеализациюТоваровУслуг в УТ11, документ не проведен.
# Ответить
50. Cobranet123 14.12.2012 12:21
(48) Арах,
Сейчас специально проверил еще раз, удаются записи в регистре целиком, а не только ссылка на регистратор.
Ну в любом случае после ТиИ если будет стоять удалять объекты, то он удалит их.
Ответили: (51)
# Ответить
51. Арах (файл скачал) 14.12.2012 13:51
(50) Cobranet123,
вот результат в регистре после удаления документов:

Прикрепленные файлы:

Безымянный.jpg
# Ответить
52. Арах (файл скачал) 14.12.2012 13:52
{ВнешняяОбработка.ОчисткаБазы.МодульОбъекта(797)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]Недопустимое имя столбца "_IDRRef".
такая ошибка возникает только при попытке удалить определенный док. если удалять за период то все ок.
# Ответить
53. Арах (файл скачал) 04.02.2013 10:14
когда поправшишь ошибки то?:)
# Ответить
54. Batman (файл скачал) 22.06.2013 16:53
Спасибо. Обработка очень помогла. Быстро, удобно.
# Ответить
55. edzz 22.06.2013 22:16
О, хорошая обработка, нужная.
# Ответить
56. angy (файл скачал) 01.07.2013 11:10
А кто нибудь делала замеры производительности? во сколько раз быстрее чем обычная чистка базы?
# Ответить
57. Cobranet123 01.07.2013 11:34
Как автор данной обработки, отвечаю, что специально замеров не делал.
А что вы сомневаетесь в том, что удаление данных посредством SQL запросов будет медленнее, чем очистка базы средствами 1С ?
Ответили: (59)
# Ответить
58. angy (файл скачал) 01.07.2013 12:32
Проделан большой труд, за что и СПАСИБО, но не хватает одной мелочи. Для полного счастья еще нужно чистить регистры накопления по периоду. В моем случае обрезается база с 2009 по 01,01,2013 года, за день по 500 реализаций одних только. И что мы имеем в итоге:
1) Документов нет(то что нужно)
2) Движения все остались, теперь нужно мудохатся с тестированием, либо делать доки не проведенными(тогда смысел этой обработки???Можно просто запустить непосредственное удаление и за неделю удалить), а вот если бы еще регистр почистился бы за период то было бы просто ВАВВВВ(даже если просто без привязки к документам)!!!
Ответили: (60) (88)
# Ответить
59. angy (файл скачал) 01.07.2013 12:50
(57) Cobranet123,

Сомневаюсь в том что Тестирование и исправление будет быстро ковырять три года, чую что надо будет еще писать SQL запрос по чистке регистра, хотя в этом полный нОль :(
# Ответить
60. Cobranet123 01.07.2013 13:03
(58) Мысль хорошая добавить возможность по удалению движений за период из регистров накопления. Сделаю себе пометку к реализации данного функционала.
Ответили: (61)
# Ответить
61. angy (файл скачал) 01.07.2013 13:13
(60) Cobranet123,

DELETE FROM [Имя_Базы].[dbo].[Имя_Таблицы]
WHERE _Period < '01.01.2013 00:00:00'

Решила всю проблему, при чем за пару сек(в отличии от тестирования, которое за пол часа ничего не сделал, а что бы сделать нужно будет сутки), но так как с Скулой не дружу то как то стремает там что то делать да и изучать ее лень, а было бы не плохо все запускать из 1С... В любом случае СПС за труды
# Ответить
62. angy (файл скачал) 01.07.2013 13:26
{ВнешняяОбработка.ОчисткаБазы.МодульОбъекта(464)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver]Время ожидания истекло

Как то удаляет выборочно... если помесячно то удаляет если за пару месяцев(4) то ошибка
Ответили: (63) (76)
# Ответить
63. Cobranet123 01.07.2013 13:38
(62)Недостаточно данных...
Что именно удаляете, что выбираете и т.д.
Ответили: (64)
# Ответить
64. angy (файл скачал) 01.07.2013 13:46
(63) Cobranet123,
Удаляется док."Реализация товаров" период - год , выдает вот такую ошибку, когда делаю помесячно прожовывает, может большой массив данных... хз. Конфа самописная, за месяц 23 тонны документов в среднем.(только реализации)
# Ответить
65. Cobranet123 23.10.2013 12:47
Новое обновление обработки от 23.10.2013
- Добавлено удаление элементов справочников с отбором по реквизитам удаляемого справочника (если хотите удалить целиком весь справочник, то выставляете галочку рядом с этим справочником и в отборе ничего не указываете, тогда удалятся все элементы справочника)
- Добавлено удаление записей регистров накопления за период
- Исправлены некоторые ошибки при работе
# Ответить
66. mzelensky (файл скачал) 30.10.2013 07:59
Доброго времени суток!
Замечательная обработка. Несколько вопросов:

1) Как я понимаю никакого контроля целостности в данном случае нет?
2) Можно ли добавить в отбор по справочникам и документам еще условие на "Пометка Удаления" (ну например чтобы можно было задать так: документы "Реализация товаров и услуг" за 2012 год с пометкой на удаление)?
Ответили: (67)
# Ответить
67. Cobranet123 30.10.2013 08:32
(66) mzelensky,
1) Совершенно верно понимаете, никакого контроля целостности нету, обработка сразу удаляет данные из базы.
2) По справочникам такой отбор можно установить самостоятельно для каждого вида справочника. Общие реквизиты для всех справочников делать не удобно, да и редко кому требуется, поэтому и были сделаны отборы для каждого вида справочника. А вот по документам сделать удаление по реквизиту "ПометкаУдаления" можно над этим подумать, как лучше реализовать.
Вообще конечно в планах и для документов сделать отборы как со справочниками для каждого вида документов свои отборы. Просто сейчас сделал для справочников, чтобы посмотреть будет ли актуально такое и будет ли народ пользоваться такими отборами.
# Ответить
68. mzelensky (файл скачал) 30.10.2013 09:13
Отборы в любом случае лишними не будут, так что делать нужно однозначно!

А про пометку говорю т.к. это удобно при свертке. Свернули базу - получили кучу доков помеченных на удаление. Можно конечно и без пометки их удалить (чисто периодом), но все же я лучше бы еще перестраховался. Чтобы лишнего не удалить.
Ответили: (69)
# Ответить
69. Cobranet123 18.11.2013 09:07
Вышло очередное обновление обработки (18.11.2013)!!!
Добавлено удаление документов с пометкой на удаление.
(68) Приятная для вас новость, реализовал то, что вы просили :)
# Ответить
70. m0r0z 20.11.2013 09:29
Обработка нужная.
Скажите с какими базами SQL она работает?
Ответили: (71)
# Ответить
71. Cobranet123 20.11.2013 10:25
(70) m0r0z,
Не совсем понял вопрос
Скажите с какими базами SQL она работает
, если вас интересует версии MS SQL Server, то проверял на 2008 SP3 думаю что на 2005 тоже нормально отработает, никаких спец.операций выпущенных только с SQL 2008 не использую.
# Ответить
72. m0r0z 20.11.2013 11:20
Будет ли она работать на PostgreSQL?
Ответили: (73)
# Ответить
73. Cobranet123 20.11.2013 11:44
(72) m0r0z,
нет, на PostgreSQL работать не будет, потому что используется драйвер SQL Server
# Ответить
74. jocker (файл скачал) 11.02.2014 16:25
Спасибо, очень выручила!

(1.3.2) есть 2 ошибки:

1. целиком справочник не удаляет, т.к. в коде:
КомандаВыполненияSQL = "TRUNCATE TABLE "+ТекСтрока.ИмяТаблицыХранения;
а дальше ничего...
чтобы работало, добавить:
Connection.Execute(КомандаВыполненияSQL);


2. ОчиститьОбъектыНаУровнеSQL(Отказ, ПричинаОтказа, ИндикаторСостояния, СтрокаПодключения, МассивОбъектов, мПометкаУдаления = Неопределено)

мПометкаУдаления = Неопределено, а в коде проверка на Булево, выдает ошибку,
можно исправить заменив на:
мПометкаУдаления = Ложь
# Ответить
75. Cobranet123 13.02.2014 06:00
Спасибо за ошибки. Обязательно проверю! и выложу новую версию.

Прикрепленные файлы:

Безымянный.bmp
# Ответить
76. net888 (файл скачал) 19.02.2014 12:30
(62) angy, CommandTimeout=0
# Ответить
77. oplachko (файл скачал) 25.02.2014 19:12
Вылетает ошибка. Скрин приложил.
Ответили: (78)

Прикрепленные файлы:

Error.jpg
# Ответить
78. shaman.nk (файл скачал) 04.03.2014 12:46
(77) oplachko, Процедура ОчиститьОбъектыНаУровнеSQL(Отказ, ПричинаОтказа, ИндикаторСостояния, СтрокаПодключения, МассивОбъектов, мПометкаУдаления = Ложь) так заработало
# Ответить
79. shaman.nk (файл скачал) 04.03.2014 12:49
(0) Справочники не удаляет!!!
# Ответить
80. Cobranet123 04.03.2014 13:10
04.03.2014
Вышло обновление обработки (1.3.3), исправлены мелкие замеченные ошибки.
# Ответить
81. zfilin (файл скачал) 28.03.2014 00:29
А зачем при очистке регистров накопления за период формируется таблица значений "ТЗДвоичныхДанных"?
Там идет выборка записей регистра, насколько я понял (Пока RecordSet.Eof() = Ложь Цикл) и весь эффект скорости сводит на нет. Перебираются миллионы записей. Я дождался только сообщения об ошибке связанной с SQL, ругалось на "MoveNext" и никакой очистки не случилось.
# Ответить
82. zfilin (файл скачал) 28.03.2014 00:36
Если цикл закомментировать, то вываливает вот такое:
{ВнешняяОбработка.ОчисткаБазы.МодульОбъекта(1175)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver]Время ожидания истекло
# Ответить
83. director04 (файл скачал) 06.05.2014 18:02
Маладец! Труд просто титанический. А еще и регулярная поддержка. Просто респект...
# Ответить
84. dyak84 17.06.2014 12:26
Автор я извиняюсь что тревожу вас но так сложились обстоятельства. Ві не могли бі скинуть обработку на емайл electronik@ukr.net просто кровь из носу.
# Ответить
85. dyak84 17.06.2014 12:52
Огромное Спасибо. Выручили очень и очень сильно. Есть еще на свете добрые люди!!!!!!!!!!!!
# Ответить
86. Mastekor (файл скачал) 12.08.2014 15:07
На 8.1 вылетает ошибка на пустые поля в SQL
# Ответить
87. isn 10.09.2014 17:10
Выполнение тестирования и исправления инфобазы предполагает, что происходит повреждение данных?
# Ответить
88. a1ex4ndr (файл скачал) 11.09.2014 09:22
(58)
Проделан большой труд, за что и СПАСИБО, но не хватает одной мелочи. Для полного счастья еще нужно чистить регистры накопления по периоду. В моем случае обрезается база с 2009 по 01,01,2013 года, за день по 500 реализаций одних только. И что мы имеем в итоге:
1) Документов нет(то что нужно)
2) Движения все остались, теперь нужно мудохатся с тестированием, либо делать доки не проведенными(тогда смысел этой обработки???Можно просто запустить непосредственное удаление и за неделю удалить), а вот если бы еще регистр почистился бы за период то было бы просто ВАВВВВ(даже если просто без привязки к документам)!!!

У меня в 8.1 тоже движения по документам оставались - чистил обработкой для удаления проводок удаленных документов, ссылки к сожалению не сохранилось..
# Ответить
89. simgo83 (файл скачал) 26.09.2014 13:24
последовательности пометил на удаление, но они почему-то остались.
# Ответить
90. simgo83 (файл скачал) 27.09.2014 10:59
Извиняюсь, все работает, спасибо!
# Ответить
91. GATTUSO (файл скачал) 16.12.2014 15:49
А контроля уникальности в обработке нет?
# Ответить
92. bolush (файл скачал) 30.01.2015 13:26
Добрый день!

Смотрю обработка на обычных формах, для управляемых будет работать, если запустить в обычном режиме ?

Конфигурация БП 3.0

Спасибо за ответ за ранее !!!
# Ответить
93. qwed557 (файл скачал) 01.02.2015 21:29
Как победить такую проблему: в регистре заказы покупателей почти 4 млн записей, обработка отваливается по таймауту, как с этим бороться? Еще почему то не очищается регистр накопления Товары на складах. Выбрал очистить за период по 31.12.2014 обработка проходит, пишет выполнено, захожу в регистр - записи на месте. У меня глаза на лоб полезли после того как провел оприходование и сформировал ведомость по товарам на складах)))
Ответили: (94)
# Ответить
94. Cobranet123 09.02.2015 11:20
(93) qwed557,
Попробуйте новую версию обработки 1.3.4 с установленной галочкой на странице регистров "Не ограничивать время ожидания выполнения команды SQL"
# Ответить
95. bolush (файл скачал) 30.03.2015 13:57
Обработка отличная, спасибо автору, хорошо было вы еще добавить отбор, к примеру удалить все помеченные документы по организациям.
# Ответить
96. permnets (файл скачал) 24.04.2015 11:38
Здравствуйте!
Тестируем вашу обработку, удаляем пока документы за предыдущие периоды, вроде бы пока удачно, но есть пара пожеланий.
В настройках SQL добавить кнопку Проверка соединения.
Добавить к прогресс-бару текстовую строку с текущим видом удаляемых объектов, а то при удалении большого количества документов индикатор замирает на 15% или на 77% и не совсем понятно то ли висит, то ли удаляется или может второй прогресс-бар по текущему виду, было бы совсем замечательно, если возможно такое.
У нас все документы за год удалялись часа полтора-два, окончание не удалось застать, поэтому неплохо было бы по окончании узнать время удаления, для оценки следующих удалений и примерного ожидания на рабочей базе.
И в последней версии в заголовке окна остался номер 1.3.3
Ответили: (97)
# Ответить
97. Cobranet123 28.04.2015 08:20
(96) permnets,
Здравствуйте. Пожелания приняты, буду думать как лучше добавить на форму ))
# Ответить
98. Утюг (файл скачал) 01.06.2015 14:26
В крайней версии реквизит "Организация" вдруг стал строковым.
При удалении документов - Истекло время ожидания запроса.
# Ответить
99. asved.ru 10.06.2015 11:08
1) Режим разделения данных понимает?
2) Процесс транзакционный? Что будет, если в середине процесса возникнет исключение?
3) При полной очистке таблицы - delete from или truncate table?
# Ответить
100. leoff (файл скачал) 05.08.2015 12:42
Добрый день, приобрели Вашу разработку, воспользовались.
Нет ли возможности удаления Регистров Бухгалтерии за период.
У нас после удаления документов, почему то остались движения (проводки) по регистру бухгалтерии. ТиИ не спасло. Проводки на месте.
# Ответить
101. leoff (файл скачал) 05.08.2015 12:50
Ошибка при тестировании и исправлении.
Какие мысли?

Прикрепленные файлы:

Ошибка.png
# Ответить
102. isn 18.09.2015 11:08
Дорогие друзья, прошу прощения, это конечно против правил, но не могли бы Вы поделиться обработкой, на текущей момент с инфостарта скачать не могу. заранее премного благодарен откликнувшимся.
# Ответить
103. CaSH_2004 (файл скачал) 26.05.2016 22:21
(0) Уважаемый автор - обработка еще поддерживается? Пожелания и ошибки указаны год назад а результата не видно, жалко - нужная обработка но если не работает (например удаление по организациям) тогда нет смысла качать.
# Ответить
104. CaSH_2004 (файл скачал) 26.05.2016 23:14
Скачал - а куда деваться? Работу нужно работать...
Вот хочу поделится впечатлениями, может автор прочтет, но и другим нужно знать что же это за зверь.
Труд действительно колоссальный - за что огромное спасибо, жаль только как всегда есть косяки.

Про функционал:
Не все работает как заявлено:
Самое главное - удаление движений по документам просто не работает, например удаляю "Приходный ордер на товары" (_Document202) (размер таблицы SQL: 40 KB)
Все движения остаются на месте - в частности РН "Товары на складах", странно как у автора он работал (судя по его комментам) - просто Регистратор = <ссылка не найдена...>. Придется наверное прогонять потом и РН
И еще важное: при случайно попытался удалить документы с фильтром по организации которую не указал (бывают документы случайно записывают без организации - а что тут такого?), так вот выдало закономерную ошибку:
{ВнешняяОбработка.ОчисткаБазы.МодульОбъекта(891)}: Ошибка при вызове метода контекста (Execute)
			RecordSet = Connection.Execute(КомандаВыполненияSQL);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]Неправильный синтаксис около конструкции "=".
...Показать Скрыть

Но все же такое бывает что не указывают организацию - можно же случайно и затереть ее в паре миллионов документов нечаянно а потом захотеть их удалить - и что делать?

Про скорость:
Без замера действительно сложно, отмена проведений документов (с регистрами и все как полагается) в УТ 10.3 с кол-вом документов 3,75 млн. обычным способом у меня удаляло ~ 70 тыс./час, тут сложно сказать - замер отсутствует, но SQL и есть SQL - очень быстро, и быстрее наверное не будет :) Хотя вское бывает - вот тут Очистка базы средствами SQL (управляемое приложение) обещают еще быстрее, но там УФ,а у меня ОФ.

Про интерфейс:
Удивил, то ли автор больше SQL-щик, а не 1С-ник, но рисовать "псевдографику" в табличном интерфейсе - это по моему уже полный изврат :) (даже интересно как реализован - будет время посмотрю) , я сначала не поверил скриншоту - но действительно в одной колонке СпискаЗначений выводится 2 колонки при помощи пробелов и | - один вопрос ЗАЧЕММммм????
Наверно поэтому же нет и возможности сохранить настройки типовыми средствами, проверить подключение к SQL не производя никаких действий (ну не удалять же документ для проверки ?), вопросов лишних при выполнении действий тоже не требуется - ну нажал случайно не туда и бог с ним что удалятся все документы, нужно копию иметь и думать прежде чем жать :)

Так что просьба если автор не забросил эту обработку:
- починить удаление движений вместе с объектом
- добавить замер: начало и конец как общие так и в частности, а также сколько удалено объектов, с какой скоростью
- добавить тестирование подключения к SQL и вопрос на выполнение действия

Ну а если забросил, что-бы не пропадать такому добру, может дашь добро на допиливание и выкладывание с ссылкой на первоисточник? Без спроса как бы некрасиво.
# Ответить
105. CaSH_2004 (файл скачал) 26.05.2016 23:26
Что-то все висит на половине дела, вспомнил про галочку "Не ограничивать время ожидания выполнения команды SQL" - но она расположена на закладке "Регистры накопления, бухгалтерии" - так она и работает только при работе с ними? Или она влияет на работу с SQL всегда?
Через час руганулось:
{ВнешняяОбработка.ОчисткаБазы.МодульОбъекта(746)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver]Истекло время ожидания запроса
Ответили: (106)
# Ответить
106. Cobranet123 27.05.2016 12:38
(105) CaSH_2004,

Добрый день.
Обработка - да, на стадии поддержки. Только времени на поддержку мало было, сейчас времени побольше стало, продолжу допиливать ее.
По поводу галочки "Не ограничивать время ожидания выполнения команды", она срабатывала не верно, даже на той вкладке, и была только для регистров накопления, потому что как они считаются в конфигурациях самыми большими и объемными по хранящимся в них информации, поэтому и добавлял галочку эту только там, для других объекто конфигурации она не срабатывала.
Сейчас внес измненения и теперь галочка "Не ограничивать время ожидания выполнения команды" есть на всех страницах с удаляемыми объектами, и ее работа исправлена.
Можете проверить.
Спасибо за конструктивную критику в предыдущем посте, теперь возьмусь за исправление косяков и недостатков этой обработки. Спустя время, взгляд на обработку изменился и недостатки видятся больше чем в момент когда ее только создаешь ))
Выложил новую версию обработки 1.3.5, добро пожаловать на тестирование функционала по ограничению времени выполнения команды в SQL ))
# Ответить
107. CaSH_2004 (файл скачал) 27.05.2016 18:30
(106) Спасибо! Займусь обязательно, но я там в личку кинул предложения по оптимизации - жду ответа
# Ответить
108. CaSH_2004 (файл скачал) 28.05.2016 11:37
Протестировал основную ошибку - осталась: движения по удаляемым документам не удаляются!!!
Из пожеланий:
1. Форма чтобы разворачивалась
2. Сохранение реквизитов формы
3. Объекты в виде таблицы, а не списка
4. Вывод сообщений о начале/завершении выполнения обработки в целом и каждого объекта в частности с дублированием в файл - иногда вылетает SQL от нагрузки даже и ничего непонятно что удалилось то, да и смотреть сутки на зависшую обработку как-то неинтересно.
5. Написать в форме что номер версии изменился - с этим у вас прямо болезнь :)
# Ответить
109. CaSH_2004 (файл скачал) 29.05.2016 01:40
Я так понимаю обработка предназначена для быстрого удаления большого объема данных средствами SQL, вроде плюсов много, а вот у меня что то все уперлось в 2 проблемы из-за которых весь смысл использования (без переписки) ее теряется:
1. При удалении одного вида документов ~1 млн. вылетало сначала по таймауту - это полечили, стало теперь вылетать из-за переполнения журнала транзакций (ACTIVE_TRANSACTION), вроде это решается путем настройки самого SQL, но я в этом не силен да и заедую этим не я а штатный сисадмин которого еще поймать нужно. Пока решил путем дописания помесячного удаления
2. Движения удаляемых документов не удаляются

Вроде все можно исправить - но вот вопрос: а как все кто плюсовал пользуются ей? На 1-2 документах просто для проверки что можно? В боевом использовании она какая-то сырая, автор - без обид. Все что ли дописывают или я что-то не так делаю?
# Ответить
110. CaSH_2004 (файл скачал) 29.05.2016 14:31
А вот наконец то я понял - это ДЕМО версия! В режиме удаления определенного выбранного документа автор делает все необходимые действия по очистке всех связанных таблиц и тогда действительно все работает, но чтобы сделать групповую очистку - тут нужно либо все переписывать либо сидеть и караулить когда очистятся документы чтобы очистить регистры, а потом очистить и последовательности...
Мда-а-а-а, автоматизация зашкаливает. (0) Хоть бы написал что-ли как очищать правильно за период, хоть бы не тратил время на перелопачивание всей обработки :(

При таком ручном подходе остается вопрос глобальный - а как при групповой очистке удалять то регистры сведений по регистратору? На закладке РС - нет периода, на закладке РН - нет РС - замкнутый круг какой-то?
Или все лечат потом базы через ТиИ? Но это как-то коряво.

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

Еще раз изучил код удаления документа и есть подозрение (в SQL не силен) что движения удаляются не по ссылке, а по Дата+Номер:
КомандаВыполненияSQL = "SELECT _idRRef FR OM "+СтрокаСтруктуры.ИмяТаблицыХранения+" WHERE ([_Date_Time] = CONVERT(DATETIME, '"+СтрокаДаты+"', 102)) AND (_Number = '"+мДокумент.Номер+"')"+СтрокаПометки;

Если это так то это даже не ДЕМО-версия, а просто просто бето-версия какая-то а может и даже альфа :)
Может кто-то развеет мои подозрения? А то как то страшно даже на рабочей базе такие эксперименты ставить, на тестовой то уже устал играться 3-й день.
Ответили: (111)
# Ответить
111. Cobranet123 29.05.2016 17:02
(110) CaSH_2004,
Добрый день.
Описание обработки идет в самом начале и если каждый понимает по своему описание, то поэтому и открыт код, для тех кому что-то не нравится. Вам никто не запрещает не использовать эту обработку и искать другую.
Ответили: (112)
# Ответить
112. CaSH_2004 (файл скачал) 29.05.2016 20:47
(111) Cobranet123, не обижайтесь. Я вроде говорил про явные недочеты обработки и то она явно не выполняет своего предназначения, а вы предлагаете ей не пользоваться - получается что вы с ними согласны? Тогда зачем ее выкладывать? Если показать как это делать - то это и есть бета-версия и спасибо за такой вариант, но можно было бы и четко сказать что удалять нужно не только документы, но и их движения и еще регистрацию - мне как 1С-ку это как-то не естественно.
Я наверное что-то пропустил, но не поленился и прочитал описание повторно, и все равно до меня не доходит, уточните - где в описании сказано что удалять документы НУЖНО в несколько этапов? То что это можно - и то понятно с трудом. А частичное удаление данных кому-то было когда то было нужно? Может только разве-что чтобы базу повредить. Где-то сказано что при удалении одного документа удаляются все его движения а при групповом удалении - нет?
# Ответить
113. CaSH_2004 (файл скачал) 29.05.2016 20:51
К тому же я задал несколько вполне конкретных вопросов - в ответ вы предлагаете не пользоваться обработкой, смешно :)
Если вы выкладываете свой труд на общее пользование то нужно же понимать что будет не только восторги, но и критика и отвечать на нее нужно конструктивно, с вашей стороны я же вижу какую-то детскую обиду. Печально. Я не хотел вас обидеть, а всего лишь указывал на недостатки разработки которые сильно мешают и даже в принципе не дают ей полноценно пользоваться.
# Ответить
114. Frew (файл скачал) 31.05.2016 23:10
Здравствуйте, при очистке справочка любого справочника вылазит ошибка
{ВнешняяОбработка.ОчисткаБазы.МодульОбъекта(413)}: Значение не является значением объектного типа (Строки)
СтрокаТЗ = ТЗОбъектовИУсловий.Строки.Найти(ТекСтрока.ИмяТаблицы,"ИмяМетаданных");
Ответили: (115)
# Ответить
115. Cobranet123 01.06.2016 11:28
(114) Frew,
Добрый день. Скорее всего не выбрали галочкой справочник в котором устанавливаете условие для удаления, Если есть возможность пришлите принтскрин того как отмечаете и что выбираете.
Ответили: (116)
# Ответить
116. Frew (файл скачал) 01.06.2016 13:40
117. Cobranet123 06.06.2016 07:15
(116) Frew,
Добрый день.
Данная ошибка исправлена.
# Ответить
118. rodinyr 15.08.2016 10:15
А какой процедурой в обработке получаете список таблиц SQL&
Ответили: (119)
# Ответить
119. Cobranet123 15.08.2016 12:29
(118) rodinyr,
Добрый день.
ПолучитьСтруктуруХраненияБазыДанных
# Ответить
120. forsagforsag (файл скачал) 14.09.2016 13:18
И кто из вас украл обработку у другого :) ??
При сравнении 1с-ка показывает что они полностью идентичны. http://infostart.ru/public/346488/
Ответили: (121)
# Ответить
121. Cobranet123 14.09.2016 14:30
(120) forsagforsag,
На самом деле, я автор этой разработки (на днях выйдет новое обновление), а вот другая, написана как видно из описания на основе моей обработки.
Ответили: (122)
# Ответить
122. forsagforsag (файл скачал) 15.09.2016 13:00
(121) Cobranet123,
Про то что Вы автор верю :)
Там автор пишет что на основе вашей делал НО типа быстрее работает... НО Она идентична с Вашей. Скачал обе, загрузил одну в конфу и командой "Сравнить-обЪединить с обработкой из файла" привет - показывает что отличий нет :)))
# Ответить
123. forsagforsag (файл скачал) 15.09.2016 13:01
Есть проблема - удаляю один единственный справочник. На него ссылок нет. После удаления загружаю из копии то что удалил - индекс не уникален и все тут :(
# Ответить
124. forsagforsag (файл скачал) 15.09.2016 13:04
Стоп, приношу свои извинения - ссылки для скачки наверное перепутал :))
Ответили: (125)
# Ответить
125. Cobranet123 15.09.2016 14:20
(124) forsagforsag,
Бывает. Вышла кстати новая версия сегодня, с новыми плюшками, так что милости прошу тестить ))
Ответили: (126)
# Ответить
126. forsagforsag (файл скачал) 15.09.2016 21:42
(125) Cobranet123,
Удаление таб/частей в справочниках есть?
Недочет в вашей обработке нашел - не рубит табчасти справочников и эти таблицы в скуле болтаются.
1 миллион элементов справочника грохнул, а представьте сколько там строк по этим табчастям...... :(
Пришлось все средствами скуля делать.
В описании добавьте что табчасти справочников не гу-гу, а то очень коряво получается.
Ответили: (127) (128)
# Ответить
127. Cobranet123 16.09.2016 05:49
(126) forsagforsag,
Зачем добавлять в описание?, я лучше изменю чтобы таб части справочников тоже удалялись. Просто за столько времени никто не высказался про это, поэтому и как то забыл про таб.части справочников. Сорри. Исправлю обязательно в ближайшее время!
Ответили: (129)
# Ответить
128. Cobranet123 16.09.2016 07:48
(126) forsagforsag,
Выложил новую версию, в ней удаляются ссылки элементов справочников в таблицах SQL отвечающих за табличные части справочников.
+ 1 [ forsagforsag; ]
# Ответить
129. forsagforsag (файл скачал) 16.09.2016 16:27
(127) Cobranet123,
[ никто не высказался про это, поэтому и как то забыл про таб.части справочников]
Если не проверять оно не всплывает :)))) А так просто и не заметишь. Значит не проверяет никто.
# Ответить
130. KroVladS (файл скачал) 20.09.2016 14:42
(0)Cobranet123
Добавьте функционал КопироватьОтборВоВсеСтроки

Процедура КоманднаяПанельСписокДокументовКопироватьОтборВоВсеСтроки(Кнопка)
	
	СтрокиОтбора = ЭлементыФормы.СписокДокументов.ТекущиеДанные.Отбор;
	Если СтрокиОтбора.Количество() = 0 Тогда
		Предупреждение("Не задан отбр для копривания");
		Возврат;
	КонецЕсли;

	Для Каждого СтрокаДереваВыгрузки Из ЭлементыФормы.СписокДокументов.Значение.Строки Цикл	

		ПостроительОтчета.Текст = "ВЫБРАТЬ
		|	*
		|ИЗ
		|	" + СтрокаДереваВыгрузки.ИмяМетаданных;
		ПостроительОтчета.ЗаполнитьНастройки();
		СтрокаДереваВыгрузки.Отбор.УстановитьДоступныеПоля(ПостроительОтчета.ДоступныеПоля);

		Для Каждого СтрокаОтбора Из СтрокиОтбора Цикл
			ПредставлениеОтбора = СтрокаОтбора.Представление;		
			
			Если СтрокаДереваВыгрузки.Отбор.ПолучитьДоступныеПоля().Найти(ПредставлениеОтбора) <> Неопределено Тогда
				СтрокаДереваВыгрузки.Отбор.Добавить(ПредставлениеОтбора);
				ЗаполнитьЗначенияСвойств(СтрокаДереваВыгрузки.Отбор[ПредставлениеОтбора], СтрокаОтбора);				
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;

КонецПроцедуры
...Показать Скрыть
# Ответить
131. KroVladS (файл скачал) 21.09.2016 10:38
Обновление (15.09.2016)

Доработка:

- Изменен механизм удаления документов, теперь документы можно удалять по произвольным отборам.


на больших объёмах, при отборах НеРавно, вываливаеться с ошибкой "Недостаточно памяти".
Таблицы целиком нормально удаляет.
Ответили: (132)
# Ответить
132. Cobranet123 21.09.2016 11:07
(131) KroVladS,
Хорошо, проверю.
Ответили: (133)
# Ответить
133. KroVladS (файл скачал) 21.09.2016 12:09
(132) Cobranet123,
Предполагаю что проблема тут:
РезультатЗапросаТЗ = Запрос.Результат.Выгрузить(); 

может лучше на выборку переделать?

-----

А ещё лучше не удалять найденные строки по одной а сгенерировать в запросе на удаление в условие на основании отбора.
"DELETE FR OM "+ТекСтрока.ИмяТаблицыХранения+" WH ERE ["+ИмяПоляХраненияОтбора+"] " + ВидСравненияОтбора + " " + HexЗначенияОтбора;

Но это я так понимаю дюже долго делать.
Ответили: (134)
# Ответить
134. Cobranet123 21.09.2016 17:13
(133) KroVladS,
А ещё лучше не удалять найденные строки по одной а сгенерировать в запросе на удаление в условие на основании отбора.

Вы совершенно правы, именно это я и планирую сделать следующим шагом, потому что на больших объемах средства 1С тормозят очень сильно, поэтому у меня как раз и есть такая мысль чтобы сразу в момент отбора формировать sql запрос на требуемое действие. Так что пока придется не так много сразу задавать для отбора, чтобы 1С смогла это переварить. Потому что реализация того, что я задумал, потребует какого-то времени.
# Ответить
135. KroVladS (файл скачал) 26.09.2016 12:45
Ещё дополнения по быстрому удалению табличных частей

Убрать ветви выбора:
ИначеЕсли (Лев(ТекСтрока.Метаданные,Найти(ТекСтрока.Метаданные,".")-1) = "Документ") И (ТекСтрока.Назначение = "ТабличнаяЧасть") Тогда

И
ИначеЕсли ТекСтрока.Назначение = "РегистрацияИзменений" Тогда
//Очищаем таблицу регистрация изменений по ссылкам документов


вместо них удалять ТЧ через интер джойны до удаления документа, примерно так:

ИначеЕсли (Лев(ТекСтрока.Метаданные,Найти(ТекСтрока.Метаданные,".")-1) = "Документ") И (ТекСтрока.Назначение = "Основная") Тогда
	
	МассивТаблиц = Новый Массив;
	МассивТаблиц.Добавить(ТекСтрока.Метаданные);
	СтруктураБДТаблицы = ПолучитьСтруктуруХраненияБазыДанных(МассивТаблиц, Истина);
	СтруктураБДТаблицы.Сортировать("Назначение Убыв");
	
	Для Каждого СтрТаблицы Из СтруктураБДТаблицы Цикл
		
		Если СтрТаблицы.Назначение = "ТабличнаяЧасть" Тогда
			
			Промежуточный = Сред(СтрТаблицы.ИмяТаблицыХранения,2,СтрДлина(СтрТаблицы.ИмяТаблицыХранения));
			ИмяПоляТЗ = "_"+Сред(Промежуточный,1,Найти(Промежуточный,"_")-1)+"_IDRRef";
			
			КомандаВыполненияSQL = "DELETE FR OM "+СтрТаблицы.ИмяТаблицыХранения+
			" FR OM "+СтрТаблицы.ИмяТаблицыХранения+" AS TabTCH "+
			" INNER JOIN " + ТекСтрока.ИмяТаблицыХранения+" AS TabOSN "+
			" ON  TabTCH."+ИмяПоляТЗ+" = TabOSN._idRRef "+
			" WHERE TabOSN.["+ИмяПоляОрганизации+"] <> "+мОрганизация;
		
			Состояние("Обработка: " + СтрТаблицы.Метаданные + ", "+СтрТаблицы.Назначение);

		ИначеЕсли СтрТаблицы.Назначение = "РегистрацияИзменений" Тогда 
			
			ИмяПоляТЗ = "_IDRRef";
			
			КомандаВыполненияSQL = "DELETE FROM "+СтрТаблицы.ИмяТаблицыХранения+
			" FROM "+СтрТаблицы.ИмяТаблицыХранения+" AS TabTCH "+
			" INNER JOIN " + ТекСтрока.ИмяТаблицыХранения+" AS TabOSN "+
			" ON  TabTCH."+ИмяПоляТЗ+" = TabOSN._idRRef "+
			" WH ERE TabOSN.["+ИмяПоляОрганизации+"] <> "+мОрганизация;					

			Состояние("Обработка: " + СтрТаблицы.Метаданные + ", "+СтрТаблицы.Назначение);

		ИначеЕсли СтрТаблицы.Назначение = "Основная" Тогда
			
			КомандаВыполненияSQL = "DELETE FROM "+ТекСтрока.ИмяТаблицыХранения+" WH ERE ["+ИмяПоляОрганизации+"] <> "+мОрганизация;

			Состояние("Обработка: " + СтрТаблицы.Метаданные + ", "+СтрТаблицы.Назначение);
		КонецЕсли;
	
		Попытка	
			Connection.Execute(КомандаВыполненияSQL);
		Исключение				
			ПричинаОтказа = ОписаниеОшибки();
			Сообщить(Строка(ТекСтрока.Метаданные) + ПричинаОтказа);
			Сообщить(КомандаВыполненияSQL);
			Продолжить;
		КонецПопытки;
	КонецЦикла;						
...Показать Скрыть
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл