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

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

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

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

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

Введение

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

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

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

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

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

Описание

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

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

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

Версия 3 тестировалась на платформе 8.3.15.1489 в толстом, тонком клиенте, а также web-клиенте.

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

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

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

79

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

Наименование Файл Версия Размер
Работа с файлами
.epf 16,24Kb
16.06.19
16
.epf 1 16,24Kb 16 Скачать
Работа с файлами без расширения
.epf 16,92Kb
01.07.19
10
.epf 2 16,92Kb 10 Скачать
Работа с файлами без расширения 8.3.15
.epf 17,61Kb
01.07.19
6
.epf 3 17,61Kb 6 Скачать

См. также

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

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


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


Использовать расширения для работы с файлами очень не удобно так как требуют установки внешнего софта/расширений, что не всегда возможно и в каждый браузер отдельно. Методы выше работают без них и на много лучше адаптированы к веб клиенту.
2. Xershi 683 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 683 11.06.19 13:01 Сейчас в теме
(1) а второй момент, что эти методы для 1 файла, я рассматривал ситуацию, где передается 1 файл и легко расширить до множества файлов, но с вашей рекомендацией масштабировать до нескольких файлов за раз не получится.
7. Xershi 683 16.06.19 17:16 Сейчас в теме
(1) реализовал данные методы. Но как было сказано для корректной работы данных методов нужна платформа 8.3.13.1513 и выше. Режим совместимости конфигурации не влияет.
И на мобильной платформе параметр <Интерактивно> игнорируется и диалоговое окно выбора файла не отображается никогда.
Что делает реализацию еще более ограниченной.
Поэтому выкладываю обработку отдельным файлом.
4. Malfarion 193 11.06.19 16:02 Сейчас в теме
Есть аналогичные методы для группы файлов, все получится, читайте справку и зезеркалье.
5. Xershi 683 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 683 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 683 18.06.19 10:37 Сейчас в теме
(10) первый и второй вариант практически не отличаются.
11. Vida 10 18.06.19 04:07 Сейчас в теме
Прошу подсказки по первому варианту ЧЯДНТ
			
ПолучаемыеФайлы = Новый Массив;	
Для Сч = 0 По МассивФайлов.Количество() - 1 Цикл
				
ОписаниеПередаваемогоФайла = Новый ОписаниеПередаваемогоФайла(МассивФайлов[Сч].Имя, МассивФайлов[Сч].Хранение);				
ПолучаемыеФайлы.Добавить(ОписаниеПередаваемогоФайла);
	    
КонецЦикла;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьПослеПолученияФайлов", ЭтотОбъект);						
НачатьПолучениеФайлов(ОповещениеОЗавершении, ПолучаемыеФайлы, КаталогЭкспортаДокументов, Ложь);
Показать


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

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

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

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

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

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

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

Прощу подсказать, что видно невооруженным глазом? У меня уже замылился наверное.
15. Xershi 683 18.06.19 15:34 Сейчас в теме
(14) скорее всего косяк в КаталогЭкспортаДокументов. Создайте лучше тему для обсуждения вашего написания кода.
17. ssn5810 83 30.06.19 09:12 Сейчас в теме
Можно указать конкретное место на сервере куда перемещаем файл с клиента ???
18. Xershi 683 30.06.19 09:48 Сейчас в теме
(17) да. Из описания и скриншотов это было не понятно?
19. ssn5810 83 30.06.19 10:03 Сейчас в теме
Зачем вопросы, проще сразу подсказать.
В итоге мне нужно загрузить текстовый (txt) файл в табличную часть внешней обработки.....
У меня пишет файл не найден...и текст переданного файла.
20. Xershi 683 30.06.19 10:19 Сейчас в теме
(19) разбирайтесь с настройками вашего сервера. И по данному описанию не понятно что вы делаете и как.
21. ssn5810 83 30.06.19 10:51 Сейчас в теме
понятно, спасибо за помощь...
22. Xershi 683 30.06.19 23:14 Сейчас в теме
Скачал 8.3.15.1489.
Перевел конфигурацию в режим совместимости 8.3.15.
Решил просто заменить на новые методы НачатьПомещениеФайловНаСервер.
И получаю ошибку:
Ошибка преобразования данных XDTO:
НачалоСвойства: param	Форма: Элемент	Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ОписаниеПомещенногоФайла'


ОписаниеПередаваемогоФайла преобразуется в ОписаниеПомещенногоФайла, а оно не доступно на сервере.

Проверил. Ошибка вылетает даже если оставить конфигурацию на 8.3.14.
23. androgin 01.07.19 13:24 Сейчас в теме
(22) БРЕД!! Я перевел все методы в нетиповой на новые методы и прекрасно отрабатывает, как с диалогом, так и без!
Ничего там не подменяется)))
Ничто не мешает вам создать общие функции ВыгрузитьФайлы/ЗагрузитьФайлы (например) и вызывать их с оповещениями и параметрами.
24. Xershi 683 02.07.19 23:47 Сейчас в теме
(23) почитайте внимательно что написано и посмотрите что конфигуратор выдает.
В любом случае в 3 версии все корректно работает.
25. androgin 10.07.19 23:37 Сейчас в теме
(24) я не только читаю, но и практикую, к сведению!
26. Светлый ум 226 12.07.19 04:55 Сейчас в теме
(23) Бывают и экзотические косяки, просто вы везунчик или мало вариантов реализовывали
28. Xershi 683 12.07.19 08:14 Сейчас в теме
(26) Вы про что? Есть 3 вариант событий?
29. Светлый ум 226 12.07.19 10:37 Сейчас в теме
(28) я не про ваш функционал а про работу с файлами в целом
31. Xershi 683 12.07.19 13:22 Сейчас в теме
(29) понял. Да реализованы базовые сценарии обработки, что в 90% покроет потребность разработчика. Остальное конечно пилить, как нужно клиенту!
30. androgin 12.07.19 12:39 Сейчас в теме
(26) вы не читаете, что вам пишут?
Синтаксис откройте! Там все варианты перечислены!
Я не вижу реализации их у вас! Зато много слов в воздух
27. Светлый ум 226 12.07.19 04:56 Сейчас в теме
Закреплю описание статьи, теперь буду так оформлять +1
32. ccserg 70 06.08.19 18:42 Сейчас в теме
второй вариант не хочет работать
вроде как без расширения должно работать
33. Xershi 683 06.08.19 19:53 Сейчас в теме
(32) не указана платформа, тип клиента и последовательность действий. Внимательно прочтите описание.
34. ccserg 70 06.08.19 20:22 Сейчас в теме
(33)
windows_8_3_15_1534
веб клиент
открываю файл , жму Загрузить с клиента на сервер
35. Xershi 683 06.08.19 20:33 Сейчас в теме
36. ccserg 70 06.08.19 20:40 Сейчас в теме
37. Xershi 683 06.08.19 20:41 Сейчас в теме
(36) завтра проверю на 8.3.15.
Возможно надо использовать 3 версию.
38. Xershi 683 07.08.19 10:46 Сейчас в теме
(36) проверил, да все верно. Это операция требует расширения. Как сказано в описании работа без расширения возможна только в интерактивных операциях, т.к. доступа к файловой системе у 1С нету.
39. ccserg 70 07.08.19 11:38 Сейчас в теме
(38)
так а как решить ? расширение установить ?
расширение скачивается , устанавливается , но все равно не пашет
это наверно уже другая проблема правда
40. Xershi 683 07.08.19 11:59 Сейчас в теме
(39) данная кнопка работает только с расширением. Да это другая проблема. Если не получается решить, поменяйте браузер.
Оставьте свое сообщение