1с сохранить картинку из табличного документа
Картинка - это двоичные данные, и в базе они хранятся в виде реквизитов с типом ХранилищеЗначения. Значения такого типа недоступны на клиенте. Поэтому не совсем очевидно, как же с ними работать. На самом деле всё очень просто, разработчики платформы придумали изящное решение данной проблемы.
Между сервером и клиентом двоичные данные передаются через временное хранилище. Точнее, передаются не сами данные, а специальный идентификатор, имеющий тип Строка. Строки прекрасно передаются от клиента к серверу и обратно.
Идея работы с картинками в управляемых формах заключается в следующем. Создаётся реквизит формы строкового типа. На форму помещается поле, у которого свойство Вид равно Картинка , связанный с ранее созданным реквизитом формы. С этого момента если в созданный реквизит поместить тот самый идентификатор, платформа его распознает, загрузит картинку и отобразит её на форме. Никаких дополнительных усилий со стороны программиста предпринимать не требуется. А сам реквизит вполне можно использовать для доступа к сохранённому во временном хранилище изображению как на стороне клиента, так и на сервере.
Заполняется реквизит обычно в обработчике события ПриСозданииНаСервере . Вот пример, когда само изображение хранится в реквизите объекта под названием Изображение :
Здесь мы сохраняем картинку из базы данных во временном хранилище и запоминаем полученный идентификатор в реквизите формы ЗагруженныйФайл . Разумеется, реквизит можно назвать как угодно.
Изменить картинку несложно - достаточно просто записать в реквизит формы новый идентификатор картинки. Вот пример того, как на клиенте можно загрузить картинку из указанного файла:
Здесь мы загружаем картинку стандартным способом - соответствующим конструктором объекта типа Картинка. Далее, помещаем её во временное хранилище и запоминаем идентификатор в реквизите формы. Последняя строка нужна если при замене картинки требуется устанавливать флаг изменения в форме. Как вариант - можно установить свойство "Сохраняемые данные" реквизита формы.
Если изображение хранится в основном объекте формы, то при записи объекта необходимо записать и картинку. Самое лучшее место для этого - событие ПриЗаписиНаСервере . В нём есть доступ ко всем необходимым данным:
Здесь мы получаем данные из временного хранилища, помещаем их в реквизит типа ХранилищеЗначения с именем Изображение . Не забываем записать объект!
Приведённый пример максимально упрощён, он записывает картинку даже если она не менялась. В реальном коде лучше добавить признак изменения и соответствующие проверки.
Если картинка хранится в другом объекте, код будет аналогичным, только добавится строка с получением другого объекта.
Все чаще и чаще - вижу на форумах вопрос, а как загрузить(или сохранить) КАРТИНКУ из документа EXCEL или WORD
Стоит задача -вытащить картинки из прайс-листа.
Вроде все просто, а попробуйте сами.
Как это сделать знаете ?
Видел написанные макросы для выгрузки на много много строк.
Видел внешние обработки и на 7.7 и на 8.* который загружают документ и потом долго анализируют, что же они загрузили.
Дело в том , что даже открыв документ (например EXCEL) и кликнув на картинку - Вы ее не сможете сохранить, а НАДО и что делать ?
А вот Вы знаете как это сделать ? Подумайте, все гениально - просто
на мой взляд самый ПРОСТОЙ и самый БЫСТРЫЙ способ . (не требующих особых навыков)
//Хотел сразу же сдесь ответ написать, нет не буду - напрягите свои извилины и предложите свой вариант
//Мой Ответ в прикрепленном файле : пароль - инфостарт
ОТВЕТ ДЛЯ ТЕХ КТО НЕ ЖЕЛАЕТ ДУМАТЬ:
Чтобы выгрузить картинки из EXCEL книги нужно ее сохранить как WEB страницу.
Файл-Сохранить как - Веб страница (*.htm,*.html)
и тогда по пути где находится наш файл будет создана папка
ИМЯНАШЕГОФАЙЛА.files открываем ее и видим все нужные нам картинки.
Все гениальное - просто.
Понравилось решение данного вопроса ?
Специальные предложения
Идея заключается в том, что картинку из книги можно ее родными методами скопировать в буфер и вставить в диаграмму Excel. А уже диаграмма имеет метод для сохранения ее в виде графического файла на диске.
Приведенная функция получает в качестве аргумента полный путь к книге Excel со встроенной картинкой (имя листа с картинкой должно быть "Лист1") и возвращает объект 1С - Картинка.
>>>Хотел сразу же з десь ответ написать, нет не буду
>>>Ответ в прикрепленном файле
Какое то противоречие..
ЗЫ: А нафига это всё ?
(2) ну не успела правильно страница отобразиться
хотел в виде конкурса оформить на лучшее решение вопроса
не успел.
(3) .
Сказал бы я тебе. да тут Женщины есть.
файл выложил запореленный не для скачки -( это статья, а не программа )
для того чтобы потом доказать, что мой ответ уже лежал на сайте ,
а не потом я его придумал.
И увидеть интерес к данному вопросу (для статистики)
А так , сейчас такИе типа тебя будут писать - да это баян,яйца выеденного не стоит. (посмотрел твои статьи - без комментариев)
а я могу поспорить что многим этот совет пригодится и не все про этот способ знают .
.
Вот так - хотел новую струю внести - типа конкурса - НЕНУЖНО
пользователь ленивый , он не будет, он не . а что мы их судим
тут ненужно быть программистом , нужно только знать как пользоваться инструментом.
А главное научить, показать и рассказать - а чтобы лучше запомнилось - заставить подумать.
В этой статье научимся добавлять в табличный документ картинки. Вы узнаете, как вставить конкретную картинку в табличный документ, а также как подгрузить картинку из общих картинок конфигурации и из хранилища значений.
Вставить картинку в табличный документ 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
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 10060 (0x0000274C): Попытка установить соединение была безуспешной 19
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C медленно работает по сети с базой на SQL Server 20
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Посмотреть все результаты поиска похожих
Еще в этой же категории
Получить список Справочников конфигурации 2
НаКлиенте Процедура ПоКнопкеЧтениеИзМетаданных(Команда) // Вставить содержимое обработчика. Перем СписокСправочников; СписокСправочников = Новый СписокЗначений; СписокСправочников = СправочникиИзМетаданных(); Для Сч = 0 По СписокСправочников Получить список Документов конфигурации 0
//ЭлементыФормы.ОбъектПоиска - Поле Выбора на форме СписокВыбора = ЭлементыФормы.ОбъектПоиска.СписокВыбора; Для Каждого Документ Из Метаданные.Документы Цикл //Проверим, есть ли права на просмотр? Да- добавляем, Нет - пропускаем Если ПравоДосту Перебор Основных Реквизитов формы 0
//Перебор Основных Реквизитов формы Для Каждого Рек из ЭтаФорма.Метаданные().Реквизиты Цикл Сообщить(рек.Имя+" - " +рек.Синоним+" - " +Строка(рек.Тип)); КонецЦикла; // или так Для Каждого Рек из Метаданные().Реквизиты Цикл Сообщить(рек.Имя+" Функция устанавливает новое значение реквизита документа или справочника. 0
//функция устанавливает новое значение реквизита документа или справочника и задает вопрос, если новое значение не соответствует предыдущему Функция гЗначение(Ко,Атрибут,Значение) Экспорт Знач1=Ко.ПолучитьАтрибут(Атрибут); Знач2=Значение; //про Функция возвращает ссылку на заданный реквизит объекта метаданных Документ 0
// Документ - ссылка на документ, Реквизит - название реквизита, например " Контрагент" Функция гРеквизитДокумента(Документ,Реквизит) Экспорт Если Метаданные.Документ(Документ).РеквизитШапки(Реквизит).Выбран()=1 Тогда Возврат Метаданные.Докумен Посмотреть все в категории Метаданные
Все добавил - в табличном доке выводится - отлично!
Но при выгрузке в Excel или Word изображения не отображаются.
Вывод картинки в табличный документ осуществляется через ОбластьЯчеекТабличногоДокумента.ПараметрКартинки (у меня называется "Картинка")
Как экспортировать Табличный документ в Excel без сохранения?
Есть табличный документ. Нужно чтобы он в экселе открывался. Сейчас просто создаю временный файл с.
Табличный документ из 1С на новый лист существующей книги Excel
Есть внешняя обработка по созданию некой табличной части, в модуле формы которой имеется код: .
Сохранить табличный документ в файл Word или Excel
Доброго времени суток! Вопрос не знаете ли как сделать в форме отчета кнопку которая при нажатии.
Табличный Документ
Доброго времени суток проблемка заключается в следующем имеется код Процедура.
Потому что сущности картинка, как в 1с ексель не знает. Предварительно надо сконцентрировать в нормальную картинку и потом запихнуть в аксель.
Табличный документ - скролл
День добрый, не могу реализовать банальную весчь: есть форма с полем табличного документа, в.
макет - табличный документ
Доброго времени суток! С 1с встречаюсь впервые. Вообщем мне необходимо создать документ и вывести.
Табличный документ оформление
Подскажите как можно изменить цвет выводимой области макета при построении (Например если значение.
Табличный документ, обход
Здравствуйте. 1с8.1 Есть табличный документ с группировками(1 уровня). Нужно найти дубли текста.
Перенос в табличный документ
Добрый день, создаю внешнюю обработку с реквизитом "Объект1" (тип.составной, справочник.
Табличный документ автомасштаб
Здрасти. создал табДок = новый табличный документ. ТабДок.Автомасштаб = Истина; при выводе на.
Читайте также: