helpf.pro
Регистрация

v8: Как поместить/прочитать HTML в хранилище значений?

theelectric
02.07.2013 09:08Прочитано: 4708
Всем доброго времени суток!

У меня возникла такая задача - хранить в справочнике HTML-документы, при выборе этого элемента - открыть этот документ в ПолеHTML.

Пробовал поместить HTML как двоичные данные, а потом при помощи метода Записать() - перекинуть HTML во временный файл, а потом его уже в ПолеHTML:

Код 1C v 8.2 УП
 
ХранилищеОбъекта = ЭлементыФормы.СправочникСписок.ТекущаяСтрока.ХранилищеHTML;
АдресВременногоФайла = Строка(КаталогВременныхФайлов() + "\temp_info.htm");
ВременныйФайл = ХранилищеОбъекта.Получить().Записать(АдресВременногоФайла);


Но вот проблема - выдает ошибку:

Код SQL
 
Значение не является значением объектного типа (Записать)
ВременныйФайл = ХранилищеОбъекта.Получить().Записать(АдресВременногоФайла);


Подскажите - в чем проблема? И можно ли напрямую как есть записать HTML (т.е. не в виде двоичных данных)?
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
02.07.2013 10:40Ответ № 1
убери \ и файл желательно должен быть уникальным
Код 1C v 8.х
 АдресВременногоФайла  = КаталогВременныхФайлов()+"tf_"+Формат(ТекущаяДата(), "ДФ=ddMMyyhhmmss")+".htm";   
theelectric
02.07.2013 13:51Ответ № 2
Так проблема ведь не в этом, он не видит метод Записать() из хранилища:

Код 1C v 8.2 УП
 
Значение не является значением объектного типа (Записать)
Mokey
02.07.2013 14:52Ответ № 3
(2) theelectric, А что в хранилище хранится? Как туда помещается? И что должно быть, что имеет метод Записать()?
Просто из Вашего примера непонятно, что изначально в хранилище хранится.
Вообще-то сначала надо объект получить, а потом уже с ним работать, например:

ВременныйФайл = ХранилищеОбъекта.Получить();
ВременныйФайл.Записать(АдресВременногоФайла);

А ошибка выходит потому, что система не знает, какие данные хранятся в хранилище, у него есть только метод Получить(), известный системе, и никакого Записать() она не знает для хранилища.
Изменено 02.07.13 14:53:56
theelectric
02.07.2013 15:19Ответ № 4
Тогда такой вопрос: как записать HTML-документ в хранилище значений и как получить из хранилища значений обратно HTLM-документ (с своем формате, т.к. мне его потом надо загрузить в ПолеHTML)&
theelectric
02.07.2013 15:28Ответ № 5
Т.к. при чтении таким кодом из ХЗ:

Код 1C v 8.2 УП
 ХранилищеОбъекта = ЭлементыФормы.СправочникСписок.ТекущаяСтрока.ХранилищеHTML;
АдресВременногоФайла = Строка(КаталогВременныхФайлов() + "temp_info.htm");
ВременныйФайл = ХранилищеОбъекта.Получить().Записать(АдресВременногоФайла);


или таким:

Код 1C v 8.2 УП
 ХранилищеОбъекта = ЭлементыФормы.СправочникСписок.ТекущаяСтрока.ХранилищеHTML;
АдресВременногоФайла = Строка(КаталогВременныхФайлов() + "temp_info.htm");
ВременныйФайл = ХранилищеОбъекта.Записать(АдресВременногоФайла);


происходит ошибка:

Код 1C v 8.2 УП
 Значение не является значением объектного типа (Записать)   


А помещаю в ХЗ таким кодом:
Код 1C v 8.2 УП
 HTMLФайл = Новый ДвоичныеДанные(ПутьКHTMLДокументу);
ТекущийОбъект.ХранилищеHTML = Новый ХранилищеЗначения(HTMLФайл);
Mokey
02.07.2013 15:36Ответ № 6
(5) theelectric, Я же написал, что надо сначала ПОЛУЧИТЬ, а потом уже делать с полученным объектом необходимые действия. Я позже скину пример, у меня в хранилищах чего только не хранится )))
theelectric
02.07.2013 15:44Ответ № 7
(6) Mokey, так я и с Получить() и без Получить() пробовал - все одно!

А без Получить() смотрел на этом примере
...

Код 1C v 8.2 УП
 Если ТипЗнч(Хранилище) <> Тип("ДвоичныеДанные") Тогда
ДвоичныеДанные = Хранилище.Получить();
Иначе
ДвоичныеДанные = Хранилище;
КонецЕсли;
ДвоичныеДанные.Записать(ИмяФайла);
Mokey
02.07.2013 15:48Ответ № 8
А у меня вопрос на засыпку - ошибку при компиляции выдаёт или при исполнении модуля? Такое подозрение, что в каком-то элементе ХранилищеОбъекта = Неопределено. Тогда сделайте сначала проверку, у меня, например, так:

Код 1C v 8.х
 ДвоичныеДанные = Хранилище.Получить();
Если НЕ ДвоичныеДанные = Неопределено Тогда
ДвоичныеДанные.Записать(ИмяФайла);
КонецЕсли;
theelectric
02.07.2013 16:04Ответ № 9
(8) Mokey, ошибка при исполнении - я делал остановку, из ХЗ выходит двоичный файл...
Mokey
02.07.2013 16:08Ответ № 10
(9) theelectric, попробуйте с условием
theelectric
02.07.2013 16:19Ответ № 11
Вопрос закрыт!
theelectric
02.07.2013 16:19Ответ № 12
Спасибо!
Mokey
02.07.2013 16:59Ответ № 13
а что в итоге помогло? просто заработало и всё? или надоело копаться с этим?
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.