1с получить картинку по ссылке
Картинка - это двоичные данные, и в базе они хранятся в виде реквизитов с типом ХранилищеЗначения. Значения такого типа недоступны на клиенте. Поэтому не совсем очевидно, как же с ними работать. На самом деле всё очень просто, разработчики платформы придумали изящное решение данной проблемы.
Между сервером и клиентом двоичные данные передаются через временное хранилище. Точнее, передаются не сами данные, а специальный идентификатор, имеющий тип Строка. Строки прекрасно передаются от клиента к серверу и обратно.
Идея работы с картинками в управляемых формах заключается в следующем. Создаётся реквизит формы строкового типа. На форму помещается поле, у которого свойство Вид равно Картинка , связанный с ранее созданным реквизитом формы. С этого момента если в созданный реквизит поместить тот самый идентификатор, платформа его распознает, загрузит картинку и отобразит её на форме. Никаких дополнительных усилий со стороны программиста предпринимать не требуется. А сам реквизит вполне можно использовать для доступа к сохранённому во временном хранилище изображению как на стороне клиента, так и на сервере.
Заполняется реквизит обычно в обработчике события ПриСозданииНаСервере . Вот пример, когда само изображение хранится в реквизите объекта под названием Изображение :
Здесь мы сохраняем картинку из базы данных во временном хранилище и запоминаем полученный идентификатор в реквизите формы ЗагруженныйФайл . Разумеется, реквизит можно назвать как угодно.
Изменить картинку несложно - достаточно просто записать в реквизит формы новый идентификатор картинки. Вот пример того, как на клиенте можно загрузить картинку из указанного файла:
Здесь мы загружаем картинку стандартным способом - соответствующим конструктором объекта типа Картинка. Далее, помещаем её во временное хранилище и запоминаем идентификатор в реквизите формы. Последняя строка нужна если при замене картинки требуется устанавливать флаг изменения в форме. Как вариант - можно установить свойство "Сохраняемые данные" реквизита формы.
Если изображение хранится в основном объекте формы, то при записи объекта необходимо записать и картинку. Самое лучшее место для этого - событие ПриЗаписиНаСервере . В нём есть доступ ко всем необходимым данным:
Здесь мы получаем данные из временного хранилища, помещаем их в реквизит типа ХранилищеЗначения с именем Изображение . Не забываем записать объект!
Приведённый пример максимально упрощён, он записывает картинку даже если она не менялась. В реальном коде лучше добавить признак изменения и соответствующие проверки.
Если картинка хранится в другом объекте, код будет аналогичным, только добавится строка с получением другого объекта.
Ну, есть за что минуснуть. Неряшливо сделано. Простейшая вещь, баянный способ реализации, ну хоть обёртку можно было сделать поудобнее. А так - множество мелких шероховатостей.
Просмотры 17102
Загрузки 27
Рейтинг 5
Создание 23.10.15 12:17
Обновление 24.12.15 21:43
№ Публикации 411461
Кому Для всех
Конфигурация Конфигурации 1cv8
Операционная система Windows
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
См. также
Конвертация любых адресов, написанных в свободной форме, к ФИАС Промо
Допустим у нас есть база с адресами клиентов, и написаны они могут быть как душе угодно. С опечатками, без индексов, без разделителей, в совершенно любом формате. Вот было бы здорово иметь функцию, которая одним нажатием кнопки преобразует любую белиберду к строгому представлению адреса по ФИАС? Восстановит индекс, исправит опечатки и вернёт на 100% валидный адрес. Для всех, кто мечтательно сказал "ДА!", выкладываю данную обработку.
2 стартмани
30.06.2020 11175 100 XilDen 15
BIM: взаимодействие с платформой Autodesk Forge
Предлагаемый пример демонстрирует широкие возможности для взаимодействия «1С:Предприятие» с платформой Autodesk Forge и позволяет вам получить базовые представления о применения технологий информационного моделирования в строительстве. Поддерживаются все версии платформы от 8.3.12 и выше до 8.3.18.
1 стартмани
25.11.2020 58115 13 kandr 3
Модуль обмена с QIWI
Компании, которые используют систему моментальных платежей QIWI, ценят ее за удобство по скорости выплат и для платежей по запросу. Но такие переводы сложны для учета, а при большом объеме проводимых операций отнимают много времени и превращаются в дополнительную головную боль. Мы сотрудничали с компаниями, которые отправляют большое количество платеже на QIWI, и часто слышали боль бухгалтеров о том, как им сложно работать с такими переводами. Поэтому мы автоматизировали выплаты через QIWI в 1С и создали модуль интеграции 1С c API QIWI Wallet и QIWI TopUp.
5 стартмани
25.05.2020 10639 1 Neti 10
Панель команд текущего объекта (документа, справочника и т.д.) со следующим возможностями: Редактор реквизитов, таблиц и движений текущего объекта, Анализ прав доступа к текущему объекту, Поиск ссылок на объект с отборами, Сторно движений документа, Выгрузка/загрузка текущего объекта между базами. Реализована всплывающей панелью в форме объекта. Подключается как расширение конфигурации (*.cfe) либо отдельными обработками.
2 стартмани
01.05.2020 17767 118 sapervodichka 3
Групповая корректировка записей регистров (Управляемое приложение) v 2.2 Промо
Обработка предназначена для групповой корректировки записей регистров Накопления, Сведений и Бухгалтерии. Разработана специально для Управляемого приложения.
2 стартмани
06.09.2013 72939 382 kser87 69
"Учет штрафов ГИБДД" с возможной загрузкой из открытых источников в интернет Расширение конфигурации 1С: Предприятие 8.3
Расширение конфигурации Бухгалтерия предприятия, редакция 3.0 (при минимальных изменениях любой типовой конфигурации), позволяющее вести историю данных по штрафам ГИБДД для справочника транспортных средств компании. Бонусом поставляется внешняя обработка, способная загружать эти данные из открытых источников в интернет.
4 стартмани
30.12.2019 24154 33 capitan 26
Односторонний файловый обмен с сайтом по ftp (1C 2 Web)
Подходит под любую конфигурацию на управляемом интерфейсе на базе БСП 2.4.4 и выше. Позволяет гибко настроить выгрузку, практически любых, данных по расписанию на сервер ftp вашего ресурса. Ведение лога процесса выгрузки также предусмотрено.
3 стартмани
09.12.2019 15639 20 LamerSoft 0
Работа с релизами 1С и договорами ИТС
Работа с релизами 1С и партнерским кабинетом.
2 стартмани
15.08.2019 24217 65 RocKeR_13 37
Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON, Такси+ОФ) Промо
Простой перенос через JSON данных между двумя базами 1С (документов, справочников, ПВХ, ПВР, счетов). Аналогична произвольной выгрузке в типовой "Выгрузка/загрузка XML", но может использоваться для отличающихся конфигураций. Подходит для любых пар баз с любым интерфейсом (управляемый + обычный). Без настроек. Не требует идентичности конфигураций и платформ. При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.
1 стартмани
22.10.2014 230915 4478 ekaruk 189
Работа с файлами (обычная и управляемая форма)
Нужно загрузить файл с клиента на сервер или же, наоборот, файл загрузить с сервера на клиент, а впридачу все это на web-клиенте, да еще и асинхронно? Нет ничего проще, читай далее, как это сделать!
1 стартмани
10.06.2019 48331 261 Xershi 78
3 стартмани
04.05.2019 29863 101 MarkoSokolov 48
Строим маршруты на картах в 1С с помощью OpenStreetMap, OSRM и Leaflet
Краткая статья о том как вывести на карту (в 1С) маршруты с помощью OpenStreetMap, OSRM и Leaflet. По данной системе очень мало примеров, но так как OpenStreetMap является бесплатным сервисом и не требует никаких ключей и регистраций, и является довольно мощным механизмом, решил написать небольшую статью "как это сделать?". В первую очередь скажу, все намного проще, если вы используете последнюю версию платформы (8.3.14), где есть поддержка практически всех браузеров (IE 11, EDGE, Mozilla), но что делать если у нас не самая свежая платформа, где поддержка только IE 9?
2 стартмани
12.02.2019 42160 141 Ditron 134
Внешняя компонента для работы по Web-socket протоколу x32 x64 Промо
2 стартмани
30.03.2018 41791 99 Ditron 115
Редактор объектов информационной базы 8.3
Универсальная внешняя обработка для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.59 от 02.12.2021
2 стартмани
23.01.2019 47549 552 ROL32 56
Сравнение pdf-файлов актов сверки
Обработка сравнивает два pdf-файла, в которых находятся стандартные печатные формы актов сверки, и показывает на экране совпадающие и/или отличающиеся по суммам документы взаиморасчетов.
1 стартмани
19.12.2018 25861 19 Torin99 2
Выгрузка изображений из справочника на диск
Обработка позволяет записать изображения из справочка Номенклатура на диск в указанное место.
1 стартмани
30.11.2018 28204 12 wrooom 16
Обработка "Распознавание штрихкода с помощью утилиты Zbar" для Документооборот ред. 2 Промо
В связи с тем, что стандартный функционал программы «Документооборот» ред. 2.1 дает возможность распознавания штрихкодов только форма EAN-13, данная обработка - альтернативный способ для распознавания штрихкода в программе 1С: Документооборот ред. 2 с помощью утилиты Zbar, которая распознает в том числе и в формате Code 128 (один из стандартных штрихкодов кодирования документов, например, «Управление торговлей» ред. 11), а также с возможностью поэтапно проследить все действия от распознавания до прикрепления к документу или простой загрузки в каталоги файлов в базе 1С.
В этой статье научимся добавлять в табличный документ картинки. Вы узнаете, как вставить конкретную картинку в табличный документ, а также как подгрузить картинку из общих картинок конфигурации и из хранилища значений.
Вставить картинку в табличный документ 1С
Научимся вставлять картинки в макет табличного документа 1С. Для того, чтобы вставить картинку в табличный документ необходимо воспользоваться командой «Картинка…» тогда, когда табличный документ открыть и на нем установлен фокус. Команда «Картинка…» находится по следующему пути в конфигураторе 1С: «Главное меню – Таблица — Рисунки».
Откроется окно «Выбор картинки».
В этом окне есть несколько вариантов выбора. В закладке «Из библиотеки» мы можем выбрать или общую картинку конфигурации, или стандартную картинку платформы 1С.
На закладке «Из файла» мы можем загрузить нужную картинку из файловой системы.
Вставим картинку из файла. Для этого на закладке «Из файла» следует нажать на кнопку «Выбрать файл».
Найти нужный файл в открывшемся окне «Выбор картинки».
После выбора рисунка, вы можете сделать белый цвет прозрачным. Для этого следует нажать на кнопку «Установить прозрачный цвет», после этого ваш курсор станет «карандашом», и этим курсором необходимо кликнуть по белому цвету картинки.
В результате, белый цвет уйдет.
После нажатия на кнопку «Ок» окна «Выбор картинки», картинка отобразится в табличном документе.
Заметьте, что вокруг вставленной картинки имеется рамка. Для того, чтобы убрать эту рамку, откроем палитру свойств картинки.
И в свойстве Линия установим значение «Нет линии».
В результате, рамки во круг картинки не станет.
Добавим макету область, создадим форму, команду формы, в которой будем выводить табличный документ на просмотр.
И посмотрим, как выведется наш табличный документ с картинкой.
Вывести картинку в табличный документ 1С
Приведенный выше способ отображение картинок статичен: мы вручную при создании макета выбираем ту или иную картинку, которая будет всегда в этом макете отображаться. Но, очень часто возникают ситуации, когда нужно картинку подгружать или из библиотеки картинок, или из хранилища значений.
В этой статье Вы узнаете, как загружать и хранить картинки в хранилище значений:
В учебной конфигурации у справочника Контрагенты был создан реквизит Логотип, тип которого Хранилище значения.
В этом реквизите хранятся картинки.
Теперь, сделаем табличный документ, на котором будет выводиться информация об контрагенте, а также картинка, которая привязана к этому контрагенту.
Есть несколько способов вывода картинки на табличный документ, разберем один из них.
Создадим макет табличного документа, в котором создадим область и зададим несколько параметров, в которые будем выводить информацию о контрагенте.
Теперь, в макет добавим пустую картинку. Нам следует выполнить команду «Рисунок…» по уже знакомому пути «Главное меню – Таблица — Рисунки», но не выбирать ни какую картинку ни где, а просто нажать на кнопку «Ок».
Будет добавлена пуста картинка (скорее всего, она будет маленького размера).
Откроем палитру свойств этой картинки, изменим имя, уберем рамку и установим авторазмер картинки.
Всё! Макет готов, теперь создадим на управляемой форме реквизит Контрагент, поле ввода контрагента, а также команду для вывода табличного документа.
Создадим обработчик команды и функцию, в которой будем выводить в табличный документ данные контрагента.
Мы получили данные контрагента через запрос. Обращаю ваше внимание на поле «Контрагенты.Логотип КАК Логотип», так мы получаем хранилище значения. Пока все вывели табличный документ без рисунка. Реализуем возможность вывода рисунка. Для этого, вставим после вывода параметров области (ИНН,КПП, название) следующий код.
В этом коде, из хранилища значений, которое в поле Логотип выборки, получим двоичный файл (//1). Потом создадим объект Картинка конструктором на основе двоичных данных (//2), вторым параметром Истина мы установили прозрачность картинки. И присвоим свойству Картинка рисунку области табличного документа, который мы добавили пустым, созданную картинку (//3).
По сути, мы программным способом «загрузили» картинку в свойство Картинка созданного нами пустого рисунка.
Если мы сейчас попробуем показать этот табличный документ, то на нем отобразится картинка.
Рассмотрим ещё, как программным способом вывести общую картинку. Например, в моей конфигурации имеется общая картинка под названием «Общий логотип».
Выведем эту картинку в уже созданный ранее табличный документ.
Для этого, также как и в первый раз, добавим на табличный документ пустую картинку, которую назовем ОбщийЛоготип, и у которой уберем обводку.
Нам осталось вывести эту картинку при формировании табличного документа. Делается это гораздо проще, чем с картинкой из хранилища значений: просто присваиваем свойству Картинка, вновь добавленному рисунку табличного документа, общую картинку из библиотеки картинок.
После этого, общая картинка будет выведена в табличный документ.
Другие статьи про табличные документы в 1С:
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
Bell в управляемом интерфейсе пробует сохранить выбранные картинки в базу 1С, но возникли сложности с сохранением в хранилище значений. как пример Bell приложил CF файл с мини конфигурацией, за что ему большое спасибо, т.к. большая часть материалов этой статьи написана им, я лишь поправил небольшие участки кода связанные с передачей файлов и сохранение в хранилище значений.
Так как везде уже Такси, то CF я перевел в этот режим и в нем демонстрирую.
Имеется справочник Хранилище данных:
Основная Форма Элемента:
так же имеется общая форма ФормаЗагрузкиФайлов
При помощи ее выбираются файлы изображений и загружаются в справочник - одновременно можно загружать несколько файлов
в коде вызывается ОповеститьОВыборе(ПомещенныеФайлы) и срабатывает обработчик в ФормаСпискаДополнительно
и следующим кодом идет создание элементов справочника и загрузка изображений из временного хранилища
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 6
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р, НомСтроки, НомЯче COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Посмотреть все результаты поиска похожих
Еще в этой же категории
В первой части Пошагового примера загрузки, хранения и отображения картинок (фотографий) в справочниках мы с вами реализовали минимальный функционал, позволяющий нам выводить фото для элементов любого справочника.
На данный момент конфигурация из нашего примера имеет следующие недостатки (убедитесь сами):
- если в открытой форме элемента справочника Сотрудники мы с помощью кнопки «Добавить картинку» будем последовательно выбирать несколько картинок (даже без выполнения команды «Записать»), то все эти картинки будут сохраняться в справочнике Файлы;
- при выборе для Сотрудника новой картинки старая (которая была установлена до этого) не удаляется из справочника Файлы, а остается в нем;
- если мы в открытой форме элемента справочника Сотрудники заменим фотографию сотрудника и попробуем закрыть форму, то форма закроется без каких-либо уведомлений – то есть система «не видит», что в элемент справочника внесены изменения и не спрашивает пользователя сохранять или нет эти изменения.
1. Прежде чем приступ ить к исправлению имеющихся «глюков» давайте сделаем наш справочник Файлы более удобным и функциональным. Для этого по аналогии с шагами 6-8 первой части пошагового примера сделаем так, чтобы мы могли просматривать хранимые картинки в самом справочнике Файлы.
Создадим Форму элемента справочника Файлы:
Тип формы: Форма элемента справочника;
Реквизиты формы: Код, Наименование.
2. В конструкторе форм создайте новый реквизит формы Фото, тип – Строка, длина 0.
3. Мышкой перетащите созданный в шаге 2 реквизит Фото на Форму элемента справочника Файлы. В свойстве «Вид» получившегося поля меняем значение с «Поле ввода» на «Поле картинки».
4. Для отображения картинки на форме выделяем Форму, в свойствах нашей Формы переходим на закладку «События» и переходим к событию ПриСозданииНаСервере .
5. Напишем программный код процедуры ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) :
//устанавливаем автомасштаб для картинки
Элементы . Фото . РазмерКартинки = РазмерКартинки . АвтоРазмер ;
КонецПроцедуры
6. Запускаем систему в режиме 1С:Предприятие и смотрим что у нас получилось:
7. Теперь самое время приступить к исправлению найденных «глюков» при загрузке и хранении фотографий. Для этого в модуле формы справочника Сотрудники доработаем нашу серверную процедуру УстановитьКартинку() – см. 11 пункт 1 части пошагового примера. Для удобства добавленные строки программного кода выделены подчеркиванием:
&НаСервере
Процедура УстановитьКартинку ()
//создаем новый элемент в Справочнике Файлы
НовыйФайлКартинки = Справочники . Файлы . СоздатьЭлемент ();
//в реквизит СправочникаФайлы Файл помещаем выбранную ранее Картинку,
НовыйФайлКартинки . Файл = Новый ХранилищеЗначения ( ПолучитьИзВременногоХранилища ( Фото ));
Фото = ПоместитьВоВременноеХранилище ( НовыйФайлКартинки . Файл . Получить ());
//записываем новый элемент справочника Файлы
НовыйФайлКартинки . Записать ();
//добавили во 2 ЧАСТИ ПРИМЕРА
// тут проверим была ли ранее установлена картинка и если да - то удалим ее из справочника Файлы
//вторая проверка Объект.Картинка.ПолучитьОбъект()<>Неопределено нужна чтобы проверить если ли в справочнике
//Файлы элемент, на который ссылается наш реквизит Картинка.
//Тем не менее, картинки может не быть по 2 причинам:
//1 если мы удалим картинку из справочника Файлы вручную
//2 если мы установим новую картинку, но откажемся от сохранения изменений в данный элемент
Если Объект . Картинка . Пустая () = Ложь и Объект . Картинка . ПолучитьОбъект ()<>Неопределено Тогда
СтарыйФайлКартинки = Объект . Картинка . ПолучитьОбъект ();
СтарыйФайлКартинки . Удалить ();
КонецЕсли;
//конец того, что добавили во 2 ЧАСТИ ПРИМЕРА
//устанавливаем значение реквизита Картинка Справочника Сотрудники
Объект . Картинка = НовыйФайлКартинки . Ссылка ;
//добавили во 2 ЧАСТИ ПРИМЕРА. Модифицированность. Программно укажем, что данный элемент справочника был изменен.
ЭтаФорма . Модифицированность =Истина;
//если модифицированности недостаточно, то можно использовать метод формы Записать (снять комментарий с последней строки)
//ЭтаФорма.Записать();
8. Внимательно прочитайте комментарии в программном коде нашей серверной процедуры УстановитьКартинку() .
9. Обратите внимание на следующую сроку кода:
ЭтаФорма . Модифицированность =Истина;
Тут мы свойству Формы «Модифицированность» присвоили значение истина. Так как ссылку на картинку (значение реквизита Картинка справочника Сотрудники) мы устанавливаем программно (в программном модуле, а не интерактивно), то программа «не видит» когда мы меняем значение данного реквизита. Но мы можем программно изменить данное свойство, что мы и делаем.
Теперь, если мы в открытой форме элемента справочника Сотрудники заменим фотографию сотрудника и попробуем закрыть форму, то система «увидит», что форма была модифицирована и задаст нам соответствующий вопрос:
Читайте также: