ПоместитьВоВременноеХранилище() #785617


#0 by antihacker
Всем привет ! В решение часто приходится читать двоичные данные из регистра сведений. Понятно как файл передаеться из сервера на клиент. Если отказаться использовать ПоместитьВоВременноеХранилище на стороне сервера и вместо этого просто передать с сервера на клиент двоичные данные и на клиенте использовать ПоместитьВоВременноеХранилище. Означает ли - это что я разгружаю сервер ? Типа что я там ничего не создаю.
#1 by DrZombi
>>> Означает ли - это что я разгружаю сервер Ты загружаешь только свой мозг. Серверу фиолетово. Объем информации особо не уменьшается :)
#2 by beholder13
Я могу ошибаться, но временное хранилище вроде как расположено на стороне сервера. Если Вы прочитаете на стороне клиента и очистите хранилище (УдалитьИзВременногоХранилища), то разгрузите. Есть мнение, что у человека идет речь о действительно крупных данных, к примеру, сканах документов в pdf или tiff.
#3 by beholder13
+2 Ведь вам явно не нужны двоичные данные на стороне клиента, нужен сам файл, который они определяют, так и забирайте его и работайте с ним в памяти клиента.
#4 by antihacker
beholder13, ты прав. Скан. доки.  Вто что означает забирайте ?  Забирать с сервера ? Для этого нужно сперва создать на сервере, что и не хочеться этого. Идея просто. Ни создавать ничего на сервере. От туда просто получить двоичные данные из хранилища и уж потом создать на клиенте.
#5 by Defender aka LINN
Создать ЧТО, простите?
#6 by antihacker
НУ файл ? Или я не правильно понял определение ПоместитьВоВременноеХранилище. Если его испоьзовтаь на сервере, то временное хранилище где создастся ?
#7 by beholder13
Попробуйте проделать то, о чем Вы говорите на сервере, и, если получится, подумайте, что из этого Вы можете вынести на клиент. На выходе должно получиться так, что на сервере Вы читаете только данные из регистра и помещаете во временное хранилище для передачи на клиент. Без временного хранилища не передадите, с этим придется смириться, понять и простить.
#8 by antihacker
Ну я уже сделал. Все работает. На клиенте
#9 by beholder13
Более того, есть вероятность того, что на сервере нет приложения, способного работать с нужным файлом (допустим, не установлен MS Office, а надо работать с двоичным шаблоном Active Document, это как пример), и тогда для сервера, как ни крути, это просто бесполезный набор двоичных данных, которые имеют смысл только на клиенте, где пользователь будет работать непосредственно с файлом, и где эти данные действительно инициализируются во внешнем приложении. Да, в общем смысле Вы не создаете файл, а инициализируете сущность приложения, в котором этот файл открывается.
#10 by beholder13
ДвоичныеДанныеФайлаСсервера - это что?
#11 by antihacker
Вот так на клиенте
#12 by beholder13
ДвоичныеДанныеФайла - какой тип?
#13 by antihacker
Объясните мне. ПоместитьВоВременноеХранилище не имеет значение где ты его используешь ? Все равно на сервере ?
#14 by beholder13
Есть мнение, что ХранилищеЗначения
#15 by antihacker
ДвоичныеДанныеФайла береться из поля регистра. А поле с типом ХранилищеЗначения.
#16 by beholder13
Да, временное хранилище на сервере находится
#17 by beholder13
>> ЛокальныйАдресФайла   =  ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайлаСсервера, УникальныйИдентификатор); вот это надо делать на сервере и возвращать на клиент только адрес
#18 by antihacker
То есть ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайлаСсервера, УникальныйИдентификатор); создаст временное хранилище все равно на сервере, если я даже использую на клиенте ? Тогда я наооброт загружаю сервер и сеть. Сперва получаю двоичные данные на клиент, потом отправляю на сервер и опять обратно получаю ссылку. А тут на сервере получил двоичные и там же создал и просто передал на клиент адрес.
#19 by beholder13
А так получается, что сначала с сервера прилетают двоичные данные, потом летят обратно на сервер, и потом еще в ПолучитьФайл летят обратно на клиент. Тут важно не столько разгрузить сервер, сколько соединение между клиентом и сервером.
#20 by beholder13
да, только создавать ничего не надо на сервере, сразу кладите во ВременноеХранилище из ХранилищаЗначения
#21 by beholder13
А файл получается только для сохранения на диск, или же с ним надо работать в интерактивном режиме?
#22 by antihacker
Тогда подправтье     ВременныйАдресФайла = "";
#23 by antihacker
#24 by beholder13
Если РезЗапросСписокПользователей.Следующий И ЗначениеЗаполнено(РезЗапросСписокПользователей.ДвоичныеДанныеФайла) Тогда
#25 by beholder13
Вернется адрес во временном хранилище, если вторым параметром прописать UID формы, то временное хранилище умрет на сервере при ее закрытии вместе с ней
#26 by antihacker
ОК ! СПАСИБО БОЛЬШОЕ !
#27 by beholder13
Не за что =)
#28 by antihacker
По поводу хранилище умрет вместе. Можно по подробнее. А то я везде кодом удаляю. Вот здесь УникальныйИдентификатор разве не UID формы ?
#29 by beholder13
Да, все верно
#30 by antihacker
СПАСИБО БРАТ !
#31 by beholder13
+29 Можно удалить кодом наверняка, можно оставить в памяти, мало ли, еще пригодится в той же сессии, а придется опять на сервер идти и опять к БД обращаться, опять читать из ХранилищаЗначения и класть во ВременноеХранилище, это одна из самых громоздких операций и важно оптимизировать с учетом по максимуму всех возможностей
#32 by antihacker
АГА. Я это уже понал -)
#33 by etc
Теперь модно использовать функцию ПолучитьФайл:
#34 by beholder13
Пробовали использовать эти две великолепные строчки?) Нужно с умом подходить к использованию безусловных методов обращения к базе, каковым является ПолучитьНавигационнуюСсылку в глобальном контексте. Они хорошо работают только когда речь идет о сферическом коне в вакууме, или же при полной отработке возможных критических ситуаций, которой я тут явно не вижу.
#35 by antihacker
beholder13, я пробовал этот метод, но не работает. Можешь дать работающий пример ?
#36 by antihacker
Ты про это ? Ни как не могу добиться чо бы этот код заработал.
#37 by antihacker
В моем случае эт отак
#38 by antihacker
вот такая ошибка {БизнесПроцесс.БПДоговора.Форма.ФормаБизнесПроцесса.Форма}: Ошибка при вызове метода контекста (ПолучитьФайл)                     ПолучитьФайл(ВременныйАдресФайла, Элементы.ФТЧДокументыДоговора.ТекущиеДанные.ИмяФайла, Истина); по причине: по причине: Неправильный путь к файлу '/e1cib/data/РегистрСведений.ХранилищеФайлов.ДвоичныеДанныеФайла?ВладелецФайла=9bee00155d0a6a0c11e6af99c5d7c074&ИмяФайла=images
#39 by Mauser
Не осилил в одну тему?
#40 by antihacker
По ходу он и не создает временное хранилище. Потому что этот код открывает файл Но когда дело доходит до УдалитьИзВременногоХранилища(ВременныйАдресФайла); Пишет {БизнесПроцесс.БПДоговора.Форма.ФормаБизнесПроцесса.Форма}: Ошибка при вызове метода контекста (УдалитьИзВременногоХранилища)                     УдалитьИзВременногоХранилища(ВременныйАдресФайла); по причине: Ошибка удаления значения из временного хранилища
#41 by beholder13
Так не удаляй принудительно
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С