Имя: Пароль:
1C
1С v8
Удаление 500000+ помеченных в БП 2.0
,
0 Митяйский
 
13.04.18
11:51
Может кто подсказать, как можно вычистить помойку после свертки БП 2.0, обойдясь меньшей кровью? Стандартное удаление повесило мой i5 уже на три с лишним часа. Подумываю начать чистить внешней обработкой, только очень не хочется чего-то опять садиться за написание велосипедов.

Может кто какие хитрости знает?
1 Cool_Profi
 
13.04.18
11:53
Я обычно беру Портативные Инструменты (TormozIT, с тебя магарыч) И чищу по метаданным
2 Dmitry1c
 
13.04.18
11:53
(0) выгрузи через выгрузку-загрузку XML данные в чистую базу
3 Lama12
 
13.04.18
11:58
(0) 3 часа... :-) Выходные впереди.  Подожди.
4 Митяйский
 
13.04.18
11:58
(2) Ну так не факт, что мусор не потащится следом.
Я ведь не знаю остались ли там ссылки на старые документы.

Свертку запускал со всеми настройками по умолчанию. В предыдущие разы у меня всегда оставались какие-то не до конца свернутые хвосты и недопомеченные документы
5 Рэйв
 
13.04.18
12:04
(0)Если скуль, то напрямую скальными запросами удаляется в разы быстрее.
6 Рэйв
 
13.04.18
12:05
*скульными :-)
7 SeriyP
 
13.04.18
12:11
(4) Думаю, что при таком способе удалится процентов 10 из помеченного. И ждать придется долго
8 Митяйский
 
13.04.18
12:29
Короче, не удаляется вообще ничего практически.

Эти козлы поснимали галку "только обороты" с субконто документов расчета почти на всех счетах. Соответсвенно и не свернулось толком нихера, все повылазило в остатки.

Короче мой косяк, извиняйте.
Без велосипедов сегодня не обойтись, увы.
9 ProxyInspector
 
13.04.18
12:52
Я думаю, что через сутки/двое обработка по удалению вывалиться в дамп.
Если в базе больше 100 000 документов, то это уже не ларек, и типовая обработка по удалению помеченных на удаление документов не работает.
  Обычно пишется своя обработка по удалению помеченных на удаление объектов порциями. И все работает.
  Я удалял 1 500 000 документов и ничего
10 ВикторП
 
13.04.18
13:00
(9) ничего - это сколько длилось?
11 Aleksey
 
13.04.18
13:19
(5) Я бы не стал бы так делать
Есть 100500 регистров сведений где участвует документ (типа первичные документы наличие файла и т.д.) и еще 100600 справочников (типа прикрепленные файлы, циклы обмена и т.д.)

А еще куча подвязок если используется 1С-Отчетность и 1с-ЭДО

Забодаешься битые ссылки вычищать ...
12 Segate
 
13.04.18
13:22
(10) если паралеллизмом заморочиться, и сервер позволяет, то норм. Не долго должно быть
13 Мандалай
 
13.04.18
13:32
(4)Если мусор потащится следом значит на него есть ссылки - как ты в этом случае собрался удалять?
14 vis_tmp
 
13.04.18
13:34
(9)Если и уже написанные
15 Ботаник Гарден Меран
 
13.04.18
13:58
В типовую обработку добавлял кнопку, которая снимала флажки в списке помеченных на удаление и устанавливала нужное количество флажков (запрашивалось в диалоге или делалось несколько пунктов меню).
По 500 и 1000 элементов вполне быстро удалялось.
16 Maniac
 
13.04.18
14:00
сделать это на нормальном компе.
с хорошим процом и памятью.
плюс чтобы 1С 64 битная
17 ВикторП
 
13.04.18
14:14
(12) Я сам параллельные процессы не "делал" , если опыт , поделитесь- что делали и сколько времени ушло на сам алгоритм
18 Широкий
 
13.04.18
14:31
Удаляй скульными методами
19 piter3
 
13.04.18
14:34
(9) И сколько по времени дает экономию?Пробовал,особой разницы не заметил
20 Buster007
 
13.04.18
14:42
(19) сколько потоков, во столько раз и быстрее
21 s202
 
13.04.18
15:12
(0) с диска ИТС обработка "УдалениеПомеченных" с отборами -
не подойдет ?
22 s202
 
13.04.18
15:13
Если отбирать и делать по частям - контроль проходит в разы быстрее.
23 Segate
 
13.04.18
15:36
(17) Так как 1с не умеет в паралеллизм, то можно пойти двумя способами:

1й: на уровне SQL курить max degree of parallelism, или как-то так... раскуривать результирующие запросы и раскидывать на уровне скуля

2й: запускать выборку, потом бить выборку на части и удаление каждой из порций запускать в рег. задании...
24 Cyberhawk
 
13.04.18
15:36
Свертка базы - безсмысленное дело.
Свертка регистров - наоборот.
25 piter3
 
13.04.18
15:37
(20) Это пятничная шутка такая?
26 Митяйский
 
13.04.18
15:38
(21) я не догадался даже в унирепс 81 посмотреть, если честно

не знал, что оно все еще работает
27 Tatitutu
 
13.04.18
15:47
Как быстро "удалить все документы и движения" в базе (Альтернатива)

http://catalog.mista.ru/public/795965/
28 Segate
 
13.04.18
15:52
(25) не, ну при наличии неограниченных ресурсов, можно приблизится к подобному... Если каждый из потоков будет в своем рабочем процессе и на каждый будет свое физическое ядро... То в принципе это будет работать быстрее... вопрос остается только в ожиданиях на блокировках... но тут надо играться со степенью изоляции..
29 ProxyInspector
 
13.04.18
16:01
(19) Причина из-за которой приходится изобретать велосипед при при удалении помеченных объектов
1. Для 1с8 - это необходимость монопольного доступа к базе
2. Типовая обработка вываливается в дамп, так как она создает таблицу ссылок для каждого помеченного на удаление элемента. Если у вас 1000 элементов, то данная таблица может доходить до 1 млн записей. Если 10 000, то до 100 млн записей. При этом эта таблица совершенно не нужна.

   А так удаление 1 500 000 документов заняло несколько суток в фоновом режиме
30 Serg_1960
 
13.04.18
16:02
(0) "Может кто подсказать, как можно" - конечно подскажу.
Гуглите :)
https://yandex.ru/yandsearch?text=удалениепосле%20свертки&lr=10754&site=forum.mista.ru
31 ProxyInspector
 
13.04.18
16:07
Если у вас достаточно большая база пусть будет 3 млн. документов из которых 1.5 млн помеченных на удаление.
  ТО стандартные способы с планами обмена не сработают. Там файл обмена будет несколько сотен Гб.
32 piter3
 
13.04.18
16:08
(29) Заинтриговали
33 Serg_1960
 
13.04.18
16:08
(27) Это неправильный совет :( Но в нужном направлении :)
Когда используется обмен, то отключаются все платформенные проверки (даже контроль целостности данных) и большинство программных действий и проверок. И в итоге можно получить те-же грабли, что и при непосредственном удаление объектов с использованием ".ОбменДанными.Загрузка = Истина".
34 ProxyInspector
 
13.04.18
16:11
Возможны два способа
1. ОЛЕ
2. WEB обмен
  Однако не смотря на свою крутизну разработчики 1с так и не смогли написать универсальных обменов для одинаковых конфигураций через ОЛЕ или WEB.
35 ProxyInspector
 
13.04.18
16:29
Вот сейчас стоит задача База 3.6 млн документов за 5 лет. Учет велся по 60 организациям. Сейчас учет ведется где-то по 10 организациям. Требуется перенести в чистую базу пару организаций.
Через универсальный WEB обмен это заняло примерно 6 часов. Было перенесено 62 тыс документов. Без ошибок. Все остатки сошлись.
  Я начинаю любить 1С8
36 Доминошник
 
13.04.18
16:32
(35) А где почитать-посмотреть по поводу "универсального WEB обмена"?
37 ProxyInspector
 
13.04.18
16:36
А это сами пишете. Там не очень сложно. Так же как и универсальный обмен через ОЛЕ.
  Для WEB есть несколько тонкостей. Там есть какое то отграничение на размер передаваемого объема информации. В моем случае при попытке передать информацию о 30 тыс. документов обмен отваливался. Пришлось передавать информацию частями
38 ProxyInspector
 
13.04.18
16:45
Я посмотрел требуется порядка 100 строк кода на формирование выгрузки любого объекта базы в XML, включая регистры сведений. И столько же на загрузку.
  Это конечно не относится к бухгалтерии. Там наверное сложнее. Уж больно криво все реализовано в бухгалтерии.
39 Aleksey
 
13.04.18
16:59
(23) они будут блочить друг друга. я пробовал паралельно удалять доки по разным организациям - не взлетело, нарывался на блокировки
40 ProxyInspector
 
13.04.18
17:05
(39) Для 1с8 все параллельности не актуальны. 1с8 очень плохо работает по настоящему параллельно. Разработчики 1с8 умудрились сделать так, что параметр "ВремяОжиданияБлокировки" при записи элемента не работает. И любая попытка записать заблокированный элемент справочника приводит к немедленной взаимоблокировке.
  Для решения этой проблемы можно использовать Попытка Исключение  вот тогда становится немного лучше
41 ProxyInspector
 
13.04.18
17:06
Это все касается толстого клиента. Но у меня есть ощущение, что на УФ не лучше.
42 mexanik_96
 
13.04.18
17:14
(23) ну опять... она и не должна уметь, это проблемы субд и планировщика
43 ВикторП
 
17.04.18
09:44
(40), (41) какой клиент тут ни при чем, вы не смогли распараллелить - надо чтобы записи не пересекались - у вас не так - от этого и блокировки