Получить картинку из присоединенных файлов 1с

Обновлено: 04.07.2024

Средства работы с двоичными данными

Необходимо просканировать каталог с файлами, выбрать файлы с расширением ".jpg" или ".jpg" и для каждого такого файла собрать информацию об изображении. Если при анализе выяснится, что файл не соответствует формату JPEG, то такой файл следует пропустить.

Информация, которая нас интересует:

  • Ширина изображения в пикселах,
  • Высота изображения в пикселах,
  • Глубина цвета (количество битов на один пиксел).

Краткое описание формата JPEG

Кратко опишем некоторые детали формата, существенные для решения нашей задачи. За более подробным описанием формата JPEG можно обратиться к соответствующим источникам:

Файл JPEG содержит последовательность маркеров , каждый из которых начинается с байта 0xFF, свидетельствующего о начале маркера, и байта-идентификатора. Некоторые маркеры состоят только из этой пары байтов, другие же содержат дополнительные данные, состоящие из двухбайтового поля с длиной информационной части маркера (включая длину этого поля, но за вычетом двух байтов начала маркера, то есть 0xFF и идентификатора) и собственно данных. Такая структура файла позволяет быстро отыскать маркер с необходимыми данными (например, с длиной строки, числом строк и числом цветовых компонентов сжатого изображения).

Решение

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

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

Теперь, когда мы написали основную функцию для анализа JPEG-файла, напишем вспомогательную функцию - ПрочитатьМаркер , которая читает очередной маркер и возвращает информацию о нем:

  • РазмерСекции : размер секции, начало которой отмечает маркер
  • ЭтоОписаниеИзображения : признак того, что секция, отмеченная маркером, содержит нужную нам информацию об изображении.

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

Вы можете скачать приложенную конфигурацию прямо сейчас

Постановка задачи

Ответ от сервиса будет иметь следующий вид:

В качестве обработчика для метода создаем в модуле сервиса функцию ДляВсех_Get :

Создаем новую общую форму. На форму добавляем реквизиты типа Строка:

Далее добавляем элементы управления:

Создаем обработчик команды:

Вся работа по запросу сервиса и отображению результата выполняется в серверной функции ВыполнитьЗапрос :

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

Вставить картинку в табличный документ 1С

Вставить картинку в табличный документ 1С

Откроется окно «Выбор картинки».

Вставить картинку в табличный документ 1С

В этом окне есть несколько вариантов выбора. В закладке «Из библиотеки» мы можем выбрать или общую картинку конфигурации, или стандартную картинку платформы 1С.

На закладке «Из файла» мы можем загрузить нужную картинку из файловой системы.

Вставим картинку из файла. Для этого на закладке «Из файла» следует нажать на кнопку «Выбрать файл».

Вставить картинку в табличный документ 1С

Найти нужный файл в открывшемся окне «Выбор картинки».

Вставить картинку в табличный документ 1С

После выбора рисунка, вы можете сделать белый цвет прозрачным. Для этого следует нажать на кнопку «Установить прозрачный цвет», после этого ваш курсор станет «карандашом», и этим курсором необходимо кликнуть по белому цвету картинки.

Вставить картинку в табличный документ 1С

В результате, белый цвет уйдет.

Вставить картинку в табличный документ 1С

После нажатия на кнопку «Ок» окна «Выбор картинки», картинка отобразится в табличном документе.

Картинки табличного документа 1С

Заметьте, что вокруг вставленной картинки имеется рамка. Для того, чтобы убрать эту рамку, откроем палитру свойств картинки.

И в свойстве Линия установим значение «Нет линии».

В результате, рамки во круг картинки не станет.

Картинки табличного документа 1С

Добавим макету область, создадим форму, команду формы, в которой будем выводить табличный документ на просмотр.

И посмотрим, как выведется наш табличный документ с картинкой.

Картинки табличного документа 1С

Вывести картинку в табличный документ 1С

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

В этой статье Вы узнаете, как загружать и хранить картинки в хранилище значений:

В учебной конфигурации у справочника Контрагенты был создан реквизит Логотип, тип которого Хранилище значения.

Реквизит справочника

В этом реквизите хранятся картинки.

Картинка в справочнике 1С

Теперь, сделаем табличный документ, на котором будет выводиться информация об контрагенте, а также картинка, которая привязана к этому контрагенту.

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

Создадим макет табличного документа, в котором создадим область и зададим несколько параметров, в которые будем выводить информацию о контрагенте.

Макет табличного документа 1С

Вывести картинку в табличный документ 1С

Будет добавлена пуста картинка (скорее всего, она будет маленького размера).

Вывести картинку в табличный документ 1С

Откроем палитру свойств этой картинки, изменим имя, уберем рамку и установим авторазмер картинки.

Вывести картинку в табличный документ 1С

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

Управляемая форма 1С

Создадим обработчик команды и функцию, в которой будем выводить в табличный документ данные контрагента.

Мы получили данные контрагента через запрос. Обращаю ваше внимание на поле «Контрагенты.Логотип КАК Логотип», так мы получаем хранилище значения. Пока все вывели табличный документ без рисунка. Реализуем возможность вывода рисунка. Для этого, вставим после вывода параметров области (ИНН,КПП, название) следующий код.

В этом коде, из хранилища значений, которое в поле Логотип выборки, получим двоичный файл (//1). Потом создадим объект Картинка конструктором на основе двоичных данных (//2), вторым параметром Истина мы установили прозрачность картинки. И присвоим свойству Картинка рисунку области табличного документа, который мы добавили пустым, созданную картинку (//3).

Картинка табличного документа 1С

Если мы сейчас попробуем показать этот табличный документ, то на нем отобразится картинка.

Картинка табличного документа 1С

Рассмотрим ещё, как программным способом вывести общую картинку. Например, в моей конфигурации имеется общая картинка под названием «Общий логотип».

Общая картинка конфигурации 1С

Выведем эту картинку в уже созданный ранее табличный документ.

Для этого, также как и в первый раз, добавим на табличный документ пустую картинку, которую назовем ОбщийЛоготип, и у которой уберем обводку.

Картинка табличного документа 1С

Нам осталось вывести эту картинку при формировании табличного документа. Делается это гораздо проще, чем с картинкой из хранилища значений: просто присваиваем свойству Картинка, вновь добавленному рисунку табличного документа, общую картинку из библиотеки картинок.

После этого, общая картинка будет выведена в табличный документ.

Картинка табличного документа 1С

Другие статьи про табличные документы в 1С:

Это изображение имеет пустой атрибут alt; его имя файла - 1C-в-желтом-цвете-3D-221x300.jpg

Это изображение имеет пустой атрибут alt; его имя файла - 1_в-желтом-цвете-3D-маленькая-221x300.jpg

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Вывод изображения на управляемую форму

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

Изображение

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

Как это было раньше

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

Изображение

  • "Фото" - реквизит с типом "ХранилищеЗначений", в котором хранятся двоичные данные файла изображения.
  • "ИмяФайла" - строковой реквизит, в который записывается имя файла прикрепленного изображения.
На обычной форме добавляется элемент "ФотоСотрудника" с типом "Поле картинки". В событии "ПередОткрытием" формы добавляем следующий код:

И, вуаля! При открытии отображается прикрепеленной ранее фото!

Изображение

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

На управляемой форме

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

Для отображения изображения для начала добавим строковой реквизит формы "ФотоСотрудника", для которого на форме создадим элемент с типом "Поле картинки".

Изображение

Теперь в обработчике формы "ПриСозданииНаСервере" добавим следующий программный код:

Здесь методом "ПоместитьВоВременноеХранилище" мы помещаем двоичные данные из реквизита "Фото" элемента справочника во временное хранилище. Метод возвращает адрес помещенных данных во временном хранилище в виде строки. Подробнее о временном хранилище, его назначении и примеров работы с ним Вы можете прочитать по ссылке .

В результате при открытии элемента мы увидим следующее:

Изображение

На этом задача полностью решена!

Задача решена

Задачу мы решили, но есть куда оптимизировать! Файл лучше вынести в отдельную таблицу, чтобы время открытия элемента справочника не возросло при прикреплении изображений больших размеров. Но оптимизация уже выходит за рамки статьи.

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

Применимость

В статье рассматривается платформа «1С:Предприятие» редакции 8.3. Представленная информация актуальна для текущих релизов платформы.

Работа с файлами (картинками) в интерфейсе Такси

Для увеличения нажмите на изображение.

Однако, если разрешить модальные окна, то мы столкнемся с проблемами при работе в web-клиенте.

Во-вторых, о работе с картинками в управляемых формах часто спрашивают.

Для увеличения нажмите на изображение.

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

Далее, займемся формой. Как видно на картинке, реквизит с типом хранилище значений в форме недоступен.

Форма элемента - ХранилищеЗначения

Для увеличения нажмите на изображение.

Для увеличения нажмите на изображение.

Для увеличения нажмите на изображение.

Для увеличения нажмите на изображение.

Для увеличения нажмите на изображение.

Пару комментариев к вышеописанному коду:

Для увеличения нажмите на изображение.

Процедура ПередЗаписьюНаСервере

Так, осталось теперь при записи элемента справочника записать данные из временного хранилища в реквизит элемента справочника. Описываем событие ПередЗаписьюНаСервере:

Для увеличения нажмите на изображение.

Процедура ПриСозданииНаСервере

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

Для увеличения нажмите на изображение.

Вот и все. Готовую базу можно взять тут.

PDF-версия статьи для участников группы ВКонтакте

Статья в PDF-формате

Комментарии / обсуждение (64):

// Данные = РегистрыСведений.СопоставлениеДанных.Данные;
КонецПроцедуры

А как ето зделать ? Какие елементы формы должны присутвовать ? Может ето и без етого справочника можно зделать ?

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

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

Читайте также: