Куда же деваются файлы из 1С

23.05.24

База данных - Администрирование СУБД

При хранении файлов в томах на диске они иногда исчезают. Разбираемся, почему.

Описываю возникший кейс. 

Пользователи добавили прикрепленные файлы к проекту договора. Через день база пишет "Не удалось открыть файл "Данные недоступны, т.к. возможно файл был очищен как ненужный или удален антивирусной программой". 

 

 

Понятно, что первое, что я сделал - наехал на админов, что файлы были, а теперь их нет. И т.к. это не первый подобный случай, то они поставили логирование. Как же мне было стыдно, что после включения логирования выяснилось, что файлы удаляет пользователь службы 1С.

Вот результаты логирования:

 

 

Что мы получили из логов, учитывая, что у нас тьма баз и все под одним пользователям - дату удаления файла. 

Начали шерстить все журналы регистрации, что же произошло в эту секунду. 

Нашли, что это было типовое фоновое задание по удалению помеченных на удаление объектов. 

Оказывается теперь 1С очищает в томах сами файлы, если элемент справочника был помечен на удаление. 

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

Разворачиваем копию, где файлы ещё живы, открываем присоединенные файлы и там вроде всё норм, но ставим галочку "Показывать помеченные файлы", и уже картина становится понятна:

 

 

Получается, у нас 2 элемента справочника Файлы, которые ссылаются на один и тот же файл на диске. 

У нас типовая 1С (по подсистеме работы с файлами), и она позволяет это делать.

Получается, при удалении помеченного файла система очищает и сам файл. И второй файл теперь пустой!

Тут несколько вариантов решения, которые хорошо, чтобы 1С реализовала в коробке - или не давать создавать файлы с одним именем, или хотя бы при удалении проверять, что есть другой элемент справочника с ссылкой на тот же файл. Я пока закомментировал удаление файла из каталога при пометке на удаление файла.

 

См. также

Администрирование СУБД Системный администратор Платформа 1С v8.3 Бесплатно (free)

Пользовался ранее https://infostart.ru/1c/articles/1120161/#, но она устарела, т.к. службы запускаются через systemctl, да и сами службы слегка изменились. Возможно, где-то на ИТС уже есть нужная инструкция, но мне не попалась.

15.11.2024    297    Baser    2    

1

HighLoad оптимизация Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Россия Бесплатно (free)

Мы исследуем проблему долгого выполнения запросов PostgreSQL при использовании конструкции VALUES: когда она возникает, как на нее можно повлиять, а главное, почему ее продуманная отработка важна для более быстрого функционирования решений на базе 1С

12.11.2024    829    Tantor    19    

14

HighLoad оптимизация Администрирование СУБД Механизмы платформы 1С Программист Платформа 1С v8.3 ИТ-компания Россия Бесплатно (free)

В данной статье мы рассмотрим, как работает механизм временных таблиц на postgres на платформе 8.3.23 и что изменилось в нем при добавлении новых возможностей в платформе 8.3.25. А также на примере покажу, как понимание работы платформы позволяет оптимизировать СУБД для работы с 1С.

29.10.2024    3136    Tantor    38    

34

Администрирование СУБД Системный администратор Программист Бесплатно (free)

CDC - очень мощный механизм, который можно использовать во многих сценариях, возможность развернуть его в Docker показывает простоту и лёгкость данной технологии.

08.10.2024    729    AlexSvoykin    1    

7

Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Анализ и решение ошибок СУБД. Во время реиндексации базы Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Не удалось найти объект "ИмяБазы.dbo._RefSInf21806", так как он не существует, или отсутствуют разрешения. Во время проверки целостности Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта "dbo._RefSInf21806".

19.09.2024    4341    Xershi    10    

17

HighLoad оптимизация Администрирование СУБД Архивирование (backup) Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Бэкап в Postgres состоит из набора граблей, которые нужно обойти для успешного восстановления. Они заложены в самых неожиданных местах от предмета резервного копирования (база или кластер) до структуры каталогов. Один неверный шаг и восстановление будет невозможным. Почему нельзя было сделать проще, как в MS SQL или Oracle? Почему бэкап в Postgres оставляет впечатление чьей-то лабораторной работы? Статья адресована прежде всего специалистам 1С, избалованным комфортом в MS SQL, в суровых буднях импортозамещения на Postgres.

13.08.2024    2966    1CUnlimited    9    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. METAL 299 23.05.24 19:20 Сейчас в теме
Круто! Спасибо за опыт расследования и изящное решение!

наехал на админов,... они поставили логирование

А можете также поделиться, если известно, через какой сервис админы настроили такое логирование?
EvgeniyOlxovskiy; +1 Ответить
5. brolin 24.05.24 09:27 Сейчас в теме
(1)
Средствами СХД. Если шара на Windows - можно включить политику аудита доступа к файлам. Появится соответствующий журнал.
2. Xershi 1555 23.05.24 19:38 Сейчас в теме
А что должна была делать 1С с помеченными на удаление? Оставлять файлы?
Тут как говорится сам д....
Но я не об этом. Раз развернули копию, то в ней нужно заблокировать выполнение регламентных задач. Понятно что по не опытности про это забывают или забивают - выбрать нужное.
А вот про имя файла не совсем понял. Т.е. в копии добавили после такой же файл? Изначально его там не было?
Это что за копия на сервере? И почему один том для разных баз используется?
3. ltfriend 24.05.24 08:05 Сейчас в теме
(2) вариант написан в самой статье. Проверять, нет ли ссылки на файл в других элементах справочника и, если нет, то тогда уже удалять.
PAM3000; mrsmrv; +2 Ответить
4. human_new 694 24.05.24 09:13 Сейчас в теме
(2)У нас действительно один том на разные базы, т.к. настроен обмен файлами УТ->БП. Хорошо бы бесшовно через ДО, и он тоже у нас есть, но к УТ его не прикручивали. но все сказанное не имеет отношения к статье, тут речь про один том и то, что пользователи помечают на удаление старый файл и вместо него прикрепляют новый одноименный, а не меняют старый, для меня тоже было открытием.
Andreev.a; +1 Ответить
8. Xershi 1555 24.05.24 11:23 Сейчас в теме
(4) т.е. проблема кроется в не очевидном лайфхаке пользователей 1С?
Пользователю 1С не понравился файл он его пометил на удаление, а затем на своем ПК отредактировал и добавил новый этот же файл. Т.е. вместо того чтобы обновить помеченный на удаление?
А разве не должно было создать подпапку с днем добавления в томе? Чтобы такая коллизия не произошла?
Детально не разбирал этот момент, но тут похоже кроме косяка пользователя не доработка со стороны 1С. Напишите тикет в ТП.
Andreev.a; comptr; +2 Ответить
6. brolin 24.05.24 09:28 Сейчас в теме
> Понятно, что первое, что я сделал - наехал на админов

Ну-ну. ))
15. i81khis 25.05.24 10:16 Сейчас в теме
Это у 1Сников с материнским молоком впитано🤣.
Зачем код оптимизировать, добавьте ещё ресурсов...
16. KudelinMB 26.05.24 18:59 Сейчас в теме
(15) Да, очень хорошо писать про оптимизацию кода, когда у тебя ERP на поддержке :)
7. Vasvas05 27 24.05.24 10:34 Сейчас в теме
Получается, у нас 2 элемента справочника Файлы, которые ссылаются на один и тот же файл на диске.

У нас типовая 1С (по подсистеме работы с файлами), и она позволяет это делать.


А это как типовым делаете? По логике так делать нельзя, на практике тоже, когда создаешь новый элемент, он добавляем новый файл на диск с уникальным названием
11. human_new 694 24.05.24 15:31 Сейчас в теме
(7) Проверил, в рамках одного дня при добавлении 1с добавляет новый каталог "/р" например и закинет туда этот файл, но у нас так не работало, 1с не добавляла новый файл, а делала ссылку на имеющийся.
17. PLAstic 296 27.05.24 19:21 Сейчас в теме
Не тому учит автор... Ох, не тому...

Нашёл ошибку - напиши на хотлайн, чай не пираты. Ты поправил - только у себя. Зарегал ошибку - поправят у всех.

И, кстати, что за конфа и версия?
9. KomarovVA 24.05.24 14:10 Сейчас в теме
Имя файла на диске должно содержать уникальный идентификатор, и в регистре путь до файла так же должен его содержать, тогда будут удалены нужные файлы
10. insurgut 208 24.05.24 14:41 Сейчас в теме
Вообще хранение файлов на томах противоречит ссылочной целостности 1С. Тоже были подобные проблемы с томами. Перешли в итоге на хранение файлов в базе. Конечно не для каждой базы это приемлемо.

В свое время когда "боролся" с проблемой хранения файлов в томах - сделал доработку, чтобы файл на том записывался с именем файла = внутреннему идентификатору элемента справочника прикрепленных файлов.
12. Vasvas05 27 24.05.24 16:14 Сейчас в теме
(11) у вас похоже на доработку или очень старая версия БСП, уже давно в конце файла добавляется уникальный идентификатор.
И сами 1с советуют не удалять помеченные на удаление объекты, проще их скрыть.
Самое интересное, что вам еще в 2022 писали об этом, что такая ситуация может быть https://infostart.ru/1c/tools/1738039/
14. Rokov 24.05.24 18:05 Сейчас в теме
(12) можно пруф на совет по не удалению?)
18. Vasvas05 27 03.06.24 20:30 Сейчас в теме
(14)
можно пруф на совет по не удалению?)

какой нужен пруф? Вы сами оцениваете риски свои, ссылку на видео или комментарий, искать долго слишком.

но такой совет есть, на форумах по Документообороту разработчики при выступление советуют не удалять, а скрывать.
Если посмотреть конфигурации 1с Архив, там с удалением еще сложнее сделали.
НО конечно, решать вам, что делать с файлами и тд, и как сильно они мешают и какой плюс от этого получаете, если нет лишних 100Гб, а у нас проще добавить 1Тб на диск, чем потом искать кто удалил.
13. kembrik 10 24.05.24 16:46 Сейчас в теме
Как хорошо что в Элементе "дедупликация" из коробки
Оставьте свое сообщение