ГрафическаяСхема.ПолучитьКартинку

Методы · GetPicture

Получает изображение графической схемы в виде картинки.

Синтаксис

ПолучитьКартинку(<Ширина>, <Высота>, <ФорматКартинки>)
Полное описание, параметры и ограничения

ГрафическаяСхема.ПолучитьКартинку (GraphicalSchema.GetPicture)

ГрафическаяСхема (GraphicalSchema)

ПолучитьКартинку (GetPicture)

Доступен, начиная с версии 8.1.

Синтаксис:
ПолучитьКартинку(<Ширина>, <Высота>, <ФорматКартинки>)
Параметры:

<Ширина> (необязательный)
Тип: Число.
Ширина картинки в пикселях. Если <Ширина> или <Высота> = 0, то на клиенте в неформе клиентского приложения используются текущие размеры графической схемы. В остальных случаях используются размеры по умолчанию.
Значение по умолчанию: 0.

<Высота> (необязательный)
Тип: Число.
Высота картинки в пикселях. Если <Высота> или <Ширина> = 0, то на клиенте в неформе клиентского приложения используются текущие размеры графической схемы. В остальных случаях используются размеры по умолчанию.
Значение по умолчанию: 0.

<ФорматКартинки> (необязательный)
Тип: ФорматКартинки.
Определяет формат картинки.
Допустимые значения для растровых картинок: BMP, PNG и исходный тип. Для векторных картинок допускается указывать только исходный тип.
Значение по умолчанию: BMP.
Возвращаемое значение:
Тип: Картинка.

Описание:

Получает изображение графической схемы в виде картинки.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Добавить собственную миниатюру к сложным точкам

Картинка создаётся из той же карты в памяти и назначается шести точкам. Размещение картинки отделяем от геометрии маршрута.

Где и как запускать

Серверный фрагмент для отдельной Учебная85. Не модуль рабочей КА2/УНФ/УТ/БП; маршрут не запускается.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.

  6. Только в отдельной пустой Учебная85 создайте задачу УчебнаяЗадача с номером Строка 9, автонумерацией и наименованием Строка 100. Создайте бизнес-процесс УчебныйСложныйПроцесс, номер Строка 9, автонумерация; его свойство Задача — УчебнаяЗадача.

  7. В редакторе карты создайте Старт → условие ПроверитьКоличество. Выход Да соедините с выбором варианта СпособПолучения, выход Нет — с завершением Финиш. У выбора создайте ровно два варианта Самовывоз и Доставка; оба соедините с разделением ПодготовитьПараллельно.

  8. После разделения нарисуйте две параллельные точки действия ПодготовитьКнигу и СогласоватьАдрес. Обе соедините со слиянием ДождатьсяПодготовки. После него: обработка ПересчитатьИтоги → вложенный бизнес-процесс ВыполнитьВложенный → завершение Финиш.

  9. Расположите точки без перекрытия, дайте всем читаемые исходные подписи. Модули процесса/задачи и обработчики точек оставьте пустыми, обновите конфигурацию базы данных. Это учебный чертёж для исследования API, не готовый исполняемый процесс: условия, варианты, адресация и создание вложенного процесса не реализованы.

  10. Каждый фрагмент запускайте отдельно на сервере в ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи. Он создаёт незаписанный экземпляр и работает с картой в памяти; Записать и Старт не вызываются.

Если Метаданные.БизнесПроцессы.Найти("УчебныйСложныйПроцесс") = Неопределено
    Или Метаданные.Задачи.Найти("УчебнаяЗадача") = Неопределено Тогда
    ВызватьИсключение "Сначала создайте собственный сложный маршрут и задачу";
КонецЕсли;
Процесс = БизнесПроцессы.УчебныйСложныйПроцесс.СоздатьБизнесПроцесс();
Схема = Процесс.ПолучитьКартуМаршрута();
Если ТипЗнч(Схема) <> Тип("ГрафическаяСхема") Тогда
    ВызватьИсключение "Не получена собственная карта";
КонецЕсли;
Условие = Схема.ЭлементыГрафическойСхемы.Найти(БизнесПроцессы.УчебныйСложныйПроцесс.ТочкиМаршрута.ПроверитьКоличество);
Если Условие = Неопределено Тогда
    ВызватьИсключение "Отсутствует собственная точка ПроверитьКоличество";
КонецЕсли;
Если ТипЗнч(Условие) <> Тип("ЭлементГрафическойСхемыУсловие") Тогда
    ВызватьИсключение "У точки ПроверитьКоличество другой тип";
КонецЕсли;
Выбор = Схема.ЭлементыГрафическойСхемы.Найти(БизнесПроцессы.УчебныйСложныйПроцесс.ТочкиМаршрута.СпособПолучения);
Если Выбор = Неопределено Тогда
    ВызватьИсключение "Отсутствует собственная точка СпособПолучения";
КонецЕсли;
Если ТипЗнч(Выбор) <> Тип("ЭлементГрафическойСхемыВыборВарианта") Тогда
    ВызватьИсключение "У точки СпособПолучения другой тип";
КонецЕсли;
Разделение = Схема.ЭлементыГрафическойСхемы.Найти(БизнесПроцессы.УчебныйСложныйПроцесс.ТочкиМаршрута.ПодготовитьПараллельно);
Если Разделение = Неопределено Тогда
    ВызватьИсключение "Отсутствует собственная точка ПодготовитьПараллельно";
КонецЕсли;
Если ТипЗнч(Разделение) <> Тип("ЭлементГрафическойСхемыРазделение") Тогда
    ВызватьИсключение "У точки ПодготовитьПараллельно другой тип";
КонецЕсли;
Слияние = Схема.ЭлементыГрафическойСхемы.Найти(БизнесПроцессы.УчебныйСложныйПроцесс.ТочкиМаршрута.ДождатьсяПодготовки);
Если Слияние = Неопределено Тогда
    ВызватьИсключение "Отсутствует собственная точка ДождатьсяПодготовки";
КонецЕсли;
Если ТипЗнч(Слияние) <> Тип("ЭлементГрафическойСхемыСлияние") Тогда
    ВызватьИсключение "У точки ДождатьсяПодготовки другой тип";
КонецЕсли;
Обработка = Схема.ЭлементыГрафическойСхемы.Найти(БизнесПроцессы.УчебныйСложныйПроцесс.ТочкиМаршрута.ПересчитатьИтоги);
Если Обработка = Неопределено Тогда
    ВызватьИсключение "Отсутствует собственная точка ПересчитатьИтоги";
КонецЕсли;
Если ТипЗнч(Обработка) <> Тип("ЭлементГрафическойСхемыОбработка") Тогда
    ВызватьИсключение "У точки ПересчитатьИтоги другой тип";
КонецЕсли;
Вложенный = Схема.ЭлементыГрафическойСхемы.Найти(БизнесПроцессы.УчебныйСложныйПроцесс.ТочкиМаршрута.ВыполнитьВложенный);
Если Вложенный = Неопределено Тогда
    ВызватьИсключение "Отсутствует собственная точка ВыполнитьВложенный";
КонецЕсли;
Если ТипЗнч(Вложенный) <> Тип("ЭлементГрафическойСхемыВложенныйБизнесПроцесс") Тогда
    ВызватьИсключение "У точки ВыполнитьВложенный другой тип";
КонецЕсли;
Точки = Новый Массив;
Точки.Добавить(Условие);
Точки.Добавить(Выбор);
Точки.Добавить(Разделение);
Точки.Добавить(Слияние);
Точки.Добавить(Обработка);
Точки.Добавить(Вложенный);
Миниатюра = Схема.ПолучитьКартинку(96, 54, ФорматКартинки.PNG);
Если ТипЗнч(Миниатюра) <> Тип("Картинка") Тогда
    ВызватьИсключение "Не получена собственная миниатюра карты";
КонецЕсли;
Для Каждого Точка Из Точки Цикл
    Точка.Картинка = Миниатюра;
    Точка.ПоложениеКартинки = ПоложениеКартинкиЭлементаГрафическойСхемы.Лево;
    Точка.РазмерКартинки = РазмерКартинки.Пропорционально;
    Сообщить(ТипЗнч(Точка.Картинка) = Тип("Картинка"));
    Сообщить(Точка.ПоложениеКартинки = ПоложениеКартинкиЭлементаГрафическойСхемы.Лево);
    Сообщить(Точка.РазмерКартинки = РазмерКартинки.Пропорционально);
КонецЦикла;

Разбор по шагам

  1. ПолучитьКартинку вызывается до изменения элементов, чтобы в исходной миниатюре не было рекурсивных миниатюр.

  2. Тип полученного значения проверяется до назначения всем точкам.

  3. ПоложениеКартинки Лево относится к картинке внутри элемента, не к readonly-координате Лево точки.

  4. Пропорционально задаёт масштабирование изображения, не размер самого маршрута.

  5. Учебная миниатюра заменяет неизвестный внешний файл. Для настоящего интерфейса подберите собственную подходящую иконку.

Как проверить результат

  1. На каждую точку три сообщения Истина.

  2. Нет файловых операций, скачивания и заданий принтеру.

Ожидаемый результат

Три свойства картинки показаны на собственном готовом изображении для всех шести типов точек.

На что обратить внимание

  1. Миниатюра карты может быть слишком мелкой: это упражнение API, не рекомендация использовать её как рабочую иконку.

  2. Картинка и её положение не изменяют логический выход условия или выбранный вариант.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Показать картинку в собственной декорации

Миниатюра карты создана в памяти. Размещение и масштабирование изображения не меняют координаты декорации.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.

  6. В этой отдельной пустой конфигурации Учебная85 добавьте Задачи → УчебнаяЗадача: длина номера 9, тип Строка, автонумерация; наименование длиной 100. Добавьте реквизит Комментарий (Строка, 100), без проверки заполнения.

  7. Добавьте Бизнес-процессы → УчебныйПроцесс: длина номера 9, тип Строка, автонумерация, реквизит Комментарий (Строка, 100), без проверки заполнения. В свойстве Задача выберите УчебнаяЗадача.

  8. Карта маршрута: одна точка старта Старт → одна одиночная точка действия ПодготовитьКнигу → одна точка завершения Финиш. Соедините их стрелками; в представлении точки действия укажите Подготовить учебную книгу.

  9. Адресацию задач, групповые/условные/вложенные точки и обработчики маршрута для этой задачи не добавляйте. Модули задачи и процесса, подписки и внешние действия должны быть пустыми. Обновите конфигурацию базы данных.

  10. Все имена здесь относятся к новым учебным объектам, не к рабочей КА2/УНФ/УТ/БП. Каждый фрагмент запускайте отдельно на сервере в ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.

  11. В этих упражнениях процесс не записывается и не запускается. Исследуется копия карты маршрута в памяти; печать на физический принтер не вызывается.

  12. В собственную карту УчебныйПроцесс дополнительно добавьте две декорации с исходными наименованиями Начало учебного пояснения и Конец учебного пояснения. Других декораций в этом упражнении не должно быть.

  13. Соедините эти две декорации именно декоративной линией, не соединительной линией маршрута. Оставьте направление от первой ко второй, разместите пояснение вне рабочих стрелок Старт → ПодготовитьКнигу → Финиш. Обновите только свою учебную конфигурацию.

  14. Декорации не являются точками маршрута. Код меняет только полученную карту в памяти, не запускает процесс и не сохраняет оформление в метаданные.

Если Метаданные.БизнесПроцессы.Найти("УчебныйПроцесс") = Неопределено
    Или Метаданные.Задачи.Найти("УчебнаяЗадача") = Неопределено Тогда
    ВызватьИсключение "Сначала создайте учебные процесс, задачу и карту маршрута";
КонецЕсли;
Процесс = БизнесПроцессы.УчебныйПроцесс.СоздатьБизнесПроцесс();
Схема = Процесс.ПолучитьКартуМаршрута();
Если ТипЗнч(Схема) <> Тип("ГрафическаяСхема") Тогда
    ВызватьИсключение "Учебный процесс не вернул графическую схему";
КонецЕсли;
НачалоПояснения = Неопределено;
КонецПояснения = Неопределено;
Для Каждого Кандидат Из Схема.ЭлементыГрафическойСхемы Цикл
    Если ТипЗнч(Кандидат) <> Тип("ЭлементГрафическойСхемыДекорация") Тогда
        Продолжить;
    КонецЕсли;
    Если Кандидат.Наименование = "Начало учебного пояснения" Тогда
        Если НачалоПояснения <> Неопределено Тогда
            ВызватьИсключение "Повторяется исходная подпись первой собственной декорации";
        КонецЕсли;
        НачалоПояснения = Кандидат;
    КонецЕсли;
    Если Кандидат.Наименование = "Конец учебного пояснения" Тогда
        Если КонецПояснения <> Неопределено Тогда
            ВызватьИсключение "Повторяется исходная подпись второй собственной декорации";
        КонецЕсли;
        КонецПояснения = Кандидат;
    КонецЕсли;
КонецЦикла;
Если НачалоПояснения = Неопределено Или КонецПояснения = Неопределено Тогда
    ВызватьИсключение "Создайте две собственные декорации с указанными исходными подписями";
КонецЕсли;
КартинкаКарты = Схема.ПолучитьКартинку(96, 54, ФорматКартинки.PNG);
Если ТипЗнч(КартинкаКарты) <> Тип("Картинка") Тогда
    ВызватьИсключение "Не получена собственная миниатюра";
КонецЕсли;
КонецПояснения.Картинка = КартинкаКарты;
КонецПояснения.ПоложениеКартинки = ПоложениеКартинкиЭлементаГрафическойСхемы.Лево;
КонецПояснения.РазмерКартинки = РазмерКартинки.Пропорционально;
Сообщить(ТипЗнч(КонецПояснения.Картинка) = Тип("Картинка"));
Сообщить(КонецПояснения.ПоложениеКартинки = ПоложениеКартинкиЭлементаГрафическойСхемы.Лево);
Сообщить(КонецПояснения.РазмерКартинки = РазмерКартинки.Пропорционально);

Разбор по шагам

  1. Проверенные собственные декорации найдены до изменения.

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

  3. Лево — значение положения картинки внутри декорации, не команда перемещения самой декорации.

  4. Пропорционально задаёт способ масштабирования. Числа 96×54 относятся к полученной миниатюре.

  5. Нет чтения неизвестного файла, сохранения карты или вывода на принтер.

Как проверить результат

  1. Три сообщения Истина.

  2. Собственная картинка присутствует только в копии схемы в памяти.

Ожидаемый результат

Свойства изображения показаны на реально сформированной своей картинке.

На что обратить внимание

  1. Миниатюра схемы может быть слишком мелкой для рабочей иконки.

  2. Картинка декорации не является результатом выполнения маршрута.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.