Битые ссылки, объект не найден, поиск удаленного объекта

10.12.18

Задачи пользователя - Поиск данных

Обработка ищет битые ссылки по записям в журнале регистрации, распознает их GUID и получает по нему ссылку (последнее можно использовать для распознания объекта в резервной копии базы). Протестировано на конфигурации ЗУП 3.1.5 - 3.1.8, но будет работать практически на любой конфигурации на УФ.

Скачать исходный код

Наименование Файл Версия Размер
ПоискИРаспознаваниеБитыхСсылок
.epf 14,23Kb
87
.epf 14,23Kb 87 Скачать

Практически каждый программист 1С сталкивался со следующей ситуацией: кто-то из пользователей случайно/намеренно помечает на удаление объект информационной базы. В зависимости от ситуации можно действовать по-разному:

  • Ничего не искать и не выяснять, подойти к проблеме философски - заранее понять и простить виновника и просто снять пометку удаления. На мой взгляд, так и стоит поступить, если последствия незначительны, подобные случаи легко обнаруживаются пользователем и вообще никого это не волнует нет веской причины для выяснения обстоятельств;
  • Найти записи о пострадавшем объекте в журнале регистрации, установить виновника - пользователь установивший пометку удаления, совершил ли он это действие со своего компьютера или пытался кого-то подставить (скандалы, интриги, расследования) и действовать в соответствии с полученной информацией;
  • Обнаружить, что по факту объект в информационной базе полностью отсутствует. В попытках восстановить хронологию событий в журнале регистрации осознать, что записи по нему не обнаружены, хотя у нас есть веские доказательства его существования. Для такого случая как раз и создана эта обработка.

Не смотря на то, что поиск элемента в журнале регистрации результата не выдает, в нем могут записи вида <Объект не найден>. Данная обработка выводит все подобные записи за указанный период:

Желательно не задавать большой период, особенно на базах с большим количеством пользователей и большим объемом данных.

Если вы начинающий программист, то обратите внимание, что в случае явного удаления объекта, в первую очередь нужно проверить всех пользователей на наличие права доступа "Непосредственное удаление", т.е. право удаления объектов без контроля ссылочной целостности. Также стоит проверить все внешние обработки и конфигурацию а использование метода "Удалить()", которые также действует без использования контроля ссылочной целостности. 

С помощью материалов сайта https://helpf.pro/faq/view/483/html (огромное спасибо автору) с переделкой под управляемый формы была создана обработка для получения GUID из строки вида " <Объект не найден> (84:bf5600145e3710ab11dda4c605dbe824)". Далее, в копии информационной базы с помощью той же обработки по этому GUID были получены ссылки этих объектов и таким образом удалось отследить всю историю событий:

Отпуск под номером 42-кд был создан и проведен одним пользователем, снят с проведения и помечен другим и удален из базы данных фоновым заданием, т.е. обработкой "УдалениеПомеченныхОбъектов", вот это поворот.  

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

 

"<объект не найден>" ЖурналРегистрации УдалениеПомеченныхОбъектов

См. также

Быстрый поиск дублей с четким/нечетким поиском по любому сочетанию реквизитов/реквизитов таб. частей с отбором и быстрой заменой значений в ЛЮБЫХ базах 8.1-8.3 (УТ 10.3, БП 2, ЗУП 2.5, КА 1.1, УТ 11, БП 3, УНФ 1.6/3.0, КА 2, ЗУП 3 и т.д.)

Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработки помогут Вам легко и, главное, быстро (в 5 раз и быстрее штатной обработки 1С), выполнить поиск дублирующих данных в Ваших базах 1С на платформах 8.1-8.3. Это позволит уменьшить объем лишней информации в справочниках и документах, планах видов характеристик и др., упростит работу с данными пользователям. А так же можно, одним нажатием, узнать в каких ссылочных объектах есть вообще дубли! Понятное расположение команд и настроек, в сочетании с описанием и справкой, еще упростят процесс. А так же обновления Вы получаете бесплатно в течение года с момента приобретения данных обработок! (Обновление от 27.11.2023, версия 6.12)

10800 руб.

14.05.2012    155613    327    252    

559

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

21600 руб.

15.05.2017    42645    10    24    

38

Кто такая Мантикора?

Поиск данных Платформа 1С v8.3 Россия Абонемент ($m)

Статья об опыте развертывания и интеграции с базой данных Manticore Search для быстрого полнотекстового поиска.

1 стартмани

30.11.2023    3241    andreysidor4uk    16    

46

PowerOffice

Поиск данных Корректировка данных Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

05.06.2023    1972    23    PowerBoy    1    

15

Получение ссылки по бинарной строке PostgreSQL или MSSQL

Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Получение ссылки в 1С по бинарной строке из PostgreSQL в виде строки формата bytea или из MSSQL в виде шестнадцатиричной строки. Кроме ссылочных объектов ссылки могут быть получены и для перечислений. Это может быть полезно при анализе логов журнала регистрации или СУБД.

1 стартмани

04.04.2023    2637    2    berserg    2    

12

Поиск документов с ошибками проведения, универсальный

Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Обработка позволяет найти проведенные документы без движений и, наоборот, НЕ проведенные документы с движениями. Подходит для любой конфигурации.

1 стартмани

18.08.2022    3027    24    KVIKS    3    

10

Поиск и замена значений + Поиск дублирующихся элементов справочников с подключением к внешней базе

Поиск данных Корректировка данных Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 Платные (руб)

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

3600 руб.

30.03.2022    8614    3    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dsdred 3319 10.12.18 13:34 Сейчас в теме
Подобных решений на инфостарте очень много... А почему заранее не быть готовым к такому?



Нестандартная подсистема: Живая вода
+
2. Bene_Valete 188 10.12.18 15:14 Сейчас в теме
(1) Отличная разработка, упрощает жизнь пользователю и программисту. Надо бы тоже полистать БСП в поисках интересного)
Конечно, есть много подобных обработок, но в основном они направлены на получение GUID объекта. Данная же предназначена для получения конкретной информации о факте удаления объекта. Зачастую необходимо конкретно знать, кто из пользователей "косячит", делает он это со злым умыслом или нет. Можно сколько угодно восстанавливать объекты из версий, а можно один раз поговорить с человеком и это решит проблему (или нет, но он осознает, что за ним следят:) ) Превентивные меры это конечно хорошо, но решения пост-фактум тоже должны быть. Никому не навязываю свое мнение, мне данная разработка не раз пригождалась, поэтому решила ей поделиться)
+
3. dsdred 3319 10.12.18 16:20 Сейчас в теме
(2)
Зачастую необходимо конкретно знать, кто из пользователей "косячит", делает он это со злым умыслом или нет.

Никто не мешает перед удалением записывать автора. Я же выдрал из БСП Версионирование, там как раз делается версия, автор, дата.
+
4. Bene_Valete 188 11.12.18 04:35 Сейчас в теме
(3) Это все замечательно, но это также превентивные меры. Если ситуация уже произошла, к примеру кто-то удалил большой объем документов и это повлекло негативные последствия, руководство требует найти виновника. Если базы достаются по наследству, либо программист работает во франчайзи/фрилансе, не важно как было все организовано раньше, и как можно это сделать в будущем - нужен результат. А потом уже все что угодно, любые мероприятия по предотвращению.
+
5. dsdred 3319 11.12.18 10:30 Сейчас в теме
(4)Хорошо вот стандартная ситуация.
Фирма без администратора и программиста в штате. Обслуживает ее кто то (не обязательно франч) с мелким ценником и таким же качеством обслуживания.
Бекапов нет(это всплыло когда уже что-то плохое произошло).
Журнал регистрации не ведется(экономия места).
У всех в базе полные права.

Ситуация произошла но тут и вы не поможете.
П.С. А фирм таких очень много...
Прикрепленные файлы:
+
6. Bene_Valete 188 11.12.18 11:47 Сейчас в теме
(5) У описанной фирмы все очень плохо, я думаю ей кто-то в ней захочет навредить, то тут не поможете и Вы) Ну а если серьезно, я вроде как не отрицаю, что предусмотрительный контроль это хорошо или даже необходимо, но если есть возможность, то почему бы не разобраться в произошедшем, используя доступные на данный момент средства?
Насколько я знаю, многие не используют версионирование из-за увеличения объема базы данных и снижения производительности, если они отключили даже журнал регистрации для экономии места, не будут ли занимать еще больше места версии объектов? (это не ирония, я действительно хочу знать что оптимальнее)
dsdred; +1
7. dsdred 3319 11.12.18 12:06 Сейчас в теме
(6)
это не ирония, я действительно хочу знать что оптимальнее


Поэтому и планирую в будущем некое хранилище данных в которое будут стикать версии с различных баз по http, а потом может и ВИД сделаю. И лежать оно может где угодно хоть в облаке.
Вот что я считаю оптимальным. Но до этого хочу дорисовть другую подсистему.
+
8. Bene_Valete 188 12.12.18 04:13 Сейчас в теме
(7) Получается, это что-то вроде резервной копии отдельных данных базы на внешнем источнике?
+
9. dsdred 3319 12.12.18 08:47 Сейчас в теме
(8)Да. Копия удаленных объектов.
Пока только в текущей базе, потом будет некое центральное хранилище(отдельная конфигурация с http-сервисами, а потом и возможно некий скрипт для разворачивания на голой СУБД).
Bene_Valete; +1
10. V.Nikonov 120 18.12.18 14:13 Сейчас в теме
(2) А разве объекты не удаляются "по делу"? Например, зачем в базе дубликаты Контрагентов, Номенклатуры и т.п. Их вроде как можно и нужно удалять...
+
12. Bene_Valete 188 19.12.18 15:02 Сейчас в теме
(10) Вы читали описание публикации? Как это связано с объектами, который удаляются "по делу"?)
+
15. V.Nikonov 120 21.12.18 11:14 Сейчас в теме
(12) Так в Журнале регистрации нет пометок о причине удаления... По делу или злонамеренно - не вычислишь!
Получается полный список, в котором неизвестным способом ищется один или несколько Объектов... Вероятно поиск происходит по Представлению... Методика поиска нужного документа не раскрыта.

Есть не совсем криминальный сценарий: Пользователь с целью внесения исправлений, делает копию документа, правит с проведением. А заодно удаляет неправильный источник.

P.S. Предпочтительнее перед загрузкой из копии, иметь возможность посмотреть реквизиты документа...
Кстати, а связанные документы как подгружаются (например, связка Реализация + СчетФактура)? Индивидуальным указанием каждого из них?
+
11. V.Nikonov 120 18.12.18 14:19 Сейчас в теме
А если вместо рукоприкладства "Вредного Юзера" рухнет винт компьютера? И рабочая база "улетит в небытие"?
ПЕРВОЕ правило - делай резервную копию, что бы потом не было "Мучительно больно" восстанавливать данные!
+
13. Bene_Valete 188 19.12.18 15:18 Сейчас в теме
(11) Спасибо за проявленный интерес, но вы ничего не перепутали? Данная обработка позволяет исправить ситуацию де-факто, когда все уже свершилось. Где вы увидели, что я советую не делать резервные копии?) В публикации указано, что GUID удаленного неопознанного объекта мы распознаем как раз в резервной копии.
+
14. V.Nikonov 120 21.12.18 11:07 Сейчас в теме
(13) Данное примечание не Вам, а прочим читателям. Просто акцентирую внимание на то, что восстановить можно из достаточно свежей резервной копии...
+
Оставьте свое сообщение