gifts2017

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

Опубликовал Андрей Григорьев (Borisych) в раздел Администрирование - Чистка базы

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

Обработка удаляет записи регистров сведений и накопления (имеющих режим подчинения регистратору), у которых документ-регистратор битая ссылка. Обработка быстро очистит ИБ от ошибок перегрузки данных и последствий других сбоев приведших к появлению битых ссылок в ИБ. Добавлена очистка записей регистров бухгалтерии по просьбе Михаила.

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

Наименование Файл Версия Размер
УдалитьБитыеЗаписиИзРегистров 1965
.1239181573 13,95Kb
25.09.09
1965
.1239181573 13,95Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Shaman (Shaman342) 08.04.09 14:01
а то это за формат у файлика -
2009.04.08 UdalitjBityeZapisiIzRegistrovSvedenijNakopl?
расширение какое и для какой 1С?
2. Андрей Григорьев (Borisych) 08.04.09 14:42
Имя файла обрезалось 55 символами
буду делать короткие имена
Обработка для 8.1, обновил файл
3. Serj (Serj1C) 08.04.09 15:56
А она применима для РБД, если документ удалился, а движения остались?
Думаю, что да. Модуль под паролем ((
Diamante; +1 Ответить
4. Андрей Григорьев (Borisych) 08.04.09 16:11
убивает записи где в поле регистратор видишь надпись типа <Объект не найден : и GUID>
сейчас нет примера показать
5. russell82 (Russell82) 17.04.09 09:53
Пароль для просмотра модуля???))))
6. _TINA (_TINA) 18.04.09 09:46
а что в этом, простите, сложного? коду ей богу меньше чем на страницу.
7. Екатерина (Катя84) 23.04.09 14:10
сама себе такое писала. Скачала, потому что было интересно посмотреть реализацию. Зачем пароль то?))
8. Валерий (savageRrr) 24.04.09 13:54
{ВнешняяОбработка.УдалитьБитыеЗаписиИзРегистровСведенийНакопления(51)}: Ошибка при вызове метода контекста (Выполнить): {(6, 2)}: Неоднозначное поле "Регистр.Регистратор.Номер"
<<?>>Регистр.Регистратор.Номер ЕСТЬ NULL
по причине:
{(6, 2)}: Неоднозначное поле "Регистр.Регистратор.Номер"
<<?>>Регистр.Регистратор.Номер ЕСТЬ NULL
9. Андрей Григорьев (Borisych) 27.04.09 23:14

Процедура УдалитьБитыеСсылки()
Для Каждого Регистр Из Метаданные.РегистрыНакопления Цикл
Состояние(Регистр.Имя);
УдалитьБитыеСсылкиРН(Регистр.Имя);
КонецЦикла;
Для Каждого Регистр Из Метаданные.РегистрыСведений Цикл
Если ("" + Регистр.РежимЗаписи) <> "ПодчинениеРегистратору" Тогда
Продолжить;
КонецЕсли;
Состояние(Регистр.Имя);
УдалитьБитыеСсылкиРС(Регистр.Имя);
КонецЦикла;
КонецПроцедуры

Процедура УдалитьБитыеСсылкиРН(ИмяРегистра)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Регистр.Регистратор
|ИЗ
| РегистрНакопления." + ИмяРегистра + " КАК Регистр
|ГДЕ
| Регистр.Регистратор.Номер ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| Регистр.Регистратор");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НЗ = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
НЗ.Записать();
КонецЦикла;
КонецПроцедуры

Процедура УдалитьБитыеСсылкиРС(ИмяРегистра)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Регистр.Регистратор
|ИЗ
| РегистрСведений." + ИмяРегистра + " КАК Регистр
|ГДЕ
| Регистр.Регистратор.Номер ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| Регистр.Регистратор");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НЗ = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();
НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
НЗ.Записать();
КонецЦикла;
КонецПроцедуры
10. Андрей Григорьев (Borisych) 27.04.09 23:17
(8)
Регистратор в этом случае не документ, обработка корректно отрабатывает битые ссылки для РС, подчиненных регистраторам - документам, а у них номер есть :)
11. Алексей Захаров (almas) 05.05.09 08:39
Не ребята демократы. С закрытым кодом это все "НАХ". Слишком старшные последствия подобных чисток могут быть.ТОЛЬКО "-"
buriZa; Andrsan; mamanelli; stss; kraft; Vanbens; +6 1 Ответить
12. Андрей Григорьев (Borisych) 14.06.09 22:59
Добавлена чистка регистров бухгалтерии
13. Марьяна Луцик (Marilucik) 26.06.09 15:59
А если в поле в поле регистратор нет надпись типа <Объект не найден : и GUID>
- а пусто. Что тогда делать?
14. Андрей Григорьев (Borisych) 27.06.09 23:29

Марьяна!
Поподробнее опишите ситуацию, пожалуйста!
Какой регистр, что происходит при попытке открыть регистратор (дабл-клик по полю), скриншот выложите
15. Влад Помыткин (yahoo_VK) 29.06.09 05:51
УТ (1.3.7.9) выдал ошибку:
{Форма.Форма(35)}: Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Партии товаров на складах (управленческий учет))
НЗ.Записать();
по причине:
Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Партии товаров на складах (управленческий учет))
16. Андрей Григорьев (Borisych) 29.06.09 12:52
(15) Странно, базы УТ с битыми ссылками у меня нет, но запрос по всем регистраторам очистил регистр без ошибок. Если не разрешите Вашу ситуацию - могу выслать обработку для удаления всей лишней информации, а то что получится после зачистки - присылайте мне для анализа
17. Марьяна Луцик (Marilucik) 29.06.09 18:25
Регистратор имеет идентификатор равен : 00000000-0000-0000-0000-000000000000
Обробка дает ошибку:
{Форма.Форма(73)}: Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр бухгалтерии: Журнал проводок (налоговый учет))
НЗ.Записать();
по причине:
Ошибка записи! Не установлен отбор по регистратору (Регистр бухгалтерии: Журнал проводок (налоговый учет))
18. Андрей Григорьев (Borisych) 30.06.09 01:50
(17) В моей правктике пока такого не встречалось, но предполагаю, что проводилось тестирование и исправление с переключателем "При наличии ссылок на несуществующие объекты" в положении "Очищать ссылки"
19. Марьяна Луцик (Marilucik) 30.06.09 09:55
Да проводилось проводилось тестирование и исправление, но с переключателем "При наличии ссылок на несуществующие объекты" в положении "Не изменять". Как можно решить єту проблему?
20. Андрей Григорьев (Borisych) 30.06.09 11:20
Написать обработку для выявления таких записей и удалить
Если записей не очень много - могу выслать вам универсальную обработку удаления объектов ИБ, дату зададите = дате битой записи регистра
Если много - и все типа 00000000-0000-0000-0000-000000000000 - нужно найти способ выбрать все подобные записи, очистить их, перепровести документы за период появления записей
21. Марьяна Луцик (Marilucik) 30.06.09 12:33
Обработка сервис – групповое изменение справочников и документов выдает ошибку на этапе - ….ПолучитьОбъект(). Объект не выбран. Если маете другую обработку, которая справляетесь с этим заданием вышлите, пожалуйста!
22. Андрей Григорьев (Borisych) 30.06.09 12:45
23. Марьяна Луцик (Marilucik) 30.06.09 12:52
24. Дмитрий Анкудинов (Diamante) 17.07.09 12:16
По чему модуль под паролем?
При закрытом модуле есть вероятность нахождения вируса в модуле, а значит запускать такую обработку опасно.
А так же считаю не красиво заставлять пользователя голосовать при закрытии.

С удовольствием поставил бы "МИНУС".
25. Андрей Григорьев (Borisych) 21.07.09 20:38
Весь код выложен в этих комментах, см. выше
Ничего лишнего в коде нет, гарантирую
Будет время выложу открытую версию
26. Андрей Григорьев (Borisych) 21.07.09 20:41
Заодно надо реализовать корректную отработку регистраторов - как документов, так и справочников
27. Алексей Захаров (almas) 06.08.09 18:01
Borisych - приношу свои извинения. Про комменты не знал/не понял. Несколько раз качал вашу обработку. Видимо неудачно. "АХРЕНИТЕЛЬНО ВЗЛЕТЕТЬ" -Спасибо за критику, но от своих слов не откажусь под страхом смерти.Преценденты были. Поэтому ко всему с закрытым кодом отношусь только отрицательно.
28. itt (itt) 22.09.09 09:41
фигня полная! отбора регистров нет, мусолила базу полчаса потом вывалилась с ошибкой!
29. Андрей Григорьев (Borisych) 22.09.09 11:52
(28) При открытии сформируй список регистров - проставь флажки - и используй обработку помеченных
программировать 10 минут
30. Антон (psychotoad) 07.10.11 11:08
Простая и полезная штука!
31. Паха (VapPaha) 11.10.11 07:38
Спасибо, реально помогало.
32. Паха (VapPaha) 11.10.11 07:39
помогает для восстановления обмена, повторная чистка
33. Сонечка (esa35) 10.11.11 10:41
спасибо, пригодилось для своей разработки
34. Irina Тускова (RG84) 05.12.11 16:07
спасибо, пригодилось при повторной настройке обмена данными УТ-БП
Borisych; +1 Ответить
35. Erbolat Akkusov (Banzai79) 27.12.11 09:39
Спасибо за обработку, хорошо работает при малых данных, как можно ускорить процесс для больших данных кол-во записей может превышать больше 10 000 записей
37. Maksim Titov (Maks_Payn) 15.01.12 15:50
Спасибо! Хорошая обработка!
38. Андрей Григорьев (Borisych) 16.01.12 08:38
(37) Maks_Payn, пожалуйста :)
Maks_Payn; +1 Ответить
40. Герман Юсупов (fluid) 16.04.12 00:27
Спасибо. съэкономил время.
41. Андрей Глушков (velox) 16.04.12 00:53
Спасиб! отработала корректно, время заняло немного, всем доволен!
42. Денис Иванычев (DenIv) 22.08.12 12:34
2 (9) Автор, а разве в регистрах сведний с режимом записи не подчиненном регистратору не может быть битых сылок?
В противном случае пишите "Удалиение битых ссылок ТОЛЬКО по регистрам подчиненным регистратору"
43. Денис Иванычев (DenIv) 22.08.12 12:36
Автор, здаестя мне я видел этот код в публикации http://infostart.ru/public/82878/
44. Андрей Григорьев (Borisych) 23.08.12 01:14
(43) DenIv, http://infostart.ru/public/19574/ - не кажется, что публикация 19574 была опубликована гораздо раньше чем 82878???
45. Денис Иванычев (DenIv) 23.08.12 09:27
не увидел ответа на вопрос из (42)
46. Андрей Григорьев (Borisych) 23.08.12 10:19
(45) DenIv, и не увидишь. в данный момент не интересно заниматься обработкой трехлетней давности
47. Денис Иванычев (DenIv) 23.08.12 11:00
(46) Borisych, не поверишь - не интересно. посыл был следующий: в описании обработки написать, что удаляет она ссылки ТОЛЬКО по регистрам с режимом записи - подчинен регистратору и не вводить народ в заблуждение и не важно сколько лет поделке.
48. Петр Шаталов (3sf) 05.03.13 21:40
49. Andrey (RubikJan) 17.09.14 05:46
{Форма.Форма(50)}: Ошибка при вызове метода контекста (Выполнить): {(6, 2)}: Неоднозначное поле "Регистр.Регистратор.Номер"
<<?>>Регистр.Регистратор.Номер ЕСТЬ NULL
Выборка = Запрос.Выполнить().Выбрать();
УТ 10.3.7.9
50. Иванов Иван (rozan) 08.05.15 12:53
Огромное спасибо!!! Все получилось с первого раза.
Столько времени было потеряно зря.
51. Расул Хадисов (lambert) 07.10.15 15:54
А, как это лечится?

{Форма.Форма.Форма(50)}: Ошибка при вызове метода контекста (Выполнить)
Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(6, 2)}: Неоднозначное поле "Регистр.Регистратор.Номер"
<<?>>Регистр.Регистратор.Номер ЕСТЬ NULL
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа