Работа с файлами в 1С в управляемом приложении всегда разделяется между клиентом и сервером. Пользователь выбирает файл на своём компьютере на клиенте; обработка, проверка и запись данных обычно выполняются на сервере. Нельзя передавать серверу путь вроде C:\Загрузки\товары.xlsx: этот путь существует только на компьютере пользователя.
Временное хранилище передаёт данные между контекстами 1С без открытия доступа к диску пользователя. Адрес хранилища — короткая служебная строка. По нему сервер получает файл, а клиент показывает пользователю сообщения об ошибках. Это работает в тонком и веб-клиенте, где прямой доступ сервера к локальным папкам невозможен.
&НаСервереБезКонтекста
Функция ПроверитьЗагруженныйФайл(АдресФайла)
ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(АдресФайла);
Если ДвоичныеДанныеФайла = Неопределено Тогда
Возврат Новый Структура("Успех,Текст", Ложь, "Файл не найден во временном хранилище");
КонецЕсли;
// Дальше — чтение формата файла и проверка структуры данных.
Возврат Новый Структура("Успех,Текст", Истина, "Файл принят");
КонецФункции
Для CSV и текстовых файлов сначала договоритесь о кодировке и разделителе. Для Excel проверьте, есть ли в файле обязательные колонки, прежде чем создавать документы. Для изображений и PDF ограничьте размер и список допустимых типов. Внешний файл нельзя считать доверенным: он может быть повреждён, иметь неправильную структуру или содержать миллионы строк.
Хорошая загрузка делает два этапа: «Проверить» и «Загрузить». На первом этапе обработка показывает число строк, пропущенные реквизиты, дубли и ссылки, которые не найдены. На втором — записывает данные в транзакции или небольшими порциями. Тогда пользователь не получает частично загруженную базу из-за одной ошибки в середине файла.
Если КоличествоОшибок > 0 Тогда
Сообщить("Исправьте ошибки в файле перед загрузкой.");
Возврат;
КонецЕсли;
// Запись документов или регистра выполняется только после проверки.
Если требуется загрузка прайс-листа, заказов, остатков или вложений из личного кабинета, подготовим обработку с журналом ошибок, сопоставлением колонок и контролем дублей. Опишите формат файла — оценим задачу до начала работ.
Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.