Прикрепление отсканированного документа в 1С может понадобиться для разных целей:
- Хранение копий первичных документов (счетов, накладных, актов)
- Документирование процесса (например, прикрепление скана заявления сотрудника)
- Создание архива документов
Существует несколько способов прикрепить отсканированный документ в 1С, каждый из которых имеет свои особенности и подходит для разных задач:
1. Использование механизма “Присоединенные файлы” (наиболее распространенный и рекомендуемый способ):
- Описание: Механизм присоединенных файлов – это стандартный механизм 1С, предназначенный для хранения связанных с объектами базы данных файлов (в том числе и отсканированных документов).
- Преимущества:
- Стандартный механизм 1С, не требующий доработок конфигурации (в большинстве случаев).
- Удобный интерфейс для добавления, просмотра и удаления файлов.
- Возможность хранения файлов в базе данных или в отдельных каталогах на диске.
- Управление версиями файлов.
- Полнотекстовый поиск по содержимому файлов (если настроено).
- Порядок действий:
- Убедитесь, что для нужного объекта (справочника, документа) включена возможность использования присоединенных файлов.
- Как проверить: Откройте конфигуратор 1С. Найдите нужный объект (например, справочник “Контрагенты” или документ “Поступление товаров и услуг”). Откройте его свойства. Найдите флаг “ИспользоватьПрисоединенныеФайлы”. Если он не установлен, установите его и обновите конфигурацию базы данных.
- Откройте форму нужного элемента или документа.
- Найдите кнопку или раздел “Присоединенные файлы” (название может отличаться в зависимости от конфигурации). Если такого раздела нет, то его можно добавить на форму.
- Как добавить раздел “Присоединенные файлы” на форму: Откройте форму элемента или документа в конфигураторе. Перетащите элемент “Присоединенные файлы” из панели элементов на форму. Сохраните изменения в конфигурации.
- Нажмите кнопку “Добавить” (или аналогичную) в разделе “Присоединенные файлы”.
- Выберите отсканированный файл (PDF, JPG, TIFF и т.д.) с диска.
- Укажите описание файла (необязательно).
- Сохраните изменения.
- Просмотр присоединенных файлов: Для просмотра присоединенного файла нажмите на его название в списке присоединенных файлов. Файл откроется в программе, установленной по умолчанию для данного типа файлов.
2. Использование поля типа “ХранилищеЗначения” или “ДвоичныеДанные”:
- Описание: Создание поля типа “ХранилищеЗначения” или “ДвоичныеДанные” в нужном объекте (справочнике, документе) и сохранение отсканированного файла непосредственно в этом поле.
- Преимущества: Простота реализации.
- Недостатки:
- Увеличение размера базы данных.
- Ограниченные возможности для работы с файлами (нет управления версиями, полнотекстового поиска и т.д.).
- Не рекомендуется для хранения больших файлов.
- Порядок действий:
- Откройте конфигуратор 1С.
- Найдите нужный объект (справочник, документ).
- Добавьте новое поле с типом “ХранилищеЗначения” или “ДвоичныеДанные”.
- На форму элемента или документа добавьте элемент управления для работы с этим полем (например, кнопку “Загрузить файл” и поле отображения имени файла).
- Напишите код, который будет загружать файл с диска и сохранять его в поле типа “ХранилищеЗначения” или “ДвоичныеДанные”.
- Пример кода (загрузка файла в “ХранилищеЗначения”):
§ &НаКлиенте
§ Процедура ЗагрузитьФайл(Команда)
§
§ ДиалогВыбораФайла = Новый ДиалогВыбораФайла;
§ ДиалогВыбораФайла.Заголовок = "Выберите файл";
§ ДиалогВыбораФайла.Фильтр = "Все файлы (*.*)|*.*";
§
§ Если ДиалогВыбораФайла.Выбрать() Тогда
§
§ ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ДиалогВыбораФайла.ПолноеИмяФайла);
§ Объект.ФайлДокумента = Новый ХранилищеЗначения(ДвоичныеДанныеФайла, Новый СжатиеДанных(9)); // 9 - максимальная степень сжатия
§ Объект.ИмяФайла = ДиалогВыбораФайла.ИмяФайла;
§ КонецЕсли;
§
§ КонецПроцедуры
- Пример кода (отображение имени файла):
§ &НаСервере
§ Процедура ПриЧтенииНаСервере(ТекущийОбъект)
§
§ Объект.ИмяФайла = "";
§ Если Объект.ФайлДокумента <> Неопределено Тогда
§ ДвоичныеДанные = Объект.ФайлДокумента.Получить();
§ Объект.ИмяФайла = "Имя файла: " + Строка(ДвоичныеДанные.ИмяФайла); // Если в ХранилищеЗначения не хранится имя, нужно его где-то хранить отдельно.
§ КонецЕсли;
§
§ КонецПроцедуры
- Сохраните изменения в конфигурации.
- Просмотр прикрепленных файлов: Для просмотра файла нужно написать код, который будет извлекать данные из поля “ХранилищеЗначения” или “ДвоичныеДанные” и сохранять их во временный файл на диске, а затем открывать этот файл с помощью команды ОткрытьФайл().
3. Сохранение файлов на диске и хранение пути к файлу в 1С:
- Описание: Сохранение отсканированных файлов в определенной папке на диске или в сетевом каталоге и хранение пути к файлу в поле типа “Строка” в нужном объекте (справочнике, документе).
- Преимущества: Не увеличивает размер базы данных.
- Недостатки:
- Требуется организация структуры хранения файлов на диске.
- Необходимо обеспечивать доступ к файлам для всех пользователей 1С.
- Нет управления версиями файлов.
- Сложность с резервным копированием файлов.
- Потеря связи, если файл перемещен или удален с диска.
- Порядок действий:
- Организуйте структуру хранения файлов на диске.
- Откройте конфигуратор 1С.
- Найдите нужный объект (справочник, документ).
- Добавьте новое поле с типом “Строка”.
- На форму элемента или документа добавьте элементы управления для выбора файла и отображения пути к файлу.
- Напишите код, который будет сохранять файл на диске и сохранять путь к файлу в поле типа “Строка”.
- Пример кода:
§ &НаКлиенте
§ Процедура ВыбратьФайл(Команда)
§
§ ДиалогВыбораФайла = Новый ДиалогВыбораФайла;
§ ДиалогВыбораФайла.Заголовок = "Выберите файл";
§ ДиалогВыбораФайла.Фильтр = "Все файлы (*.*)|*.*";
§
§ Если ДиалогВыбораФайла.Выбрать() Тогда
§ // Получаем имя файла
§ ИмяФайла = ДиалогВыбораФайла.ИмяФайла;
§ // Получаем расширение файла
§ РасширениеФайла = Прав(ИмяФайла, СтрДлина(ИмяФайла) - Найти(ИмяФайла, "."));
§
§ //Формируем новое имя файла
§ НовоеИмяФайла = Строка(Новый УникальныйИдентификатор()) + "." + РасширениеФайла;
§
§ //Указываем путь для сохранения файла
§ ПутьСохраненияФайла = "C:\Archive\"; //Замените на свой путь
§
§ ПолныйПутьКФайлу = ПутьСохраненияФайла + НовоеИмяФайла;
§
§ //Копируем файл
§ Попытка
§ Файл = Новый Файл(ДиалогВыбораФайла.ПолноеИмяФайла);
§
§ Если Файл.Существует() Тогда
§ КопироватьФайл(ДиалогВыбораФайла.ПолноеИмяФайла,ПолныйПутьКФайлу,Ложь);
§ Объект.ПутьКФайлу = ПолныйПутьКФайлу;
§ КонецЕсли;
§
§ Исключение
§ Сообщить("Ошибка копирования файла: " + ОписаниеОшибки());
§ КонецПопытки;
§ КонецЕсли;
§
§ КонецПроцедуры
- Сохраните изменения в конфигурации.
- Просмотр прикрепленных файлов: Для просмотра файла нужно написать код, который будет читать путь к файлу из поля типа “Строка” и открывать файл с помощью команды ОткрытьФайл().
Рекомендации по выбору способа:
- Если вам нужно хранить небольшое количество файлов, связанных с объектами базы данных, и важна простота реализации – используйте поле типа “ХранилищеЗначения” или “ДвоичныеДанные”.
- Если вам нужно хранить большое количество файлов, и важна организация хранения, управление версиями и полнотекстовый поиск – используйте механизм “Присоединенные файлы”.
- Способ с сохранением файлов на диске следует использовать только в крайнем случае, когда другие способы не подходят.
Важно!
- Перед внесением изменений в конфигурацию, сделайте резервную копию базы данных!
- При использовании любого из способов необходимо учитывать требования безопасности и защиты информации.
В большинстве случаев, использование механизма “Присоединенные файлы” является наиболее предпочтительным и рекомендуемым способом прикрепления отсканированных документов в 1С.