Работа с файлами (обычная и управляемая форма)

Публикация № 1075055

Обработки - Универсальные обработки

ДиалогВыбораФайла ДвоичныеДанные ПомещаемыеФайлы НачатьПомещениеФайлов ПолучитьИзВременногоХранилища ЧтениеДанных НачатьПроверкуСуществования НачатьПолучениеФайлов НачатьПодключениеРасширенияРаботыСФайлами НачатьУстановкуРасширенияРаботыСФайлами ПоместитьВоВременноеХранилище ОписаниеПередаваемогоФайла ПоказатьВопрос ПолучитьФайл НачатьПомещениеФайла

61
Нужно загрузить файл с клиента на сервер или же, наоборот, файл загрузить с сервера на клиент, а впридачу все это на web-клиенте, да еще и асинхронно? Нет ничего проще, читай далее, как это сделать!

Введение

Довольно часто нужно решить задачу интеграции работы с файлами в 1С.

Например, у менеджера есть Excel-файл и нужно обработать данные.

Или же наоборот на сервере 1С находится какой-то важный файл и пользователю нужен доступ к этому файлу со своего ПК.

Как итог нужно выполнить передачу файл с клиента на сервере или же с сервера на клиент. Когда база была файловая, то все было просто.

Но теперь у вас база клиент-серверная, да к тому же часть пользователей работают в web-клиенте, и как теперь писать код?! Для решения этой проблемы была разработана обработка-шаблон "Работа с файлами".

Описание

Обработка "Работа с файлами" представляет собой полностью автономное решение, с точки зрения встраивания в любую конфигурацию, как на обычных, так и на управляемых формах! Рекомендуемая версия платформы 8.3.3.721 и выше. В связи с отказом от модальности.

Обработка демонстрирует работу загрузки файла с клиента на сервер и загрузки файла с сервера на клиент.

Тестирование проходило на платформе 8.3.14.1630 в толстом, тонком клиенте, а также web-клиенте.

Весь функционал проиллюстрирован в скриншотах.

 
 Используемый код

P.S. Если материал вам помог, поблагодарите автора, поставив звездочку!

61

Скачать файлы

Наименование Файл Версия Размер
Работа с файлами
.epf 16,24Kb
16.06.19
9
.epf 1 16,24Kb 9 Скачать
Работа с файлами без расширения
.epf 16,92Kb
16.06.19
0
.epf 2 16,92Kb Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Malfarion 194 11.06.19 02:21 Сейчас в теме
С клиента на сервер
НачатьПомещениеФайла(..)


С сервера на клиент
ПолучитьФайл(...)


Использовать расширения для работы с файлами очень не удобно так как требуют установки внешнего софта/расширений, что не всегда возможно и в каждый браузер отдельно. Методы выше работают без них и на много лучше адаптированы к веб клиенту.
2. Xershi 628 11.06.19 10:52 Сейчас в теме
(1)
НачатьПомещениеФайла

В справке говорится, что нужно указать:
В веб-клиенте, если расширение работы с файлами не установлено, то параметр <ПомещаемыеФайлы>:
в интерактивном режиме должен иметь тип ДиалогВыбораФайла,
в неинтерактивном режиме СсылкаНаФайл.

Я использую не интерактивный режим. Что вы в ссылку на файл помещаете?
А для
ПолучитьФайл

Выйдет что обязательно пользователю диалог кидать, что по моему мнению не всегда нужно!
<Интерактивно> (необязательный)
Тип: Булево.
Истина - режим, в котором пользователю показывается диалог, в котором он может выбрать действие с получаемым файлом: запустить его или сохранить по выбранному расположению.
В веб-клиенте параметр должен быть равен Истина. В противном случае будет сгенерировано сообщение об ошибке.

В новой версии платформы 8.3.15 разработчики сделали новые методы работы:
https://wonderland.v8.1c.ru/blog/unifikatsiya-metodov-raboty-s-faylami/
Но пока не понятно нужно ли платформа для них или режим совместимости.
Кстати и далее там есть ссылка:
https://wonderland.v8.1c.ru/blog/uluchshenie-raboty-s-faylami-v-veb-kliente/
Которая позволяет не использовать расширение работы с файлами с версии платформы 8.3.13.1513, если указывать диалог, т.е. работать интерактивно, без привязки пути файла на клиенте к реквизиту.
3. Xershi 628 11.06.19 13:01 Сейчас в теме
(1) а второй момент, что эти методы для 1 файла, я рассматривал ситуацию, где передается 1 файл и легко расширить до множества файлов, но с вашей рекомендацией масштабировать до нескольких файлов за раз не получится.
7. Xershi 628 16.06.19 17:16 Сейчас в теме
(1) реализовал данные методы. Но как было сказано для корректной работы данных методов нужна платформа 8.3.13.1513 и выше. Режим совместимости конфигурации не влияет.
И на мобильной платформе параметр <Интерактивно> игнорируется и диалоговое окно выбора файла не отображается никогда.
Что делает реализацию еще более ограниченной.
Поэтому выкладываю обработку отдельным файлом.
4. Malfarion 194 11.06.19 16:02 Сейчас в теме
Есть аналогичные методы для группы файлов, все получится, читайте справку и зезеркалье.
5. Xershi 628 11.06.19 16:32 Сейчас в теме
(4) не универсально. Интересовал конкретный пример.
6. androgin 12.06.19 00:47 Сейчас в теме
8. Vida 10 17.06.19 20:55 Сейчас в теме
С сервера на клиент по упрощенной версии 2:

Диалог отлично показывается и отрабатывает на Тонком клиенте, а в веб-клиенте IE показывает странный диалог, на который не реагирует.

Подозреваю что это где то в настройках IE. Подскажите где искать?

Вот кусок моего кода:
			
ПолноеИмяФайла = КаталогЭкспортаДокументов + МассивФайлов[Сч].Имя; 
ПолучитьФайл(МассивФайлов[Сч].Хранение, ПолноеИмяФайла, Истина);
Прикрепленные файлы:
9. Xershi 628 17.06.19 22:59 Сейчас в теме
(8) почитайте ограничение. Ничего странного!
Когда выпустят стабильную версию 8.3.15 сделаю 3 версию, возможно они полный путь на клиенте получат иначе тоже самое будет.
10. Vida 10 18.06.19 02:18 Сейчас в теме
(9) да, ждем 8.3.15
А пока посоветуйте как быть? Попробовать по 1 сложной версии?
13. Xershi 628 18.06.19 10:37 Сейчас в теме
(10) первый и второй вариант практически не отличаются.
11. Vida 10 18.06.19 04:07 Сейчас в теме
Прошу подсказки по первому варианту ЧЯДНТ
			
ПолучаемыеФайлы = Новый Массив;	
Для Сч = 0 По МассивФайлов.Количество() - 1 Цикл
				
ОписаниеПередаваемогоФайла = Новый ОписаниеПередаваемогоФайла(МассивФайлов[Сч].Имя, МассивФайлов[Сч].Хранение);				
ПолучаемыеФайлы.Добавить(ОписаниеПередаваемогоФайла);
	    
КонецЦикла;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьПослеПолученияФайлов", ЭтотОбъект);						
НачатьПолучениеФайлов(ОповещениеОЗавершении, ПолучаемыеФайлы, КаталогЭкспортаДокументов, Ложь);
Показать


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

хотя в ОповещениеОЗавершении вместо открытия у меня сообщение об успехе с полным именем - его выводит

пити разные задавала не помогает

складывается впечатление что в IE что-то не так, полазила там - ничего не нашла
Прикрепленные файлы:
12. Xershi 628 18.06.19 10:36 Сейчас в теме
(11) для начала вы не описали что у вас в переменных, а во вторых посмотрите какой код написан в примере или скачайте обработку.
Разница же видна не вооруженным взглядом.
14. Vida 10 18.06.19 13:23 Сейчас в теме
(12) Обработку скачала.

Да, код несколько упростила, но думала не критично - раз на тонком выполняется.

Мои переменные
1) МассивФайлов состоящий из структуры:
Имя (просто название без пути)
Хранение (адрес указывающий на значение во временном хранилище)

2)КаталогЭкспортаДокументов путь куда должно сохраняться состоит из выбранного в диалоге и "/", если не хватает

Прощу подсказать, что видно невооруженным глазом? У меня уже замылился наверное.
15. Xershi 628 18.06.19 15:34 Сейчас в теме
(14) скорее всего косяк в КаталогЭкспортаДокументов. Создайте лучше тему для обсуждения вашего написания кода.
Оставьте свое сообщение