Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 13:29

Получение реквизита справочника через навигац-ую ссылку с правильным MIME-типом

Автор s.r, 11 окт 2010, 06:36

0 Пользователей и 1 гость просматривают эту тему.

s.r

Добрый день. Я работаю над приложением для тонкого и веб-клиента (управляемое приложение, 1С 8.2) и возникла задача использования ПолеHTMLДокумента. В нашей задаче HTML документы хранятся в справочнике в реквизите с типом ХранилищеЗначений. И собственно задача стоит в том как загрузить значение из справочника поместить в ПолеHTMLДокумента.
Способ 1. Поместить в реквизит поля непосредственно код HTML документа. Это работает, но не совсем так как хотелось бы.

Я же хочу остановиться подробней на способе 2. 1С позволяет получать навигационную ссылку на реквизиты справочника. В режиме веб-клиента эта ссылка является обычной http-ссылкой. Таким образом, элементы справочника становятся доступны в виде обычной http-ссылки, которую и можно использовать в качестве адреса для ПолеHTMLДокумента. Но тут возникает другая проблема: 1С для значений реквизитов использует MIME-тип application/octet-stream, а файлы с таким MIME-типом браузер предлагает загружать, вместо того, чтобы отобразить его. Вот и вопрос: как сделать так, чтобы MIME-тип был правильным? Или, может существует иное решение всей этой проблемы? :(

Спасибо.

progmikon

По поводу п.2 я думаю надо по-изучать настройки браузера, может поможет, а с п.1 что у вас не получается?

s.r

Я так подозреваю, что это реализовано в 1С обычным document.write. И соответственно doctype ставится html. А в нашей задаче важен и xhtml. Поэтому, например svg не работает таким образом.
А браузеры настраивать тоже не решение. Хоть я и соневаюсь, что это вообще возможно. Так как тут единственное что (теоретически) может делать браузер - это что-нибудь вроде mod_mime_magic в Apache (или file в *NIX), но такой функционал не логично пихать в браузеры((.

progmikon

А вы можете описать бизнес-задачу, может мы что-то еще придумаем.

s.r

Из 1С:Предприятия будут открываться различные HTML-документы, с помощью которых создаются отчеты (скорее это даже не документы, а некоторые приложения, написанные на JavaScript). Ну а хранятся они в справочнике.
Казалось бы, что для этого идеально подходит ПолеHTMLДокумента и с помощью него я и начал это реализовывать пока не начали всплывать подводные камни в самой платформе.

progmikon

Напишите, пожалуйста, какие подводные камни вы обнаружили, чтобы знать.
И еще, а почему вы храните файлы в ХранилищеЗначений? Может хранить в них код, а потом динамически формировать?

s.r

Главный подводный камень - это то, что doctype определяется неверный при прямой записи в реквизит HTML-кода.
А разницы особой между тем как хранить не важно, так как я пробовал из ХранилищеЗначений получать текст документа и так же его записывать в реквизит.

s.r

Удалось частично решить эту проблему через mod_headers. Изменил Content-Type и удалил Content-Disposition (применял это для тех URL-адресов, которые находятся в e1cib/data).

LoadModule headers_module modules/mod_headers.so
<LocationMatch "e1cib/data">
  Header set Content-Type "text/html"
  Header unset Content-Disposition
</LocationMatch>

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск