Как запретить сохранение картинки и отключить контекстное меню на управляемой форме 1С

Программист 1С v8.3 (Управляемые формы)
← На главную

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

Метод 1. Отключение автозаполнения контекстного меню

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

Разберем по шагам, как это сделать:

  1. Откроем управляемую форму в конфигураторе и выберем элемент ПолеКартинки.
  2. Нажмем правой кнопкой мыши на поле в дереве элементов формы и выберем пункт «Показать контекстное меню». В дереве под полем появится новый объект — контекстное меню.
  3. Выделим появившееся контекстное меню и перейдем в его свойства (клавиша F4).
  4. Найдем свойство Автозаполнение и снимем с него флажок (установим значение Ложь).

После этих действий при нажатии правой кнопкой мыши на картинку в режиме «1С:Предприятие» меню либо не появится вовсе, либо будет содержать только те команды, которые мы добавим туда вручную. Это решает основную проблему — исключает появление системного диалога сохранения файла.

Метод 2. Использование прозрачной декорации (наложение слоев)

Иногда возникают ситуации, когда стандартное отключение меню по каким-то причинам не срабатывает (например, в специфических веб-клиентах или старых релизах платформы). Рассмотрим более «хитрый» графический метод — перекрытие изображения прозрачным слоем. Выясним, в чем его преимущество.

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

Проанализируем процесс реализации:

  1. Поместим ПолеКартинки и новую Декорацию в одну группу формы (вид группы — Без отображения).
  2. Для группы установим режим ОтображениеУправления в значение Нет.
  3. С помощью отрицательных отступов или особенностей размещения в свободных группах (если позволяет верстка) добьемся наложения декорации поверх картинки.
  4. Важный момент: у декорации свойство Гиперссылка должно быть выключено, а текст должен быть пустым.

В результате пользователь видит картинку (так как декорация прозрачна), но физически кликает по надписи. Это позволяет избежать эффекта «блеклости», который появляется при использовании свойства Доступность = Ложь.

Метод 3. Использование Поля HTML-документа

Если нам нужен абсолютный контроль над поведением элемента, рассмотрим вариант вывода изображения через ПолеHTMLДокумента. Этот метод позволяет использовать возможности языка JavaScript для блокировки событий браузера внутри платформы 1С.

Посмотрим на пример программного формирования содержимого такого поля:


&НаСервере
Процедура ВывестиКартинкуНаФорму()
    СсылкаНаКартину = ПолучитьНавигационнуюСсылкуИнформационнойБазы();
    ТекстHTML = "<html>
                |<body style='margin:0; padding:0; overflow:hidden;'>
                |<img src='" + СсылкаНаКартину + "' 
                |     oncontextmenu='return false;' 
                |     ondragstart='return false;' 
                |     style='width:100%; height:auto;'>
                |</body>
                |</html>";
    СодержимоеHTML = ТекстHTML;
КонецПроцедуры

В данном коде мы используем атрибут oncontextmenu='return false;', который полностью запрещает вызов правой кнопки мыши на уровне движка отображения HTML. Дополнительно атрибут ondragstart='return false;' блокирует возможность перетащить картинку мышкой на рабочий стол. Это максимально надежный способ программной защиты внутри приложения.

Метод 4. Настройка свойств «Доступность» и «Только просмотр»

Разберем стандартные свойства платформы, которые упоминались в обсуждении. У элемента формы есть два важных флага: Доступность и ТолькоПросмотр.

Нужно учитывать следующие нюансы:

Метод 5. Защита на уровне операционной системы (для инфокиосков)

В ситуации, когда приложение запускается на информационном терминале, важно понимать: никакие программные запреты внутри 1С не дадут 100% гарантии, если ОС настроена небезопасно. Проанализируем системный подход.

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

  1. Использовать режим Assigned Access (назначенный доступ) в Windows. Это ограничит пользователя только одним окном 1С.
  2. Настроить Групповые политики (GPO), запретив запуск explorer.exe и ограничив доступ к локальным дискам C:, D: и прочим.
  3. Отключить возможность использования горячих клавиш (например, через реестр или специализированное ПО для киосков).

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

← На главную