Вопрос по ПоместитьВоВременноеХранилище, модуль объекта и теорию #668563


#0 by ШангриЛа
Есть обработка. В модуле объекта обработки заполняется табличная часть обработки у которой есть колонка "АдресВремХранилища" (Строка). В цикле перебираются строки табличной части, по каждой строке создается ТабличныйДокумент с картинками. Табличный документ помещается во временное хранилище и адрес хранилища записывается в колонку строки табличной части. Далее, управление переходит на клиента. В итоге, в форме получается заполненная табличная часть в каждой строке которой есть строка с адресом временного хранилища. Пользователь кликает по строке табличной части, считывается табличный документ из временного хранилища и открывается. Это можно реализовать с помощью ПоместитьВоВременноеХранилище или по окончанию работы процедуры модуля объекта, временное хранилище уничтожится?
#1 by exwill
Не уничтожится. Просто останется на сервере.
#2 by ДенисЧ
только может сдохнуть через некотрое время
#3 by H A D G E H O G s
Все будет хорошо. 20 минут хватит всем. Ну или времени жизни формы.
#4 by ДенисЧ
ага.... Билли тоже говорил про 640...
#5 by ИсчадиеADO
Параметры: Тип: Произвольный. Данные, которые необходимо поместить во временное хранилище. Тип: УникальныйИдентификатор; Строка. Адрес во временном хранилище, по которому надо поместить данные. Или уникальный идентификатор формы, во временное хранилище которой, надо поместить данные и вернуть новый адрес. В случае, если передается УникальныйИдентификатор формы, то значение будет автоматически удалено после закрытия этой формы. Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
#6 by ШангриЛа
В модуле объекта: Для каждого СтрокаТаб Из ТабличнаяЧасть Цикл Что надо сделать, чтобы потом хранилище жило пока не закроется форма?
#7 by ШангриЛа
+ или пока не начнут формировать отчет заново?
#8 by ИсчадиеADO
пихай УИД формы, вестимо
#9 by ИсчадиеADO
"В случае, если передается УникальныйИдентификатор формы, то значение будет автоматически удалено после закрытия этой формы" це
#10 by ШангриЛа
дык в модуле объекта УИД формы чем отличается от обычного УИД?
#11 by ШангриЛа
Меня смущает то, что если бы я это делал в модуле формы, то сомнений бы никаких не возникало. А я хочу это делать в модуле объекта. Разве разницы нет?
#12 by ИсчадиеADO
главное, чтобы УИД жил нужное тебе время. Можешь в любой модуль передать УИД как параметр, главное чтобы он объявлялся и жил на клиенте
#13 by ШангриЛа
То есть в запуск процедуры модуля объекта передаю ЭтаФорма.УникальныйИдентификатор. А в модуле объекта запихиваю его при создании врем. хранилища?
#14 by ШангриЛа
попробовал на практике, спасибо. Надеюсь, что пока жив УИД формы, все будет ништяк :)
#15 by ШангриЛа
Набросок: В ФОРМЕ: &НаКлиенте В МОДУЛЕ ОБЪЕКТА ОБРАБОТКИ: Думаю, что перед перезапуском заполнения табличной части надо еще применять УдалитьИзВременногоХранилища. А то юзер 50 раз нажмет у обработки кнопку "Сформировать" и сервер ляжет.
#16 by ШангриЛа
Спасибо всем за помощь и советы. Если есть что еще добавить, с удовольствием послушаю.
#17 by ШангриЛа
Еще вопрос. Есть ли смысл сохранять ТабДок в файл на сервере, запихивать его во врем хранилище или лучше на клиенте сохранить?
#18 by ШангриЛа
+ В смысле, что на сервере: - сохраню табличный документ в файл - файл запихаю как двоичные данные во временное хранилище - передам на клиент адрес хранилища. Если надо, то потом просто получу двоичные данные по адресу и сохраню в папку. Есть в этом смысл или лишняя нагрузка на сервер?
#19 by ШангриЛа
Так-то удобнее все в модуле объекта обработки все обстряпать, а потом просто на клиенте из хранилища все тянуть.
#20 by ШангриЛа
Временное хранилище в памяти создается или это на диске сервера? В смысле, сильно память оперативная сервера отожрется, если я создам пару тысяч временных хранилищ и помещу в каждое двоичные данные?
#21 by ДенисЧ
сильно
#22 by ШангриЛа
пля, а куда деваться, если надо массово формировать по нескольким тысячам строк табличный документ с картинками, и сохранять их в PDF на рабочем столе юзера. Набуя - второй вопрос. Надо!
#23 by ДенисЧ
ответить пользователю "вам это не надо"
#24 by ШангриЛа
не так крут, чтобы ответить так.
#25 by ШангриЛа
+ есть задача, надо делать. Все оплачено :)
#26 by ДенисЧ
тогда делай. Не твоя память.
#27 by ШангриЛа
Вроде ограничения на количество временных хранилищ нет...
#28 by ШангриЛа
Кстати, оперативная память не жрется, больше диском шуршит
#29 by ШангриЛа
+ файловая бд
#30 by H A D G E H O G s
ДенисЧ брелд написал, ну как обычно.
#31 by H A D G E H O G s
ВремХран храниться в темповых файлах винды в клиент-серверной и в файле 1Cv8tmp.1CD в файловом режиме.
#32 by H A D G E H O G s
Руки себе оторвите за такую херню
#33 by H A D G E H O G s
Когда выполнял формирование печатных форм рег отчетности на сервере (ибо памяти клиента не хватало) - передавал табдок через временное хранилище (с КЛИЕНТА на СЕРВЕР). Передачи ДвоичныеДанные приводили к лютым тормозам, прямая передача табдока приводила к ошибке XDTO преобразования. Табличный док был размера 600 метров примерно. Его надо было разбить на листы для печати, вставим шапку и подвал на каждый лист (типовой алкгоритм, бил бы за него, но менять нельзя).
#34 by blopp
, См. руководство разработчика 20.2.3 ...При получении на сервере значения из временного хранилища следует учитывать то, что оно получается по ссылке. В действительности, ссылка эта указывает на значение, которое хранится в кэше. В течение 20 минут, с момента помещения в хранилище или же с момента последнего обращения, значение сохранится в кэше, а затем записывается на диск и из кэша удаляется. ... Это как бы намекает...
#35 by Defender aka LINN
Что делает эта хрень в модуле объекта?
#36 by H A D G E H O G s
Убей. Себя. Ап стену.
#37 by H A D G E H O G s
"а затем записывается на диск" Угу. Записывается. Ага.
#38 by blopp
Пусть меня считают некропостером но все же вдруг это еще кто-то прочитает кроме неадекватных ежей. Вопрос в был про потребление памяти. Поэтому правильный ответ на вопрос - помещать во временное хранилище значительные объемы данных нельзя, особенно при многопользовательской работе. Обращение к сеансовым данным всегда происходит через кэш - т.е. будет расходоваться память рабочего процесса. Кроме того, эти данные будут пересылаться через сеть в менеджер кластера.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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