Как запретить функцию «Вывести список» и защитить данные от копирования в 1С

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

Способ 1. Программное управление свойством «Вывод» (Обычные формы)

В платформе 1С существует специальное системное перечисление ИспользованиеВывода, которое управляет доступом к печати, копированию и сохранению данных из табличных полей. Если вы работаете с обычными формами (характерно для 1С 8.2 или толстого клиента 8.3), управление осуществляется через свойства элементов формы.

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


Процедура ПриОткрытии()
    // Проверяем наличие полных прав у текущего пользователя
    Если Не РольДоступна("ПолныеПрава") Тогда
        // Запрещаем вывод списка, печать и копирование для элемента формы
        ЭлементыФормы.СправочникСписок.Вывод = ИспользованиеВывода.Запретить;
    КонецЕсли;
КонецПроцедуры

В этом примере СправочникСписок — это имя вашего табличного поля на форме. Установка значения ИспользованиеВывода.Запретить полностью блокирует команду «Вывести список» в контекстном меню и командной панели, а также делает невозможным копирование выделенных строк через Ctrl+C.

Способ 2. Глобальное ограничение через Роли (Права доступа)

Если стоит задача ограничить вывод данных для пользователя во всей базе сразу, наиболее правильным методом будет использование механизма ролей, для чего предварительно стоит провести анализ прав и ролей (удобно через инструмент сравнения и анализа профилей и прав пользователей 1С). Рассмотрим, как это настроить в Конфигураторе:

  1. Откройте нужную Роль (или создайте новую, используя инструмент для быстрой проверки прав доступа) — для этого подойдёт обработка для массового управления и аудита ролей пользователей 1С.
  2. Перейдите на самую верхнюю строку в дереве объектов метаданных (корень конфигурации).
  3. На вкладке «Права» найдите в списке право «Вывод» (в этом поможет помощник просмотра ролей для объекта).
  4. Снимите флажок у этого права.

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

Способ 3. Управление выводом в Управляемых формах (1С 8.3)

В управляемом интерфейсе логика работы с элементами формы немного изменилась. Здесь мы обращаемся к коллекции Элементы. Чтобы запретить вывод для динамического списка, используйте следующий код в серверной процедуре ПриСозданииНаСервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Запрещаем использование вывода для таблицы динамического списка
    Элементы.Список.ИспользованиеВывода = ИспользованиеВывода.Запретить;
КонецПроцедуры

Кроме того, у самой управляемой формы есть полезное свойство РазрешитьВывод. Если установить его в значение Ложь, запрет распространится на все элементы формы сразу. Проанализируем пример:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Глобальный запрет вывода для всей формы
    ЭтаФорма.РазрешитьВывод = Ложь;
КонецПроцедуры

Способ 4. Изменение состава команд и контекстного меню

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

  1. Выберите таблицу (динамический список) на форме.
  2. В свойствах найдите пункт «Состав команд».
  3. Снимите галочку с команды «Вывести список». Она исчезнет из меню «Еще» и контекстного меню.
  4. Если вы используете автоконтекстное меню, его можно отключить, установив свойство АвтоКонтекстноеМеню в значение Ложь, и создать собственное меню только с нужными командами.

Способ 5. Ограничение на уровне реквизитов

Если ваша цель — скрыть от вывода в Excel только определенные конфиденциальные данные (например, цены или номера телефонов), можно воспользоваться ограничением прав на уровне «Просмотр» для конкретных реквизитов объекта. Для этой задачи есть отчет по анализу профилей, прав и ролей пользователей 1С.

Проанализируем ситуацию: если в роли пользователя снято право «Просмотр» для реквизита НомерТелефона, то при попытке выполнить команду «Вывести список» этот реквизит просто не появится в диалоговом окне выбора колонок. Это наиболее надежный способ защиты конкретных полей данных.

Дополнительные рекомендации по защите данных

Выясним причину, по которой «Вывести список» часто остается лазейкой. Даже если вы скрыли кнопку, опытный пользователь может попробовать использовать горячие клавиши. Установка свойства ИспользованиеВывода = ИспользованиеВывода.Запретить является самым надежным программным методом, так как он блокирует доступ на уровне системного ядра 1С, включая горячие клавиши.

Также помните, что в версии 8.3 вы можете использовать Расширения конфигурации. Это позволит вам внедрить код запрета вывода в типовые справочники, не снимая их с поддержки. Достаточно создать расширение, добавить в него форму справочника и прописать запрет в процедуре-перехватчике &После("ПриСозданииНаСервере").

Подводя итог, для надежной защиты рекомендуется комбинировать методы: ограничивать видимость критически важных реквизитов через роли и программно блокировать ИспользованиеВывода в формах списков, где массовая выгрузка данных не предусмотрена бизнес-процессом.

← На главную