Меняем данные под пользователем с неполными правами

Если у пользователя нет прав на изменение даных — думаете, ему нельзя их изменять? А вот и нет. Можно!

Данная публикация является логическим практическим продолжением //infostart.ru/public/182849/ (Обработка универсального обмена XML и информационная безопасность типовых решений)

Дано: БП 3.0, пользователь с набором бухгалтерских ролей. Это главбух и ему нужно иметь возможность изменять дату запрета редактирования данных.

Но право на изменение Регистра сведений ДатыЗапретаИзменения есть только у роли ПолныеПрава. Давать эту роль бухгалтеру нельзя, да и зачем, когда нужен доступ на изменение одного единственного регистра. Конфигурацию менять нельзя. Как быть?

Выход есть! Бухгалтеру необходимо дать роль «Выполнение синхронизации данных» и роль «Использование дополнительных отчетов и обработок».

Загрузить в базу обработку с этой публикации, дать доступ к ней бухгалтеру. И все, он может менять дату запрета редактирования.

Идея обработки в том, что в ней формируется xml файлик загрузки с кодом, который выполняется в привилигированном режиме. Эта обработка вызывает обработку универсального обмена данных XML, загружает с её помощью файл загрузки, который сама же и формирует. При загрузке выполняется код, указанный в (ПередЗагрузкойДанных).

Т.к. у пользователя нет прав на интерактивное открытие формы обработки универсального обмена данными XML и нет прав на добавление/изменение доп обработок и отчетов — он не сможет ни загрузить произвольный файл, ни добавить свою внешнюю обработку. Но может пользоваться только тем, что предоставил ему программист. безопасность соблюдена.

Данная обработка успешно прошла испытание в файловой и  серв базе БП 3.0, для других конфгураций, возможно, придется изменить макет который формирует заголовки XML.

7 Comments

  1. KonstB

    Зачем извращаться с файликом — привилегированный режим дает право записи. Перенесите запись на Сервер. Все готово.

    У пользователя нет прав на чтение регистра ИнтервалыДокументов (периодический, незавизимый):

    &НаКлиенте
    Процедура Читать(Команда)
    ЗаписатьНаСервере();
    КонецПроцедуры
    
    &НаСервере
    Процедура ЗаписатьНаСервере()
    УстановитьПривилегированныйРежим(Истина);
    
    Рег = РегистрыСведений.ИнтервалыДокументов.СоздатьМенеджерЗаписи();
    Рег.Период   = ТекущаяДата();
    Рег.ВремяНачала  = НачалоМесяца(ТекущаяДата());
    Рег.ВремяОкончания  = КонецМесяца(ТекущаяДата());
    Рег.ТипДокумента = «мой тип»;
    Рег.Записать();
    
    УстановитьПривилегированныйРежим(Ложь);
    
    КонецПроцедуры
    

    Показать

    данный код отработает на ура!

    Reply
  2. webester
    Выход есть! Бухгалтеру необходимо дать роль «Выполнение синхронизации данных» и роль «Использование дополнительных отчетов и обработок».

    Дальше читать не стал.

    Reply
  3. ZERO_

    Изврат с XML — такой изврат….

    (Можно и через Com подключаться…Будет прикольно…)

    (1) У меня у склада есть только права на чтение или просмотр, что не мешает им создавать расходные через обработку….

    Reply
  4. Stim213

    (3) Через Com нельзя. Безопасность нарущается. Придется создавать служебную учетку с полными правами и в обработке писать параметры этой учетки — имя и пароль. И продвинутый пользователь сможет вытащить эту обработку из темпа 1С

    Reply
  5. Oleg1708

    Дыры были, дыры есть, дыры будут есть.

    Reply
  6. Bassgood

    (0) не понятно только зачем было извращаться с xml…

    Reply
  7. TMV

    (0) Не работает, если ипсользовать как внешнюю обработку, платформа 8.2.15.310

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *