Как программно добавить файл в «Хранилище дополнительной информации» в 1С:Управление торговлей 10.3?

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

При автоматизации документооборота в 1С часто возникает задача сохранения сформированных документов (например, договоров, созданных через COM-объект Word) непосредственно в базу данных. В конфигурации Управление торговлей 10.3 для этих целей часто используется справочник ХранилищеДополнительнойИнформации. Давайте разберем по шагам, как правильно реализовать этот процесс.

Подготовка двоичных данных для записи

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

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

Алгоритм программного создания элемента справочника

Разберем процесс создания записи в справочнике ХранилищеДополнительнойИнформации. Основная сложность заключается в правильном заполнении реквизитов, в частности, ссылки на объект-владелец и самого хранилища.

  1. Создаем новый элемент справочника методом СоздатьЭлемент().
  2. Присваиваем реквизиту Объект ссылку на контрагента. Важно убедиться, что тип ссылки (например, СправочникСсылка.Контрагенты) включен в состав типов реквизита в Конфигураторе.
  3. Заполняем реквизит ВидДанных — это справочная информация, которая определяет категорию файла.
  4. Записываем содержимое файла в реквизит Хранилище, используя конструктор Новый ХранилищеЗначения().

Пример программного кода

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


// Сохраняем документ Word на диск
ПутьКФайлу = "F:\Dogovora\IP\" + НомеДог + ".doc";
Word.SaveAs(ПутьКФайлу, 0);

// Создаем двоичные данные
ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлу);

// Создаем элемент в справочнике ХранилищеДополнительнойИнформации
Файл = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
Файл.Объект = СсылкаНаКонтрагента; // Передаем нужную ссылку
Файл.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Файл;
Файл.Наименование = "Договор №" + НомеДог;
Файл.ИмяФайла = ПутьКФайлу;
Файл.Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные);

// Записываем элемент
Файл.Записать();

// Удаляем временный файл после успешной загрузки
УдалитьФайлы(ПутьКФайлу);

Решение проблем с типизацией и записью

В процессе работы вы можете столкнуться с ошибками, такими как Справочник не имеет владельца или Метод объекта не обнаружен. Разберем, почему это происходит:

  1. Ошибка «Справочник не имеет владельца»: Скорее всего, вы пытаетесь присвоить значение в поле Владелец. В справочнике ХранилищеДополнительнойИнформации связь с контрагентом или документом осуществляется через реквизит Объект, а не через механизм владельца справочников. Просто уберите обращение к Владелец.
  2. Ошибка при записи (поле Объект): Если при программной записи реквизит Объект не заполняется или выдает ошибку, проверьте в Конфигураторе состав типов для данного реквизита. Необходимо добавить тип СправочникСсылка.Контрагенты (или любой другой нужный вам объект) в список разрешенных типов.
  3. Очистка временных файлов: Если после закрытия Word в папке пользователя остаются «мусорные» файлы, убедитесь, что вы принудительно закрываете приложение Word методом Word.Quit(). Это позволит платформе корректно завершить все процессы с объектом COM.

Рекомендации по развитию решения

Если ваша задача со временем станет сложнее — появится необходимость в версионировании файлов, настройке прав доступа к отдельным документам или их шифровании — рассмотрите возможность перехода на типовой механизм Присоединенные файлы, реализованный в современных версиях конфигураций 1С. Механизм ХранилищеДополнительнойИнформации отлично подходит для простых задач, но для полноценного электронного архива лучше использовать специализированные регистры и справочники, предоставляемые платформой.

Надеемся, данная инструкция поможет вам успешно интегрировать хранение файлов в вашу конфигурацию 1С:Управление торговлей 10.3!

← На главную