Получение изображений, сохраненных в 1С:Предприятие 8.x, прямым доступом из SQL Server + пример кода на Asp.Net

by Elisy 4. November 2009 22:00

В предыдущей статье я описывал, как посредством Linq и Elisy .Net Bridge напрямую обращаться к данным 1С:Предприятие. Практика показала, что особых трудностей нигде не возникает. Основной трудностью, с которой пришлось столкнуться и решать, явилось извлечение изображений из справочника ХранилищеДополнительнойИнформации.

Проблема заключается в том, что 1С:Предприятие записывает значение типа ХранилищеЗначения в базу данных в своем внутреннем формате. Ситуацию осложняет использование объекта СжатиеДанных, например, в следующем выражении:

Хранилище = Новый ХранилищеЗначения(ВыбранноеИзображение, Новый СжатиеДанных);

На каком алгоритме основано сжатие данных, мне найти и догадаться так и не удалось. Проблему удалось решить сохранением изображения без использования объекта СжатияДанных. Тем более, что самый распространенный формат Jpeg сжимать необязательно. Такое сжатие предусмотрено самим форматом.

Чтобы не переделывать конфигурацию "Управление Торговлей" была создана внешняя обработка, присоединенная к статье. На входе в нее подаются ссылка на Номенклатуру и файл изображения. Результатом ее работы становится запись в ХранилищеДополнительнойИнформации выбранного изображения без сжатия.

Добавление картинки в 1С:Предприятие для веб-сайта

Удалось заметить, что в поле базы данных несжатое изображение хранится в следующем виде: начиная с байта 0x64 8 байт посвящены размеру изображения, а затем идет само изображение. На этом принципе основан Asp.Mvc-контроллер, который вы можете скачать здесь же. Контроллер позволяет выдавать изображение из базы 1С с любым разрешением и размером. Результат будет выглядеть примерно так:

Пример веб-страницы, построенной по технологии прямого доступа к данным 1С:Предериятие

Данная статья показывает, как без всякого рода посредников напрямую извлекать изображения из программы 1С:Предприятие 8.х, размещенной на MSSQL. Код для отображения изображений на Asp.Net прилагается. Разработчикам следует более пристально приглядеться к стандартным механизмам сохранения в 1С файлов на предмет совместимости с другими общедоступными технологиями. Возможно, самостоятельно архивировать в формате Zip файлы и сохранять их без родного сжатия 1С.

LinqImages.epf (7,11 kb) - Обработка для 1С:Предприятие

LinqImages.cs (5,11 kb) - пример Asp.Mvc контроллера на C#

Comments (2) -

Анатолий
Анатолий Russia
2/1/2012 7:01:34 PM #

Очень помогло, спасибо.
А есть ли способ загнать изображения без сжатия напрямую в базу?

Elisy
Elisy Russia
5/15/2012 11:08:56 AM #

Способ загнать изображение напрямую нами не изучался.

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading

Richmedia.us

Добро пожаловать на сайт Richmedia.us

1 2 3 4 5 6 7 8

RecentComments

Comment RSS