Имя: Пароль:
1C
1С v8
Удаление помеченных
,
0 MonteCarlo
 
17.08.18
11:38
Уважаемое сообщество. Помогите принять решение. У нас есть проблема, ночью выполняется регламент по физическому удалению объектов, помеченных на удаление. База большая, помеченных очень много и они не удаляются из-за того, что есть ссылки в регистрах или документах. Утром перед началом рабочего дня регламент завершается принудительно. Таким образом новые помеченные на удаление объекты не могут удалиться из-за того, что до них просто не доходит очередь. Встала задача фильтровать поиск ссылок на объект по тем объектам, которые были уже проверены в прошлый раз и по ним есть ссылки. Какие у меня есть идеи. Нужно обязательно вести где-то список объектов, которые имеют ссылки и их не проверять. Т.е. в типовую обработку проверку внести изменения. Но вот где этот список вести? Файл мне не очень нравится. Регистр сведений можно или внешних источник данных. В регистром работа будет быстрее, а внешний источник не будет создавать сам по себе ссылку на этот же объект. Но в любом случае нужно предусмотреть вариант, когда пользователь избавляется от ссылки, тогда нужно оперативно вносить изменения в эту таблицу и удалять из нее этот объект. Через подписку конечно можно все это сделать, но вот вопрос как быть с регистрами. Допустим на документы и справочники я могу подписку сделать, а вот как отработать вариант, когда из независимого регистра сведений удаляется запись и в ней была ссылка на удаляемый объект, как отследить и удалить во внешнем источнике это событие? И не нагрузит ли это сильно систему, постоянно обращаться во внешний источник в процессе оперативной работы?
В общем если у кого-то были подобные задачи или есть у кого мысли, делитесь, буду признателен.
1 butterbean
 
17.08.18
11:41
делаешь в регистре измерение ведущим и все, записи сами удалятся при удалении объекта-измерения
2 s03
 
17.08.18
11:41
А если элементы справочников, которые нельзя удалить переместить в для этого созданную папку "Удаленные" и снять пометку удаления?
3 MonteCarlo
 
17.08.18
11:42
(1) А если уже есть регистры (много) где это измерение не ведущее и менять не особо хочется? По сути это все измерения надо делать ведущими.
4 MonteCarlo
 
17.08.18
11:42
(2) Не понял. Зачем?
5 MonteCarlo
 
17.08.18
11:43
(2) Смысл то в том, чтобы физически удалить их из базы.
6 butterbean
 
17.08.18
11:44
(3) это я про новый регистр, в который будешь писать неудаляемые объекты? те которые система даже не будет пытаться удалить
7 butterbean
 
17.08.18
11:44
(6+) ?=,
8 s03
 
17.08.18
11:44
(4) "Встала задача фильтровать поиск ссылок на объект по тем объектам, которые были уже проверены в прошлый раз и по ним есть ссылки" - вот и отфильтруете их. и в следующий раз они проверяться уже и не будут.

(5) даже если на эти записи есть ссылки в документах/регистрах?
9 MonteCarlo
 
17.08.18
11:45
(6) ааа понял, ну это не самая большая проблема. Тут согласен, так и думал сделать.
10 MonteCarlo
 
17.08.18
11:47
(8) Конечно если есть ссылки в документах/регистрах, то удалять физически не надо, но вся соль в том, что в дальнейшем же пользователи могут и удалить эти ссылки в документах и тогда уже этот объект надо будет убрать из фильтра и прогнать через обработку удаления помеченных.
11 MonteCarlo
 
17.08.18
11:48
(8) Перенос в папку не решает проблему, надо же оперативно вытаскивать из папки и помечать на удаление если вдруг пользователь очистил ссылку в стороннем документе
12 MonteCarlo
 
17.08.18
11:49
(11) +(8) тогда уж проще через регистр сделать.
13 s03
 
17.08.18
11:51
(10) Как вариант создай отдельное регламентное задание, которое шерстит папку "Удаленные" проверяя все непомеченные на удаление на наличие использование этих ссылок. И если ссылок не нашлось - спокойно помечать на удаление и удалять естественным образом
14 catena
 
17.08.18
11:52
Я практикую: после проверки ответственному пользователю отправляется письмо со ссылками, которые мешают удалению, пометка с объекта снимается. Если пользователь почистит ссылки, с него не убудет поставить объект на удаление заново.
15 MonteCarlo
 
17.08.18
12:07
(14) Да, как вариант, неплохо. Тем более я после доработки планировал создать отчет со ссылками на документы, чтобы пользователи периодически чистили. А если пользователь проигнорировал письмо или отложил и забыл про него? Объект мы сняли с пометки и открылась потенциальная возможность для ошибки (выбрать снова этот элемент).
16 MonteCarlo
 
17.08.18
12:08
(13) С папкой удаленные честно говоря не очень нравится. Это надо в каждом справочнике/документе создавать такую папку.
17 Мимохожий Однако
 
17.08.18
12:15
В последних типовых есть регламентное задание на эту тему. Может там подсмотреть?
18 catena
 
17.08.18
12:16
(15)Ну, у меня считается, что пока на объект существуют ссылки, он не числится ненужным. Если пользователь проигнорировал письмо - это зона ответственности пользователя. И потом, как ты программно определишь, действительно ли этот элемент надо удалять до упора или его жмакнули на удаление случайно?
19 MonteCarlo
 
17.08.18
12:27
(18) Ну снимать пометку удаления все равно плохо. Так мы визуально хотя бы видим, что он помечен и не выберем его, а вот если снять пометку, то пользователи будут ошибаться чаще.
20 MonteCarlo
 
17.08.18
12:28
(17) Можно поподробней? Что за регламентное задание? Если что у нас как раз почти типовая ERP 2.4.
21 s03
 
17.08.18
12:29
(19) подправьте ему наименование, добавьте что-то вроде "не использовать"
22 catena
 
17.08.18
12:30
(19)Ну, другой вариант - регистр сведений дата удаления, объект(ведущее), инициатор удаления. После проверки, если удалить не удалось, дату сдвигаем на текущую. Проверяем начиная с самых поздних.
23 catena
 
17.08.18
12:31
(21)Документу?
24 MCh
 
17.08.18
12:35
Можно завести новый регистр сведений, где накапливать список непроверяемых объектов. Но поддерживать его всегда в актуальном состоянии не надо, тк это ковыряние в типовых модулях + трата ресурсов во время работы. Обновлять его какой-то попыткой "полного" удаления всего и вся, раз в период например.
25 MonteCarlo
 
17.08.18
12:46
(24) Да, наверное это самый идеальный вариант. Я собственно уже и создал регистр, но стоял вопрос про актуальность. Действительно, лучше не поддерживать актуальность, а раз в неделю или месяц прогонять по ссылкам и чистить его. Спасибо. Наверное остановлюсь на этом варианте.
26 Мимохожий Однако
 
17.08.18
13:14
(20) Там где раздел Администрирование-Обслуживание-Регламентные операции - Удаление помеченных объектов
27 мистер игрек
 
17.08.18
14:01
(23) Катя, ты сможешь помочь в одном вопросе? Не стал заводить отдельную ветку
28 MonteCarlo
 
17.08.18
14:09
(26) Я так полагаю она у нас и работает. И что там можно отфильтровать по уже ранее проверяемым объектам?
29 Мимохожий Однако
 
17.08.18
14:13
(28) Я не знаю,не смотрел. Но раз есть велосипед, то можно его модернизировать
30 MonteCarlo
 
17.08.18
14:23
(29) Так я его и буду модернизировать. Вопрос был в том где хранить данные об объектах, которые не получается удалить, чтобы не тратить время обработки на них в следующем запуске, а так же как поддерживать актуальность этого списка. Спасибо за участие в обсуждении вопроса.
31 Мимохожий Однако
 
17.08.18
14:30
(30) Пожалуйста. Однозначно регистр сведений, в который размещаешь объекты, которые не удалены. Но надо периодически очищать этот регистр, если цикл удаления по остальным объектам пройден.
32 echo77
 
17.08.18
16:20
(0) Поиск ссылок на помеченные на удаление по частям пробовали делать?
33 MonteCarlo
 
17.08.18
16:40
(32) Ну тогда придется где-то фиксировать какую часть уже проверяли и где-то ее записывать, и начинать в следующий раз с другой части. Вопрос опять же сводится к тому, что где-то нужно хранить фильтр.
34 Eiffil123
 
17.08.18
16:49
делаешь копию базы, там удаляешь всё, что можно. Далее, в рабочей базе снимаешь пометку удаления с элементов, которые не удалились в копии (их можно в справочнике переместить в папку Архив - тут по каждому справочнику индивидуально).
35 Eiffil123
 
17.08.18
18:02
И в продолжение моего предложения - можно в рабочее время переместить в папку "Архив" помеченные на удаление объекты. И сделать обработку, которая проверяет ссылки на помеченные объекты - если ссылки в документах или справочниках (без пометки удаления) или в регистрах с регистратором, тогда снимет пометку удаления. Тогда для ночного задания будет гораздо меньше объектов для удаления.
36 Serg_1960
 
17.08.18
20:14
(0) Если Вам ночи мало (что само по себе крайне удивительно) - то можно прихватить и день - РИБ; отдельный узел, без юзверей, только для удаления помеченных и обмен до и после удаления.

Но лучше Вам разобраться почему у вас база тормозит на больших объёмах. Я знаю почему, но лучше Вам самим разобраться.