Различить ИзменяетДанные и право команды на запись

Учебные задачи

Флаг влияет на перечитывание формы после команды. Не используем его как доказательство того, что код безопасен или ничего не записывает.

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

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

Подготовка

  1. Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.

  3. Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.

  4. В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.

  5. Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.

Описание = Метаданные.ОбщиеКоманды.Найти("АрхивСообщенийОбменов");
Если Описание = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует ОбщиеКоманды.АрхивСообщенийОбменов";
КонецЕсли;
Сообщить("Команда: " + Описание.Представление());
Сообщить("ИзменяетДанные: " + Строка(Описание.ИзменяетДанные));
Если Описание.ИзменяетДанные Тогда
    Сообщить("После выполнения такой команды форма перечитывает данные; сам обработчик ещё нужно изучить");
Иначе
    Сообщить("Автоматическое перечитывание этим флагом не заявлено; это не запрет записи в обработчике");
КонецЕсли;

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

  1. Читаем декларативную настройку команды.

  2. Не приравниваем Ложь к отсутствию записывающих операций в коде.

  3. Не приравниваем Истина к наличию прав у пользователя.

  4. Чтобы проверить реальные изменения, изучают обработчик и тестируют его в копии базы отдельно.

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

  1. В предоставленном XML ИзменяетДанные = Ложь: выполняется ветка без заявления о запрете записи.

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

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

Предотвращена ошибочная интерпретация настройки как проверки прав или побочных эффектов.

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

  1. Название команды и её флаг не заменяют аудит кода.

  2. Для открытия формы нужна отдельная разрешённая учебная проверка.

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

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

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

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

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