Меню

Ошибка при вызове метода контекста поместитьвовременноехранилище

Неправильный путь к файлу при ПоместитьВоВременноеХранилище

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

Полный текст ошибки:

Неправильный путь к файлу ‘6f49439b-acf4-4340-b91d-418c6253af45’ (где в кавычка указан произвольная строка)

Поведение системы:

без альтернативное завершение работы, нет указания, что именно и где вызывается

В данном случае одна и та же переменная использовалась первого адреса и дальнейшего помещения (ошибка была обнаружена по «горячим» следам)

Если СтрокаМассивЭлементов="" Тогда

    СтрокаМассивЭлементов = Новый УникальныйИдентификатор;

КонецЕсли;

При присвоении происходило преобразование к строке, что вызывало ошибку при вызве.

Исправление ошибки

  • проверку производить через «?» в момент вызова
    СтрокаМассивЭлементов = ПоместитьВоВременноеХранилище(МассивЭлементов,?(СтрокаМассивЭлементов="", Новый уникальныйИдентификатор,СтрокаМассивЭлементов))
  • проверку производить через «?» но с использованием функции ЭтоАдресВременногоХранилища()
    СтрокаМассивЭлементов = ПоместитьВоВременноеХранилище(МассивЭлементов,?(ЭтоАдресВременногоХранилища(СтрокаМассивЭлементов), Новый уникальныйИдентификатор,СтрокаМассивЭлементов))

Оба варианта верные, первый будет быстрее, хотя и не идеологически правильным, т.к. привязан к тому, что переменная «СтрокаМассивЭлементов», не может быть другого типа и всегда имеет верное заполненное значение

Реклама побуждает людей жить не по средствам? То же самое можно сказать о браке.

Всем привет ! В решение часто приходится читать двоичные данные из регистра сведений. Понятно как файл передаеться из сервера на клиент. Если отказаться использовать ПоместитьВоВременноеХранилище на стороне сервера и вместо этого просто передать с сервера на клиент двоичные данные и на клиенте использовать ПоместитьВоВременноеХранилище. Означает ли — это что я разгружаю сервер ? Типа что я там ничего не создаю.

>>> Означает ли — это что я разгружаю сервер Ты загружаешь только свой мозг. Серверу фиолетово. Объем информации особо не уменьшается 🙂

Я могу ошибаться, но временное хранилище вроде как расположено на стороне сервера. Если Вы прочитаете на стороне клиента и очистите хранилище (УдалитьИзВременногоХранилища), то разгрузите. Есть мнение, что у человека идет речь о действительно крупных данных, к примеру, сканах документов в pdf или tiff.

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

beholder13, ты прав. Скан. доки.  Вто что означает забирайте ?  Забирать с сервера ? Для этого нужно сперва создать на сервере, что и не хочеться этого. Идея просто. Ни создавать ничего на сервере. От туда просто получить двоичные данные из хранилища и уж потом создать на клиенте.

НУ файл ? Или я не правильно понял определение ПоместитьВоВременноеХранилище. Если его испоьзовтаь на сервере, то временное хранилище где создастся ?

Попробуйте проделать то, о чем Вы говорите на сервере, и, если получится, подумайте, что из этого Вы можете вынести на клиент. На выходе должно получиться так, что на сервере Вы читаете только данные из регистра и помещаете во временное хранилище для передачи на клиент. Без временного хранилища не передадите, с этим придется смириться, понять и простить.

Ну я уже сделал. Все работает. На клиенте

Более того, есть вероятность того, что на сервере нет приложения, способного работать с нужным файлом (допустим, не установлен MS Office, а надо работать с двоичным шаблоном Active Document, это как пример), и тогда для сервера, как ни крути, это просто бесполезный набор двоичных данных, которые имеют смысл только на клиенте, где пользователь будет работать непосредственно с файлом, и где эти данные действительно инициализируются во внешнем приложении. Да, в общем смысле Вы не создаете файл, а инициализируете сущность приложения, в котором этот файл открывается.

ДвоичныеДанныеФайлаСсервера — это что?

ДвоичныеДанныеФайла — какой тип?

Объясните мне. ПоместитьВоВременноеХранилище не имеет значение где ты его используешь ? Все равно на сервере ?

Есть мнение, что ХранилищеЗначения

ДвоичныеДанныеФайла береться из поля регистра. А поле с типом ХранилищеЗначения.

Да, временное хранилище на сервере находится

>> ЛокальныйАдресФайла   =  ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайлаСсервера, УникальныйИдентификатор); вот это надо делать на сервере и возвращать на клиент только адрес

То есть ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайлаСсервера, УникальныйИдентификатор); создаст временное хранилище все равно на сервере, если я даже использую на клиенте ? Тогда я наооброт загружаю сервер и сеть. Сперва получаю двоичные данные на клиент, потом отправляю на сервер и опять обратно получаю ссылку. А тут на сервере получил двоичные и там же создал и просто передал на клиент адрес.

А так получается, что сначала с сервера прилетают двоичные данные, потом летят обратно на сервер, и потом еще в ПолучитьФайл летят обратно на клиент. Тут важно не столько разгрузить сервер, сколько соединение между клиентом и сервером.

да, только создавать ничего не надо на сервере, сразу кладите во ВременноеХранилище из ХранилищаЗначения

А файл получается только для сохранения на диск, или же с ним надо работать в интерактивном режиме?

Тогда подправтье     ВременныйАдресФайла = «»;

Если РезЗапросСписокПользователей.Следующий И ЗначениеЗаполнено(РезЗапросСписокПользователей.ДвоичныеДанныеФайла) Тогда

Вернется адрес во временном хранилище, если вторым параметром прописать UID формы, то временное хранилище умрет на сервере при ее закрытии вместе с ней

По поводу хранилище умрет вместе. Можно по подробнее. А то я везде кодом удаляю. Вот здесь УникальныйИдентификатор разве не UID формы ?

+29 Можно удалить кодом наверняка, можно оставить в памяти, мало ли, еще пригодится в той же сессии, а придется опять на сервер идти и опять к БД обращаться, опять читать из ХранилищаЗначения и класть во ВременноеХранилище, это одна из самых громоздких операций и важно оптимизировать с учетом по максимуму всех возможностей

Теперь модно использовать функцию ПолучитьФайл:

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

beholder13, я пробовал этот метод, но не работает. Можешь дать работающий пример ?

Ты про это ? Ни как не могу добиться чо бы этот код заработал.

вот такая ошибка {БизнесПроцесс.БПДоговора.Форма.ФормаБизнесПроцесса.Форма}: Ошибка при вызове метода контекста (ПолучитьФайл)                     ПолучитьФайл(ВременныйАдресФайла, Элементы.ФТЧДокументыДоговора.ТекущиеДанные.ИмяФайла, Истина); по причине: по причине: Неправильный путь к файлу ‘/e1cib/data/РегистрСведений.ХранилищеФайлов.ДвоичныеДанныеФайла?ВладелецФайла=9bee00155d0a6a0c11e6af99c5d7c074&ИмяФайла=images

По ходу он и не создает временное хранилище. Потому что этот код открывает файл Но когда дело доходит до УдалитьИзВременногоХранилища(ВременныйАдресФайла); Пишет {БизнесПроцесс.БПДоговора.Форма.ФормаБизнесПроцесса.Форма}: Ошибка при вызове метода контекста (УдалитьИзВременногоХранилища)                     УдалитьИзВременногоХранилища(ВременныйАдресФайла); по причине: Ошибка удаления значения из временного хранилища

Так не удаляй принудительно

Тэги:

Комментарии доступны только авторизированным пользователям

Обмен опытом → 
Родительский сеанс не найден

Здравствуйте

Уже достаточно давно регулярно возникает такая ошибка

12.09.2015 17:16:06{Отчет.ОбзорыРабочегоСтола.МодульМенеджера(129)}: Ошибка при вызове метода контекста (ПоместитьВоВременноеХранилище) ПоместитьВоВременноеХранилище(«Начало » + ТекущаяДата(), Адрес);по причине:Родительский сеанс не найден

Она жить особо не мешает, просто после нее не обновляется начальная страница, но лучше бы без этой ошибки

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

0



Максим Ч.

13.09.2015 7:53

Такая же ошибка очень часто бывает.

Способ избавиться — это, наверное, только найти стабильный способ её воспроизведения для разработчиков.

0



Кауров Вячеслав ( Кемерово)

13.09.2015 21:05

Найти стабильный способ этой ошибки. Только вот как?

У меня тоже такая ошибка случается.

Последний раз это сообщение выскочило после ввода чека из магазина самообслуживания (оно же «гипермаркет») Лента.

Вносилось очень долго. И чек длинный и пришлось где-то на пол часа…

Может это и вызвало ошибку?

Но не факт. Она проявлялась и при других обстаятельствах.

0



Максим Ч.

14.09.2015 3:11

Не, это точно не причина ошибки. Она может выскакивать и на Расходе в одну строку, и просто при запуске. 

0



Денис Андреевич (АО «Тандер», Краснодар)

14.09.2015 16:02

У меня сегодня она «вылетела» при окрытии базы.

0



Важенин Владимир ( Российская Империя)

15.09.2015 9:03

та же фигня

0



Денис Андреевич (АО «Тандер», Краснодар)

15.09.2015 22:21

Сегодня «вылетело» при создании операции перемещение. 

Информация во вложении.

0



Кауров Вячеслав ( Кемерово)

18.09.2015 8:57

Только что вылетело «родительский сеанс». Сразу после авторизации в программе.

0



Костюков Руслан

25.09.2015 11:09

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

0



Makh Oleg ( Санкт-Петербург)

25.09.2015 13:03

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

Gy9vin

1 / 1 / 1

Регистрация: 14.07.2011

Сообщений: 117

1

03.03.2015, 14:56. Показов 2192. Ответов 15

Метки нет (Все метки)


При создании приказа о зачислении студентов при выборе физ лица пишет: Переданное значение не может быть помещено во временное хранилище.

Что делать подскажите?

1C
1
2
3
4
{Документ.Приказы.Форма.ФормаДокумента.Форма(356)}: Ошибка при вызове метода контекста (ПоместитьВоВременноеХранилище)
    АдресСтудентовВХранилище = ПоместитьВоВременноеХранилище(Объект.ОсновныеДанные);
по причине:
Переданное значение не может быть помещено во временное хранилище

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

03.03.2015, 14:56

15

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

03.03.2015, 18:15

2

Платформа какая?



1



1 / 1 / 1

Регистрация: 14.07.2011

Сообщений: 117

03.03.2015, 18:58

 [ТС]

3

1c Университет ПРОФ 8.3.3.721



0



Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

03.03.2015, 21:52

4

В свойствах конфигурации поставь Режим совместимости с 8.2



1



1 / 1 / 1

Регистрация: 14.07.2011

Сообщений: 117

04.03.2015, 10:49

 [ТС]

5

Был включен режим. Сейчас попробую убрать посмотри может исправиться болезнь



0



1 / 1 / 1

Регистрация: 14.07.2011

Сообщений: 117

19.03.2015, 13:28

 [ТС]

6

В общем ничего не помогла, перепробовал все режимы совместимости. все равно выдает: «Переданное значение не может быть помещено во временное хранилище»



0



Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

19.03.2015, 14:14

7

Gy9vin, а на сайте 1С какая платформа рекомендована для данной конфигурации ???



1



1 / 1 / 1

Регистрация: 14.07.2011

Сообщений: 117

24.03.2015, 09:03

 [ТС]

8

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

Gy9vin, а на сайте 1С какая платформа рекомендована для данной конфигурации ???

незнаю. Но факт в том что раньше то она работала. както в ней работали люди и добовляли физ лиц



0



Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

24.03.2015, 15:23

9

Цитата
Сообщение от Gy9vin
Посмотреть сообщение

АдресСтудентовВХранилище = ПоместитьВоВременноеХранилище(Объект.ОсновныеДанны е);
Переданное значение не может быть помещено во временное хранилище

Ошибка говорит о том что во временное хранилище пытаются поместить значение которое не может быть помещено во временное хранилище

Перечень этих значений изменялся при переходе с платформы 8.2 на 8.3 .
На платформе 8.3 тип помещаемого значения должен иметь обязательную пометку в синтакс помощнике «Сериализуется»



1



1 / 1 / 1

Регистрация: 14.07.2011

Сообщений: 117

28.03.2015, 21:57

 [ТС]

10

А как это реализовать?



0



Dethmontt

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

29.03.2015, 21:44

11

Самый простой способ, с помощью отладки!

ну или в код где происходит ошибка (чуть выше строки с ошибкой) сделать следующее:

1C
1
2
3
4
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Пытаемся поместить значение = "+Объект.ОсновныеДанные+" с типом = "+ТипЗнч(Объект.ОсновныеДанные);
Сообщение.Сообщить();
АдресСтудентовВХранилище = ПоместитьВоВременноеХранилище(Объект.ОсновныеДанные);

Читать сообщение (запостить сюда на форум)



1



Gy9vin

1 / 1 / 1

Регистрация: 14.07.2011

Сообщений: 117

30.03.2015, 09:34

 [ТС]

12

насколько я понял вот оно.

1C
1
Пытаемся поместить значение = ДанныеФормыКоллекция с типом = ДанныеФормыКоллекция



0



Dethmontt

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

30.03.2015, 17:37

13

А если поступить вот так?:

1C
1
2
3
4
5
Об = РеквизитФормыВЗначение("Объект");
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Пытаемся поместить значение = "+Об.ОсновныеДанные+" с типом = "+ТипЗнч(Об.ОсновныеДанные);
Сообщение.Сообщить();
АдресСтудентовВХранилище = ПоместитьВоВременноеХранилище(Об.ОсновныеДанные);

Добавлено через 31 секунду
Данный код может быть выполнен только на стороне сервера



1



Gy9vin

1 / 1 / 1

Регистрация: 14.07.2011

Сообщений: 117

01.04.2015, 15:51

 [ТС]

14

1C
1
2
3
4
{Документ.Приказы.Форма.ФормаДокумента.Форма(357)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
     Об = РеквизитФормыВЗначение("Объект");
по причине:
Метод недоступен на клиенте



0



Dethmontt

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

01.04.2015, 16:26

15

Цитата
Сообщение от Gy9vin
Посмотреть сообщение

Метод недоступен на клиенте

да ё маё

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

Данный код может быть выполнен только на стороне сервера

Добавлено через 1 минуту
Сделай вот так и не мучайся…..

1C
1
2
3
4
5
Попытка
    АдресСтудентовВХранилище = ПоместитьВоВременноеХранилище(Объект.ОсновныеДанные);
Исключение
    АдресСтудентовВХранилище = "";
КонецПопытки;



1



1 / 1 / 1

Регистрация: 14.07.2011

Сообщений: 117

02.04.2015, 08:46

 [ТС]

16

Огромное тебе спасибо!



0



Недавно столкнулся с проблемой открытия формы еще не записанного в БД документа, много возился с этим. Решил обобщить все найденное, может кому-то сэкономит время.

Итак вопрос №1: Как открыть форму еще не записанного документа (не заполнить на основании) ?

Ответ: Чтобы открыть форму нам нужно связать ее с ссылкой объекта, но объект еще не записан. Многие пытаются использовать метод УстановитьСсылкуНового() но это не прокатывает. После долгих чтений я сделал вот так:

&НаКлиенте
Процедура Команда(Команда)

Форма = ПолучитьФорму(«Документ.НашДокумент.ФормаОбъекта»);
ДанныеФормы = Форма.Объект; // Получаем объект формы в переменную
ЗаполнитьДокументНаСервере(ДанныеФормы); // Заполняем документ на сервере
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее
Форма.Открыть();

КонецПроцедуры

// Можно использовать безконтекстный вызов, оптимизируем передачу данных

&НаСервереБезКонтекста

Функция ЗаполнитьДокументНаСервере(ДанныеФормы);

Док = ДанныеФормыВЗначение(ДанныеФормы, Тип(«ДокументОбъект.НашДокумент»)); // Получаем объект из данных формы ИЛИ

Док = Документы.НашДокумент.СоздатьДокумент();

// Заполняем реквизиты объекта или другие действия ********

ЗначениеВДанныеФормы(Док,ДанныеФормы); // Кладем обратно в объект формы уже созданный документ

КонецФункции

2. Как открыть форму уже записанного документа?

Здесь есть два метода ОткрытьФорму() или ОткрытьЗначение(). В обоих случаях нужно передавать ссылку на записанный документ.

&НаКлиенте
Процедура Команда(Команда)

СсылкаОбъекта = СоздатьНаСервере();
//1.
ОткрытьФорму(«Документ.НашДокумент.Егоформа», Новый Стурктура(«Ключ», СсылкаОбъекта)); // Через параметры мы передаем ссылку документа

//2.

ОткрытьЗначение(СсылкаОбъекта);

КонецПроцедуры

&НаСервере
Функция ЗаполнитьДокументНаСервере()

// Используем метод создать

НовыйОбъект = Документы.НашДокумент.СоздатьДокумент();

 // Заполняем его 

НовыйОбъект.Записать(); // Обязательно записываем

Возврат НовыйОбъект.Ссылка; //Возвращаем ссылку

КонецФункции

На уникальность материла не претендую, сам только «начинающий» так что если что не так  — критикуйте!

  1. 11.01.2013, 12:33


    #1

    ABES вне форума


    Гость форума


    По умолчанию Выгрузка табличной части с отбором 1с8.2

    Добрый день !
    Хочу поместить табличную часть из формы отбора с товарами, где количество>0, во временное хранилище. Делаю так:

    Код:

    &НаСервере
    Процедура ЗаписатьПодборВХранилище();
    	Отбор = Новый Структура;
    	Отбор.Вставить("ВидСравнения", ВидСравнения.Больше);
    	Отбор.Вставить("Количество", 0);
        ОтборУсловие=Новый Структура("Отбор",Отбор);
    	ПоместитьВоВременноеХранилище(Товары.Выгрузить(ОтборУсловие),АдресТоваровДокумента);	
    КонецПроцедуры

    в итоге пишет

    Код:

    Ошибка при вызове метода контекста (Выгрузить)
    	ПоместитьВоВременноеХранилище(Товары.Выгрузить(ОтборУсловие),АдресТоваровДокумента);	
    по причине:
    Неизвестная колонка

    А как правильно задать отбор ?


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка при вызове метода контекста копироватьфайл ошибка копирования файлов
  • Ошибка при вызове метода контекста получитьхранилищесертификатов