Загрузка файлов на сервер с прогрессом и докачкой

04.10.16

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Пример использования новых возможностей платформы 8.3.9 по низкоуровневой работе с двоичными данными для инкрементальной передачи файлов на сервер.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
ЗагрузкаНаСерверСПрогрессом.epf
.epf 10,40Kb ver:1.0.0
66 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Приветствую, коллеги!

Хотелось бы поднять вопрос удобства загрузки больших файлов на сервер.

Очевидно, разработчики не рассматривают сценарий работы с большими файлами через 1С, поэтому даже в профильных решениях вроде Документооборот Корп загрузка файлов на сервер выполняется скрыто и атомарно. Вот щелкнули по файлику, он ушел, повисло сообщение о том, что пошла загрузка.. и вот он загрузился.

Жизнь же порой ставит такие задачи, что на сервер нужно в тома загонять файлы по гигабайту - и в этом случае штатная загрузка просто повисает на пару часов и понять что там происходит решительно невозможно.

Ситуация, когда проект предусматривает возможность удобной загрузки файлов, а платформа ничего предоставить не может, вызывает некоторую грусть:)

Проанализировав проблему, я, в общем, увидел только 2 решения:

1. Использование JS-класса XMLHttpRequest в полеHTMLдокумента и HTTPСервиса с Post запросом (у класса XMLHttpRequestUpload есть событие onprogress). Попытка зайти с этой стороны вызывала ожесточенное сопротивление контрола IE, используемого для парсинга в полеHTMLдокумента в платформе. Проблемы решаемы, но возни тут много. Во-первых, HTML создаётся в location: about:blank, в то время как post запрос нужно слать на домен публикуемого http сервиса. Вроде как нужно использовать XDomainRequest, но он отказывается перенаправлять запрос, т.к. видит смену схемы - было непонятно что, стало http. Теоретически решаемо размещением служебной странички на IIS/Apache, из которой вызывать POST.Во-вторых, в веб-клиентах обработка JS идёт уже нативными средствами конкретного браузера - а это значит, что код нужно писать кроссбраузерный.

2. Новые объекты для работы с двоичными данными в платформе 8.3.9.

Интерес вызвали следующие классы: ЧтениеДанных,ЗаписьДанных, ФайловыйПоток, БуферДвоичныхДанных, МенеджерФайловыхПотоков.

Основная идея тут такая:

  • С помощью метода НачатьРазделениеНаЧастиПо у класса ЧтениеДанных разделить двоичные данные на равномерные куски. Можно указывать собственные размеры частей, в моём решении используются куски по 5 Мбайт. Очень важно, что использование этого метода не загружает данные в память - происходит всего-лишь разбивка больших данных на маленькие
  • Передавать данные на сервер по маленьким кусочкам
  • На сервере с помощью менеджера файловых потоков дописывать добавленные куски в файл. Для этого есть специальный метод ОткрытьДляДописывания
  • Различными решениями на форме обеспечить контроль загрузки кусков, отображать состояние, выполнять докачку только тех кусков, которые не были загружены ранее

В результате решил идти в ногу со временем и сделал вариантом №2:)

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

В настоящий момент в веб-клиенте новые методы платформы работают криво и выливаются в краши, так что функционирует пока только для тонкого клиента.

Вступайте в нашу телеграмм-группу Инфостарт

загрузка файлов докачка прогресс

См. также

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    152689    893    302    

463

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.255.x) и БП 3.0 (3.0.183.x). Правила подходят для версии ПРОФ и КОРП.

38000 34200 руб.

15.12.2021    29631    213    58    

158

Операции по ВЭД Файловый обмен (TXT, XML, DBF), FTP Программист Бухгалтер 1С v8.3 Бухгалтерский учет 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Платные (руб)

Федеральная таможенная служба России давно поддерживает унифицированный формат электронных документов для обмена с информационными системами предприятий. xmlns="urn:customs.ru:Information:ExchangeDocuments:". Структура, утвержденная комиссией Таможенного союза. Осталось только сделать загрузку в 1С из этого формата. На выходе - два документа ГТД по импорту и Поступление (акты, накладные) Обработка актуализирована на начало 2025 года

4800 руб.

09.08.2016    88832    332    378    

91

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.24.x).

38000 34200 руб.

23.07.2020    61592    289    81    

229

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 24.09.2025, версия 9.12 - 10.4)

19200 руб.

20.11.2015    167495    417    388    

539

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

16260 руб.

18.02.2016    195119    634    542    

549

Кассовые операции Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД Программист Бухгалтер Пользователь 1С v8.3 Бухгалтерский учет 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

Специализированные обработки для загрузки кассовых чеков в локальных базах: 1С:БП 3.0, 1С:УНФ 3.0, 1С:Розница 3.0, 1С:КА. 2.5, 1С:ERP Управление предприятием 2.5 и 1С:УТ 11.5. Вы просто сканируете QR коды с бумажных и электронных чеков c помощью мобильного приложения ФНС и чеки автоматически (без ручного ввода) загружаются в документы 'Авансовый отчет', 'Расходы предпринимателя', 'Путевой лист', 'Приходная накладная', 'Поступление (акты, накладные, УПД)', 'Приобретение товаров и услуг', 'Отчет о розничных продажах' и 'Поступление денежных документов'. Обработка будет работать на любой версии конфигурации: базовой, ПРОФ или КОРП. Для загрузки чеков самозанятых достаточно только ссылки на чек.

19.08.2020    74567    325    delta    90    

242
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1582 05.10.16 10:44 Сейчас в теме
2. vasiliy_b 284 05.10.16 11:05 Сейчас в теме
Хорошая идея. Только контрольную сумму наверное посчитать будет не лишним. Т.к. при таком копировании файл может измениться. И бонусом возможность ставить на паузу.
3. mrstomak 423 05.10.16 11:57 Сейчас в теме
Контрольную сумму хотел считать, увидел, что платформенные хэш-функции не поддерживаются в тонком клиенте, поэтому сделал проверку только по имени файла и количеству байт.

Ну а пауза есть..

Нужно еще обработок ошибок накидать для асинхронных вызовов, иначе там при ошибках кнопка передачи недоступной останется.
4. igo1 270 05.10.16 12:53 Сейчас в теме
5. tormozit 7312 05.10.16 17:33 Сейчас в теме
6. Sybr 242 06.10.16 08:46 Сейчас в теме
Делал подобное и на старых версиях платформы при помощи функции РазделитьФайл.
8. mrstomak 423 06.10.16 12:24 Сейчас в теме
(6) Sybr,
РазделитьФайл, к сожалению,на веб-клиентах не поддерживается вообще.
Но принцип такой же, да.
7. pbazeliuk 1975 06.10.16 09:13 Сейчас в теме
9. BlizD 1108 06.10.16 16:46 Сейчас в теме
10. JohnyDeath 302 08.10.16 22:39 Сейчас в теме
Раз пошла такая пьянка - тоже подпишусь.
11. Serega-artem 17 10.10.16 18:03 Сейчас в теме
подписка, интересная тема
12. Andry.Boris 59 11.11.16 15:54 Сейчас в теме
13. maxx 1000 12.11.16 17:30 Сейчас в теме
14. lefthander 13.11.16 17:03 Сейчас в теме
Согласен, интересная тема.
15. ander_ 16.11.16 11:03 Сейчас в теме
Интересно. Подписался
16. KliMich 17.11.16 16:56 Сейчас в теме
Интересная тема. Попробую.
17. TerveRus 30.11.16 10:53 Сейчас в теме
Файлообменник на 1С?)

Алексей, допилите, пожалуйста, запросник. Может получится глюки устранить?(
19. BigBoss 2 05.12.16 13:27 Сейчас в теме
Кстати хорошая тема, подписался
20. u_n_k_n_o_w_n 35 08.01.19 22:02 Сейчас в теме
Воспользовался вашей методикой при заливки файла на яндекс диск. Копировал 220 Мб.

Получил один загадочный результат: при простом копировании уходит 2 минуты, при копировании раздельных блоков 10 минут.

Коллеги, подскажите у вас тоже аналогичные результаты?
21. u_n_k_n_o_w_n 35 08.01.19 22:36 Сейчас в теме
Делил я на блоки по 5 мб.
22. 1cprogr_nsk 111 14.04.22 06:35 Сейчас в теме
Интересно было бы применить в реальных задачах РИБ, чтобы видеть прогресс при скачивании файла-сообщения, писал мысли об этом в другой теме http://forum.infostart.ru/forum9/topic124115/message2454245/#message2454245
Для отправки сообщения требуется регистрация/авторизация