Помещение файла невозможно повторите попытку позднее 1с
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Реализовано в версии 8.3.15.1489.
Мы унифицировали методы работы с файлами. Теперь все манипуляции, которые можно проводить без использования расширения работы с файлами, становятся доступны без установки расширения.
Предыстория
Некоторое время тому назад мы уже рассказывали о том, что для помещения нескольких файлов на сервер в веб-клиенте вы можете уже не устанавливать в браузере расширение работы с файлами (ссылка). Теперь мы решили внести аналогичные изменения и в те методы, которые получают файлы с сервера.
Тут мы столкнулись с тем, что в силу исторического развития платформы и появления необходимости работать асинхронно, для получения файлов с сервера имеется три метода. Два из них, ПолучитьФайл() и НачатьПолучениеФайлов(), имеют специфические особенности, которых нет у методов, помещающих файлы на сервер.
Поэтому заодно мы решили ещё «навести порядок» во всех методах, получающих и помещающих файлы. Наша цель заключалась в том, чтобы методы, получающие файлы с сервера и помещающие файлы на сервер выглядели бы «симметрично».
Унификация
Проанализировав имеющиеся методы (ПолучитьФайл(), ПолучитьФайлы(), НачатьПолучениеФайлов()) мы решили ничего в них не менять, а просто отказаться от них. Вместо них мы сделали два новых асинхронных метода с понятными именами: НачатьПолучениеФайлаССервера() и НачатьПолучениеФайловССервера().
Аналогичным образом, при работе «в обратную сторону», мы решили отказаться от методов НачатьПомещениеФайла() и НачатьПомещениеФайлов(), и сделали вместо них два новых метода НачатьПомещениеФайлаНаСервер() и НачатьПомещениеФайловНаСервер().
Новые методы позволяют вам получить с сервера или поместить на сервер один, либо несколько файлов. При этом они могут использовать интерактивный диалог, а могут работать и без диалога. Для настройки интерактивного диалога мы сделали новые типы ПараметрыДиалогаПолученияФайлов и ПараметрыДиалогаПомещенияФайлов.
Главным отличием этих методов является то, что для их работы, если используется интерактивный диалог, расширение работы с файлами в веб-клиенте не требуется. Если диалог не используется, тогда нужно установить в браузере расширение. Таким образом, мы постарались максимально снизить необходимость установки расширения при работе веб-клиента. Если манипуляции с файлами можно проводить без расширения, оно не будет вызываться, даже если оно установлено.
Кроме этого новые методы принесли с собой и новую функциональность. Так, например, методы, помещающие один или несколько файлов на сервер, позволяют вам подключить собственный обработчик прогресса загрузки файлов. А метод НачатьПолучениеФайловССервера() позволяет вам получать файлы в виде архива. Для этого мы создали новый тип ПараметрыПолученияАрхиваФайлов. С его помощью вы можете задать имя архива и режим его получения.
В результате во встроенном языке теперь есть четыре рекомендуемых асинхронных метода для работы с файлами:
Помещение на сервер | Получение с сервера | |
Один файл | НачатьПомещениеФайлаНаСервер() | НачатьПолучениеФайлаССервера() |
Несколько файлов | НачатьПомещениеФайловНаСервер() | НачатьПолучениеФайловССервера() |
Прежние методы для получения файлов мы объявили устаревшими и скрыли их из синтакс-помощника. Однако старые методы продолжают поддерживаться в платформе для обеспечения совместимости, поэтому ваши конфигурации, написанные ранее, будут работать и с новой версией платформы.
Обновление прошло без проблем, но при попытки поместить в хранилище пишет:
Ошибка при попытке помещения объекта в хранилище конфигурации.
по причине:
Превышен максимально допустимый размер внутреннего файла 'D:\Storages\BMS\//1cv8ddb.1CD'
размер папки хранилища 4,44 ГБ (4 770 893 213 байт),
файла 1cv8ddb.1CD - 3,87 ГБ (4 158 586 880 байт)
подскажите что делать
заранее СПАСИБО.
А именно в этих двух символах "//", мол надо где-то найти, где прописывается этот путь и удалить эти символы в каких то системных файлах.
Насколько я помню, в данном случае я пере создавал хранилище. (10) Sabfir, с этим хранилищем работаем 2 года, раньше небыло проблем Я в такой же ситуации пересоздавала хранилище и подключала базы к нему заново.
Сокращение версий в хранилище не помогло. жесть, а историю изменения смотреть как?, конфигурация частично изменена нами, и при обновлении постоянно приходиться смотреть, что сами изменяли, а что обновили
У меня 40 баз к хранилищу было подключено, вот это жесть заново подключать.
А историю изменений я в Excel-овском файле веду.
для этого используйте префиксы при именовании своих объектов и своих методов, а также комментирование своего кода.
например:
и на сколько я помню ограничение в размере В NTFS 16 терабайт (8) tyunin_ae, это наверное на объем всего диска, а не одного файла. я бы попробовал размер кластера увеличить ну всёравно это не решение. префиксы ставим, но всёже очень удобно смотреть в истории хранилища просто это займет очень много времени, да и трогать сервер, страшновато. т.к там рэйд.. полосатик в зеркале (15) tyunin_ae, думаю, как вариант - попробовать перенести хранилище из сети на другой компьютер в раздел, где размер кластера стоит больше чем на серваке, указать новый путь и попробовать поместить. Если получится, значит дело в файловой системе и тогда без "троганья рейда" не обойтись. я так понимаю, что до конца эту проблему не решить увеличением кластера, т.к это просто немного увеличит максимальный размер файла (или я ошибаюсь?) (18) tyunin_ae, очень даже не немного. если увеличить с 4Кб до 16Кб, то вам ещё лет на восемь хватит)) перепробовал разные варианты кластера, не помогло, также ошибка
Вот что мне ответили 1С -цы:
К сожалению, есть ограничения на размер хранилища 1С:Предприятия 8, так как он имеет файловый формат .
Все данные, относящиеся к одной таблице собраны в три внутренних файла:
- файл записей, в котором находятся все записи таблицы, за исключением полей неограниченной длины
- файл индексов
- файл значений неограниченной длины
Размер каждого из этих файлов не может превышать 4 гб.
Для штатного возникновения ошибки "Превышен максимально допустимый размер внутреннего файла" совсем необязательно, чтобы файл 1Cv8.1cd был больше 4 Гб.
Можно попробовать двумя способами выйти из положения:
- сократить хранилище (удалить старые версии)
- объединить несколько версий в одну
Но, если места (до достижения предела в 4Гб) в какой-нибудь из таблиц осталось мало - может не получиться.
Радикальным способом будет создание нового хранилища.
Так вот - не могу понять как можно установить фильтр по типу файла в данному методе?
Есть вариант использовать сначала ДиалогВыбораФайла с фильтрами, а потом не интерактивно помещать файлы во временное хранилище.
Как можно это сделать без таких вот манипуляций?
Спасибо
Глобальный контекст.НачатьПомещениеФайла (Global context.BeginPutFile)
Глобальный контекст (Global context)
НачатьПомещениеФайла (BeginPutFile)
Синтаксис:
НачатьПомещениеФайла(<ОписаниеОповещенияОЗавершении>, <Адрес>, <НачальноеИмяФайла>, <Интерактивно>, <УникальныйИдентификаторФормы>)
Параметры:
Тип: Строка.
Содержит адрес файла во временном хранилище, по которому должны быть помещены данные. Если не задан или является пустой строкой, то будет создан новый файл.
<НачальноеИмяФайла> (необязательный)
Тип: Строка.
Путь файла на диске, данные из которого будут помещены во временное хранилище. Может быть не указан, если параметр <Интерактивно> = Истина. В этом случае отображается диалог выбора файла.
<Интерактивно> (необязательный)
Тип: Булево.
Указывает, используется ли интерактивный режим, в котором отображается диалог выбора файла. Этот файл будет помещен по указанному в параметре <Адрес> расположению во временном хранилище или по новому адресу, если параметр <Адрес> опущен.
Истина - интерактивный режим используется.
Значение по умолчанию: Истина.
<УникальныйИдентификаторФормы> (необязательный)
Тип: УникальныйИдентификатор.
Уникальный идентификатор формы, который можно получить с помощью свойства УникальныйИдентификатор управляемой формы. Файл помещается во временное хранилище и автоматически удаляется после удаления объекта формы.
Если параметр не указан, то помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
Возвращаемое значение:
Тип: Булево.
Ложь - в параметре <Интерактивно> установлен интерактивный режим (Истина) и пользователь отказался от выполнения операции в диалоге выбора файла.
Описание:
Помещает файл из локальной файловой системы во временное хранилище.
Тонкий клиент, веб-клиент, толстый клиент.
Примечание:
На мобильной платформе параметр <Интерактивно> игнорируется и диалоговое окно выбора файла не отображается никогда.
В тонком и толстом клиентах, в отличие от веб-клиента, метод блокирует исполнение кода языка. Тем не менее, по завершению помещения файла указанный обработчик оповещения также будет вызван, но до исполнения кода, размещенного после вызова метода.
--------------------------------------------------------------------------------
Читайте также: