Как 1С:Управление торговлей 10 хранит прикрепленные файлы и почему они не пропадают после удаления оригинала?

Пользователь 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Часто пользователи 1С:Управление торговлей редакции 10.3 сталкиваются с ситуацией, которая кажется на первый взгляд нелогичной: вы прикрепляете файл к документу (например, с рабочего стола), затем удаляете этот файл с компьютера, но в 1С он продолжает открываться как ни в чем не бывало. Давайте подробно разберем, как устроена эта система, и выясним, где на самом деле находятся ваши данные.

Механизм работы справочника Хранилище дополнительной информации

Для начала проанализируем, какой объект в системе отвечает за работу с прикрепленными изображениями, сертификатами и документами. В конфигурации УправлениеТорговлей версии 10 за это отвечает специальный справочник ХранилищеДополнительнойИнформации. Когда вы нажимаете кнопку "Добавить" в форме списка файлов документа, система запускает процедуру копирования.

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

Разберем два режима хранения файлов

В настройках системы (обычно это доступно в настройках параметров учета или настройках пользователя) можно выбрать, каким именно образом 1С будет создавать эти копии. Рассмотрим подробнее каждый вариант:

  1. Хранение непосредственно в информационной базе. В этом режиме содержимое файла преобразуется в специальный объект типа ХранилищеЗначения и записывается прямо в таблицу базы данных (SQL или файл 1Cv8.1CD).
    • Плюсы: Файлы всегда "под рукой", они попадают в общий бэкап базы.
    • Минусы: Размер базы данных стремительно растет, что может замедлить работу и усложнить процесс резервного копирования.
  2. Хранение в томах на диске (внешнее хранение). Если в системе настроены "Тома хранения файлов", то при загрузке 1С не "запихивает" файл в таблицу, а копирует его в заранее определенную сетевую папку на сервере. В самой же базе данных сохраняется только служебная информация и путь к этому новому месту в хранилище.
    • Плюсы: База данных остается легкой, файлы можно хранить на дешевых и объемных дисковых массивах.
    • Минусы: Нужно следить за правами доступа к сетевой папке и настраивать отдельное резервное копирование этих томов.

Почему в карточке отображается старый путь к файлу?

Выясним причину, по которой пользователь видит путь вроде C:\Users\Admin\Desktop\photo.jpg, даже если файл там давно удален. В справочнике ХранилищеДополнительнойИнформации есть реквизиты, которые фиксируют метаданные исходного файла. Поле "Имя файла" или "Путь" в данном контексте является чисто информационным. Оно сохраняется для того, чтобы вы знали, как назывался файл в момент загрузки и откуда он пришел. Программа не использует этот путь для открытия файла, если он уже был успешно импортирован в систему.

Как происходит процесс открытия файла для просмотра

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

  1. Программа обращается к объекту ХранилищеДополнительнойИнформации.
  2. Система извлекает двоичные данные (либо из поля таблицы базы данных, либо считывает файл из настроенного сетевого тома).
  3. 1С создает временный файл на локальном компьютере текущего пользователя. Обычно это папка %Temp% или подпапки в AppData\Local\Temp.
  4. После того как временный файл создан, 1С дает команду операционной системе Windows: "Открыть этот файл приложением по умолчанию".

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

Как проверить, где физически лежит файл?

Если вы хотите точно знать, куда уходят ваши данные, проанализируем ситуацию с помощью инструментов разработчика или администратора:

Во-первых, проверьте настройки программы. Перейдите в меню Сервис — Настройки учета — Настройки параметров учета. Там должна быть закладка, связанная с хранением файлов. Если флаг "Хранить файлы в томах на диске" не установлен, значит, все ваши файлы "раздувают" саму базу данных.

Во-вторых, если вы обладаете навыками программирования, можно посмотреть на код извлечения данных. В типовых решениях на обычных формах (как УТ 10) это может выглядеть примерно так:


// Пример логики получения данных
ДанныеХранилища = СсылкаНаЭлементХранилища.Хранилище.Получить();
Если ТипЗнч(ДанныеХранилища) = Тип("ДвоичныеДанные") Тогда
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла(СсылкаНаЭлементХранилища.Расширение);
    ДанныеХранилища.Записать(ИмяВременногоФайла);
    ЗапуститьПриложение(ИмяВременногоФайла);
КонецЕсли;

Здесь метод Получить() извлекает данные из объекта ХранилищеЗначения, после чего они записываются на диск во временную директорию методом Записать(). Именно эта цепочка действий объясняет независимость 1С от оригинального файла на рабочем столе.

Подведем итог

Мы выяснили, что "внешний файл" в терминах 1С:УТ 10 — это не прямая ссылка на файл на вашем диске, а копия, помещенная во внутреннее или внешнее хранилище системы. Удаление оригинала — это нормальная практика, так как 1С уже "забрала" все необходимые данные себе. Если ваша база стала слишком тяжелой, рассмотрите возможность настройки Томов хранения файлов, чтобы вынести данные из SQL-таблиц на обычный жесткий диск сервера.

← На главную