Тип: Булево. Содержит признак прозрачности фона. Истина - фон прозрачный.
Полное описание, параметры и ограничения
ПолеГрафическойСхемы.ПрозрачныйФон (GraphicalSchemaField.Transparent)
ПолеГрафическойСхемы (GraphicalSchemaField)
ПрозрачныйФон (Transparent)
Доступен, начиная с версии 8.1.
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Содержит признак прозрачности фона.
Истина - фон прозрачный.
Доступность:
Толстый клиент.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Обычное поле схемы: конструктор, карта, независимая копия и очистка
Полный модуль обычной формы толстого клиента. Реальная своя карта отображается в заранее созданном собственном поле, а самостоятельный ПолеГрафическойСхемы используется для проверки Set/Get/Очистить. Печать — отдельная явно разрешенная команда, здесь не выполнялась.
Где и как запускать
Полный модуль обычной формы собственной учебной обработки. Только толстое обычное приложение, не managed поле и не server module.
Подготовка
Собственная новая пустая CF УчебныеПоляГрафическойСхемы85 на точной платформе8.5.1.1343, без рабочих объектов, расширений, подписок и регламентных заданий. Создайте Задача85: номер Строка9 с автонумерацией, наименование100, без адресации/проверок/обработчиков. Ни задача, ни процесс в уроке не записываются и не запускаются.
Создайте БизнесПроцесс Маршрут85: номер Строка9 с автонумерацией, свойство Задача=Задача85. Карта маршрута: Старт85 → одиночное действие Подготовить85 → Завершить85. Соедините двумя стрелками, без других элементов/декораций/условий. Представление действия «Подготовить свою учебную книгу». Модули процесса/задачи и события карты пустые; обновите только свою CF.
Форма учебной внешней обработки принадлежит только этой новой CF. Код через СоздатьБизнесПроцесс и ПолучитьКартуМаршрута получает реально подготовленную карту в памяти. Коллекция схемы не имеет Добавить: новые точки честно создаются в Конфигураторе, не фиктивным вызовом к несуществующему API.
Ожидаются три точки и две линии, всего5 элементов. Точка действия сначала найдена на сервере/толстом клиенте по настоящему БизнесПроцессы.Маршрут85.ТочкиМаршрута.Подготовить85, ее readonly Имя передается клиенту. Тонкий клиент не обращается к сервер-only ТочкиМаршрута менеджера.
Записать/Прочитать используют лишь свои ПотокВПамяти и поток своих байтов, не имя файла, XML или внешний источник. Получена отдельная копия: число элементов/цвет/поле страницы сохраняются, изменение копии15→20 не меняет исходник15. Не выдавайте присваивание ссылки за независимую копию.
Это авторский учебный код и статические проверки. Никакие GUI,1С,принтеры,сеть,файлы или процессы во время подготовки справочника не запускались. В будущих ручных проверках используйте только свою карту и свой новый стенд.
Создайте обычную форму внешней обработки УчебнаяКарта85, запускайте только толстым клиентом в обычном приложении. В редакторе формы разместите элемент управления ПолеГрафическойСхемы с именем ПолеСхемы85. Создайте реквизиты Статус85 Строка для сообщения и ПодтверждениеПечати85 Строка. Вставьте весь основной модуль, не внутрь обработчика.
Добавьте три кнопки: Подготовить85,ОчиститьИВернуть85,ПечатьТолькоСвоейКопии85; действия — одноименные процедуры с параметром Кнопка. Открытие формы не создает процессов/задач/файлов и не печатает. Сначала Подготовить85: создает собственную карту и показывает поле только для просмотра.
Печать не нужна для memory-проверки. Для отдельного будущего разрешенного испытания только своей схемы подготовьте собственный тестовый виртуальный принтер без рабочих очередей/автопечати, введите МОЙ УЧЕБНЫЙ ВИРТУАЛЬНЫЙ ПРИНТЕР. Диалог всегда показан: выберите именно свое тестовое устройство либо отмените. Не используйте рабочий физический принтер. Этот шаг здесь не выполнялся.
Перем ИсходнаяСхема85;
Перем ИмяДействия85;
Перем ПечатьМоглаНачаться85;
Процедура Подготовить85(Кнопка)
#Если ТолстыйКлиентОбычноеПриложение Тогда
Если ИсходнаяСхема85 <> Неопределено Тогда
ВызватьИсключение "Откройте новую собственную форму для нового опыта";
КонецЕсли;
Данные = ПолучитьСвоюКарту85();
ИсходнаяСхема85 = Данные.Схема;
ИмяДействия85 = Данные.ИмяДействия;
ПечатьМоглаНачаться85 = Ложь;
ВременноеПоле = Новый ПолеГрафическойСхемы;
ВременноеПоле.УстановитьСхему(КопироватьСвоюСхему85(ИсходнаяСхема85));
Полученная = ВременноеПоле.ПолучитьСхему();
Если Полученная.ЭлементыГрафическойСхемы.Количество() <> 5 Или Полученная.ПолеСлева <> 15 Тогда
ВызватьИсключение "Конструктор поля и Set/Get не вернули собственную карту";
КонецЕсли;
Полученная.ПолеСлева = 20;
ВременноеПоле.УстановитьСхему(Полученная);
Если ВременноеПоле.ПолучитьСхему().ПолеСлева <> 20 Или ИсходнаяСхема85.ПолеСлева <> 15 Тогда
ВызватьИсключение "Копия поля должна быть независима от исходной карты";
КонецЕсли;
ВременноеПоле.Очистить();
Если ВременноеПоле.ПолучитьСхему().ЭлементыГрафическойСхемы.Количество() <> 0 Тогда
ВызватьИсключение "Очистка временного собственного поля не подтверждена";
КонецЕсли;
Поле = ЭлементыФормы.ПолеСхемы85;
Поле.УстановитьСхему(КопироватьСвоюСхему85(ИсходнаяСхема85));
Поле.Доступность = Истина;
Поле.ПрозрачныйФон = Ложь;
Поле.ТолькоПросмотр = Истина;
Поле.Рамка = Новый Рамка(ТипРамкиЭлементаУправления.Одинарная, 1);
Поле.ЦветРамки = Новый Цвет(37, 99, 235);
Если Не Поле.Доступность Или Поле.ПрозрачныйФон Или Не Поле.ТолькоПросмотр
Или Поле.Рамка.ТипРамки <> ТипРамкиЭлементаУправления.Одинарная Или Поле.Рамка.Толщина <> 1
Или Поле.ЦветРамки <> Новый Цвет(37, 99, 235) Тогда
ВызватьИсключение "Настройки собственного обычного поля не совпали";
КонецЕсли;
СхемаПоля = Поле.ПолучитьСхему();
Подготовка = СхемаПоля.ЭлементыГрафическойСхемы.Найти(ИмяДействия85);
Если Подготовка = Неопределено Тогда
ВызватьИсключение "Нет собственной точки в отображаемой копии";
КонецЕсли;
Поле.ТекущийЭлемент = Подготовка;
Если Поле.ТекущийЭлемент <> Подготовка Тогда
ВызватьИсключение "Выбор своего текущего элемента не подтвержден";
КонецЕсли;
Статус85 = "Обычное поле содержит собственную карту; только просмотр, независимый roundtrip проверен";
#Иначе
ВызватьИсключение "ПолеГрафическойСхемы и его конструктор требуют толстого обычного клиента";
#КонецЕсли;
КонецПроцедуры
Процедура ОчиститьИВернуть85(Кнопка)
Если ИсходнаяСхема85 = Неопределено Тогда
ВызватьИсключение "Сначала Подготовить85";
КонецЕсли;
Поле = ЭлементыФормы.ПолеСхемы85;
Поле.Очистить();
Если Поле.ПолучитьСхему().ЭлементыГрафическойСхемы.Количество() <> 0 Или ИсходнаяСхема85.ЭлементыГрафическойСхемы.Количество() <> 5 Тогда
ВызватьИсключение "Очищается только своё поле, не исходная карта";
КонецЕсли;
Поле.УстановитьСхему(КопироватьСвоюСхему85(ИсходнаяСхема85));
Если Поле.ПолучитьСхему().ЭлементыГрафическойСхемы.Количество() <> 5 Тогда
ВызватьИсключение "Собственное возвращение карты не подтверждено";
КонецЕсли;
Статус85 = "Поле0→5, исходная карта остается5; файл и процесс не менялись";
КонецПроцедуры
Процедура ПечатьТолькоСвоейКопии85(Кнопка)
#Если ТолстыйКлиентОбычноеПриложение Тогда
Если ИсходнаяСхема85 = Неопределено Или ПодтверждениеПечати85 <> "МОЙ УЧЕБНЫЙ ВИРТУАЛЬНЫЙ ПРИНТЕР" Тогда
ВызватьИсключение "Нужно отдельное разрешение печати своей карты на собственном виртуальном устройстве";
КонецЕсли;
Если ПечатьМоглаНачаться85 Тогда
ВызватьИсключение "Печать уже могла начаться; повторение неизвестного исхода запрещено";
КонецЕсли;
ПечатнаяКопия = КопироватьСвоюСхему85(ИсходнаяСхема85);
ПечатнаяКопия.Вывод = ИспользованиеВывода.Разрешить;
ПечатноеПоле = Новый ПолеГрафическойСхемы;
ПечатноеПоле.УстановитьСхему(ПечатнаяКопия);
ПечатьМоглаНачаться85 = Истина;
ПечатноеПоле.Напечатать(РежимИспользованияДиалогаПечати.Использовать);
Статус85 = "Native печать с диалогом вернулась; физический вывод или отмена отдельно не подтверждены";
#Иначе
ВызватьИсключение "Этот метод поля доступен только толстому клиенту";
#КонецЕсли;
КонецПроцедуры
Процедура ПроверитьСвойПустойСтенд()
Если Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 1 Или Метаданные.Задачи.Количество() <> 1 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
КонецЕсли;
Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
КонецЕсли;
Источники = Новый Массив;
Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
Для Каждого Источник Из Источники Цикл
Расширения = РасширенияКонфигурации.Получить(, Источник);
Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
ВызватьИсключение "Native список расширений должен иметь тип Массив";
КонецЕсли;
Если Расширения.Количество() <> 0 Тогда
ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
КонецЕсли;
КонецЦикла;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
КонецЕсли;
КонецПроцедуры
Функция ПолучитьСвоюКарту85()
ПроверитьСвойПустойСтенд();
Если Метаданные.БизнесПроцессы.Найти("Маршрут85") = Неопределено Или Метаданные.Задачи.Найти("Задача85") = Неопределено Тогда
ВызватьИсключение "Нужны собственные процесс, задача и три точки карты";
КонецЕсли;
Процесс = БизнесПроцессы.Маршрут85.СоздатьБизнесПроцесс();
Схема = Процесс.ПолучитьКартуМаршрута();
Если ТипЗнч(Схема) <> Тип("ГрафическаяСхема") Или Схема.ЭлементыГрафическойСхемы.Количество() <> 5 Тогда
ВызватьИсключение "Карта должна содержать три точки и две соединительные линии";
КонецЕсли;
Подготовка = Схема.ЭлементыГрафическойСхемы.Найти(БизнесПроцессы.Маршрут85.ТочкиМаршрута.Подготовить85);
Если Подготовка = Неопределено Или ТипЗнч(Подготовка) <> Тип("ЭлементГрафическойСхемыДействие") Тогда
ВызватьИсключение "Не найдено реальное собственное одиночное действие Подготовить85";
КонецЕсли;
Схема.ЦветФона = Новый Цвет(248, 250, 252);
Схема.ПолеСлева = 15;
Схема.Вывод = ИспользованиеВывода.Запретить;
Возврат Новый Структура("Схема,ИмяДействия", Схема, Подготовка.Имя);
КонецФункции
Функция КопироватьСвоюСхему85(Источник)
Если ТипЗнч(Источник) <> Тип("ГрафическаяСхема") Тогда
ВызватьИсключение "Копируется только собственная графическая схема";
КонецЕсли;
Запись = Новый ПотокВПамяти;
Попытка
Источник.Записать(Запись);
Байты = Запись.ЗакрытьИПолучитьДвоичныеДанные();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение = Байты.ОткрытьПотокДляЧтения();
Копия = Новый ГрафическаяСхема;
Попытка
Копия.Прочитать(Чтение);
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Если Копия.ЭлементыГрафическойСхемы.Количество() <> Источник.ЭлементыГрафическойСхемы.Количество()
Или Копия.ПолеСлева <> Источник.ПолеСлева Или Копия.ЦветФона <> Источник.ЦветФона Тогда
ВызватьИсключение "Свой memory roundtrip не сохранил структуру и настройки";
КонецЕсли;
Возврат Копия;
КонецФункции
Разбор по шагам
Толстый обычный клиент проверяется препроцессором. ПолучитьСвоюКарту85 проверяет точную новую CF/версию/свои процесс и задачу, получает карту незаписанного процесса с5элементами и настоящим одиночным действием.
Новый ПолеГрафическойСхемы — настоящий нативный объект поля, не объект графического документа. Временное поле принимает отдельную копию карты, ПолучитьСхему возвращает документ. Изменение поля страницы15→20 и повторное Set/Get подтверждают независимость от исходника.
Очистить временного поля дает схему с0элементами, исходник остается5. Этот объект не объявляется прикрепленным к форме: видимое поле отдельно действительно создано в редакторе обычной формы.
Настраиваем реальное ЭлементыФормы.ПолеСхемы85: доступно, непрозрачный фон, только просмотр, новая одинарная Рамка толщиной1 и цвет. Рамка не подменяется строкой/enum напрямую; native цвет при Выпуклой/Вдавленной рамке может игнорироваться, поэтому выбрана Одинарная.
ТекущийЭлемент получает реальный элемент текущей отображаемой схемы, найденный по заранее полученному имени действия. Выделение сравнивается с этим элементом, не с чужой точкой другой схемы.
ОчиститьИВернуть85 сначала подтверждает0у своего поля и5у источника, затем УстановитьСхему новой собственной копии возвращает5. Не меняется карта метаданных, не удаляются бизнес-процессы или файлы.
Отдельная печатная копия получает Вывод=Разрешить, исходная и видимая схемы остаются с ограничением вывода. Новый печатный контрол получает только свою копию. Напечатать получает точный enum РежимИспользованияДиалогаПечати.Использовать, а не Булево из неточного старого примера.
Флаг возможной печати установлен до настоящего native вызова, повтор неизвестного исхода запрещен. Метод возвращает управление без сведений о physical print/cancel; текст не обещает отпечаток, PDF или успешный файл.
Как проверить результат
Подготовить85: карта5, поле страницы исходника15, копии20; временное поле после очистки0, видимое поле снова5. Поле доступно и ТолькоПросмотр=Истина, выбран собственный элемент действия.
ОчиститьИВернуть85: поле0→5, исходник5, новые процессы/задачи не записаны. Нет команды Start/Записать бизнес-процесса или пути к файлу.
В thin/web или с другой версией/CF/метадатой урок должен отказать. Конструктор поля не используется как managed FormField API.
Попробуйте другое имя реального действия/отсутствующее действие в своей учебной карте: положительный выбор не должен произойти. Не присваивайте вымышленное Имя readonly элемента, чтобы тест «прошел».
Печатная команда без отдельного подтверждения отказывает до native вызова. В отдельном разрешенном опыте отмена диалога/неизвестный исход не считаются напечатанным результатом и не приводят к automatic retry.
Здесь runtime-проверок нет: static API/checks не являются показанным GUI, исправной очередью принтера или успешным отрисованным элементом.
Ожидаемый результат
Собственное обычное поле получает настоящую карту, выделяет ее реальное действие, проверяет отдельную копию и очистку/возврат. Печать оставлена честной отдельной административной командой с диалогом, без заявления выполненного вывода.
На что обратить внимание
ПолеГрафическойСхемы доступно только толстому клиенту. Управляемое поле другой API, поэтому нельзя перенести эти Set/Get/Очистить/Напечатать на Элементы managed формы.
Конструктор самостоятельного поля не доказывает его отображение в форме. В уроке оно нужно для реального memory roundtrip и отдельно для печатного вызова; видимое поле явно создается человеком в обычной форме.
Напечатать реально обращается к подсистеме печати. Ни принтер, ни файл, ни GUI здесь не использовались; runtimeVerifiedScenarios=0. Подтверждение пользователя в будущей форме не разрешает агенту выполнить реальную печать сейчас.
ПолеТолькоПросмотр — режим редактирования UI, не запрет программного Set/Clear. Ограничение Вывод документа не заменяет права всей базы; печатная копия отделена от исходника, разрешение не меняет рабочую карту.
Количество5 само по себе не доказывает полное тождество схем. Дополнительно проверяются конкретное действие, цвет, поле страницы и независимость изменения. Собственный поток закрывается и при ошибке.
Рамка/цвет/прозрачность — свойства ordinary контрола. Для managed интерфейса Версия8.5 цвет рамки не применяется по installed help; не переносите визуальные обещания между этими режимами.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.