Как в 1С 8.x скопировать файл с клиента на сервер в два клика?
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Основная идея заключается в том, чтобы на Клиенте поместить двоичные данные экспортируемого файла во временное хранилище, передать адрес временного хранилища на Сервер, "распаковать" и записать данные в файл.
Для реализации задуманного нам понадобится общий модуль, в который мы заложем основную логику механизма, назовём его МодульЗаписи; и глобальный модуль, содержащий одну единственную процедуру вызова записи на Сервере. Это "транзитная" процедура, которая в сущности является связующим звеном между Клиентом и Сервером.
МодульЗаписи будет иметь две процедуры.
Первая - точка входа. Эта процедура на вход получает имя экспортируемого файла, преобразует его содержимое в двоичные данные, помещает их во временное хранилище и передаёт на выполнение процедуре из Глобального модуля. Вторая процедура вызывается непосредственно из Глобального модуля и выполняет сохранение полученных данных в файл на дисковом пространстве сервера.
Ниже представлен код модуля МодульЗаписи.
// Сохраняет файл на сервере
//
// Параметры
// <ИмяФайла> - <Строка> - содержит адрес файла, который нужно перенести на сервер
// <ЛокальныйАдресКаталога> - <Строка> - содержит адрес каталога на сервере, куда необходимо поместить новый файл
Процедура СохранитьФайлНаСервере(ИмяФайла, ЛокальныйАдресКаталога, Расширение = ".xml") Экспорт
Если ПустаяСтрока(ИмяФайла) Тогда
Возврат;
КонецЕсли;
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
Идентификатор = Новый УникальныйИдентификатор;
АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные, Идентификатор);
ВызватьЗаписьНаСервере(АдресХранилища, ЛокальныйАдресКаталога, Расширение);
КонецПроцедуры
&НаСервере
// Выполняет запись файла из временного хранилища на диск
Процедура ЗаписатьНаСервер(АдресХранилища, ЛокальныйАдресКаталога = "", Расширение) Экспорт
// Проверим заполнен ли адрес временного хранилища, откуда будем брать файл
Если ПустаяСтрока(АдресХранилища) Тогда
Возврат;
КонецЕсли;
// Проверим заполнен ли адрес каталога для записи
Если ПустаяСтрока(ЛокальныйАдресКаталога) Тогда
// По умолчанию дирректорию устнавливаем "C:\1C"
ЛокальныйАдресКаталога = "C:\1C";
КонецЕсли;
// Проверим существует ли указанный каталог
КаталогЗаписи = Новый Файл(ЛокальныйАдресКаталога);
Если НЕ КаталогЗаписи.Существует() Тогда
СоздатьКаталог(ЛокальныйАдресКаталога);
КонецЕсли;
ЛокальныйАдресКаталога = ЛокальныйАдресКаталога;
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища);
ИмяФайла = Новый УникальныйИдентификатор;
Попытка
// Записать файл на сервере
ДвоичныеДанные.Записать(ЛокальныйАдресКаталога + "\" + ИмяФайла + Расширение);
Исключение
ЗаписьЖурналаРегистрации("Запись XML-файла на сервере.", УровеньЖурналаРегистрации.Ошибка, , ,ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Во вложении выгрузка конфигурации с уже настроенным механизмом копирования и встроенной демонстрационной обработкой.
Приятного и комфортного пользования :)
Вступайте в нашу телеграмм-группу Инфостарт