На форме СКД запретить менять параметры по определенной роли
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) смотря как у вас там устроено.
В отчетах, где нет собственной формы, вызывается общая форма из свойств конфигурации.
Отчеты могут быть самые разные, с разными параметрами - поэтому, нужно сделать такую схему, чтобы не нарушить работу всех отчетов.
В принципе, при создании на сервере, в типовых уже натыкано множество всяких обработок формы, с видимостью и доступностью.
Вам нужно вникнуть в вашу систему, и аккуратно добавить свои условия. А может даже какую то отдельную страницу отчета сделать, для определенных ролей.
пример общей формы отчета из УНФ.
В отчетах, где нет собственной формы, вызывается общая форма из свойств конфигурации.
Отчеты могут быть самые разные, с разными параметрами - поэтому, нужно сделать такую схему, чтобы не нарушить работу всех отчетов.
В принципе, при создании на сервере, в типовых уже натыкано множество всяких обработок формы, с видимостью и доступностью.
Вам нужно вникнуть в вашу систему, и аккуратно добавить свои условия. А может даже какую то отдельную страницу отчета сделать, для определенных ролей.
пример общей формы отчета из УНФ.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ВариантыПанелиКлючТекущегоВарианта = " - ";
Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.КомандыЕще.Ширина = 15;
КонецЕсли;
// Параметры формы.
РежимРасшифровки = (Параметры.Свойство("Расшифровка") И Параметры.Расшифровка <> Неопределено);
РежимВариантаОтчета = (ТипЗнч(КлючТекущегоВарианта) = Тип("Строка") И Не ПустаяСтрока(КлючТекущегоВарианта));
ПравоВывода = ПравоДоступа("Вывод", Метаданные);
ФормаПараметры = Новый Структура(
"КлючНазначенияИспользования, КлючПользовательскихНастроек,
|Расшифровка, СформироватьПриОткрытии, ТолькоПросмотр,
|ФиксированныеНастройки, Раздел, Подсистема, ПодсистемаПредставление");
ЗаполнитьЗначенияСвойств(ФормаПараметры, Параметры);
ФормаПараметры.Вставить("Отбор", Новый Структура);
Если ТипЗнч(Параметры.Отбор) = Тип("Структура") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ФормаПараметры.Отбор, Параметры.Отбор, Истина);
Параметры.Отбор.Очистить();
КонецЕсли;
// СтандартныеПодсистемы.ОценкаПроизводительности
Попытка
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
ОтчетМетаданные = ОтчетОбъект.Метаданные();
ПостФикс = ОтчетМетаданные.Имя + "_" + СтрЗаменить(КлючТекущегоВарианта, " ", "_");
КлючеваяОперация = ПредопределенноеЗначение("Справочник.КлючевыеОперации.ФормированиеОтчёта_" + Постфикс);
Исключение
КлючеваяОперация = Неопределено;
КонецПопытки;
// Конец СтандартныеПодсистемы.ОценкаПроизводительности
Если ФормаПараметры.Подсистема = Неопределено Тогда
Элементы.ДругиеОтчеты.Видимость = Ложь;
КонецЕсли;
// Локальные переменные.
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
ОтчетМетаданные = ОтчетОбъект.Метаданные();
НастройкиОтчета = ОтчетыКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию();
АдресСхемы = ПоместитьВоВременноеХранилище(ОтчетОбъект.СхемаКомпоновкиДанных, УникальныйИдентификатор);
НастройкиОтчета.Вставить("АдресСхемы", АдресСхемы);
НастройкиОтчета.Вставить("ПолноеИмя", ОтчетМетаданные.ПолноеИмя());
НастройкиОтчета.Вставить("Наименование", СокрЛП(ОтчетМетаданные.Представление()));
Информация = ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(НастройкиОтчета.ПолноеИмя);
НастройкиОтчета.Вставить("ОтчетСсылка", Информация.Отчет);
НастройкиОтчета.Вставить("ВариантСсылка", ВариантыОтчетов.ПолучитьСсылку(НастройкиОтчета.ОтчетСсылка, КлючТекущегоВарианта));
Если ВариантыОтчетовПовтИсп.ОтчетыСНастройками().Найти(НастройкиОтчета.ОтчетСсылка) <> Неопределено Тогда
ОтчетОбъект.ОпределитьНастройкиФормы(ЭтотОбъект, КлючТекущегоВарианта, НастройкиОтчета);
СоответствиеПериодичностиПараметров = Новый Соответствие;
Для Каждого КлючИЗначение Из НастройкиОтчета.СоответствиеПериодичностиПараметров Цикл
ПолеКД = КлючИЗначение.Ключ;
Если ТипЗнч(ПолеКД) = Тип("ПараметрКомпоновкиДанных") Тогда
ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных." + Строка(ПолеКД));
КонецЕсли;
СоответствиеПериодичностиПараметров.Вставить(ПолеКД, КлючИЗначение.Значение);
КонецЦикла;
НастройкиОтчета.Вставить("СоответствиеПериодичностиПараметров", СоответствиеПериодичностиПараметров);
КонецЕсли;
НастройкиОтчета.Вставить("ПрочитатьФлажокФормироватьСразуИзПользовательскихНастроек", Истина);
Если Параметры.Свойство("СформироватьПриОткрытии") И Параметры.СформироватьПриОткрытии = Истина Тогда
Параметры.СформироватьПриОткрытии = Ложь;
НастройкиОтчета.ФормироватьСразу = Истина;
НастройкиОтчета.ПрочитатьФлажокФормироватьСразуИзПользовательскихНастроек = Ложь;
КонецЕсли;
НастройкиОтчета.Вставить("Внешний", ТипЗнч(НастройкиОтчета.ОтчетСсылка) = Тип("Строка"));
НастройкиОтчета.Вставить("ПредопределенныеВарианты", Новый СписокЗначений);
Если НастройкиОтчета.Внешний И ОтчетОбъект.СхемаКомпоновкиДанных <> Неопределено Тогда
Для Каждого Вариант Из ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек Цикл
НастройкиОтчета.ПредопределенныеВарианты.Добавить(Вариант.Имя, Вариант.Представление);
КонецЦикла;
КонецЕсли;
// Параметры по умолчанию
Если НастройкиОтчета.Свойство("ВыводитьСуммуВыделенныхЯчеек") И Не НастройкиОтчета.ВыводитьСуммуВыделенныхЯчеек Тогда
Элементы.АвтоСуммаГруппа.Видимость = Ложь;
Элементы.ОтчетТабличныйДокумент.УстановитьДействие("ПриАктивизацииОбласти", "");
КонецЕсли;
// Скрытие команд вариантов
Если Не НастройкиОтчета.Свойство("РазрешеноМенятьВарианты") Или Параметры.Свойство("ВидимостьКомандВариантовОтчетов") Тогда
НастройкиОтчета.Вставить("РазрешеноМенятьВарианты", ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ВидимостьКомандВариантовОтчетов"));
КонецЕсли;
Если ТипЗнч(НастройкиОтчета.РазрешеноМенятьВарианты) <> Тип("Булево") Тогда
НастройкиОтчета.РазрешеноМенятьВарианты = ВариантыОтчетовПовтИсп.ПравоДобавления();
Если НастройкиОтчета.РазрешеноМенятьВарианты // Команды не отключены параметрами открытия формы.
И Параметры.КлючВарианта = Неопределено // Открывается без контекста.
И ЗначениеЗаполнено(НастройкиОтчета.ВариантСсылка) Тогда // Вариант зарегистрирован.
ПредопределенныйВариант = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(НастройкиОтчета.ВариантСсылка, "ПредопределенныйВариант");
Если ЗначениеЗаполнено(ПредопределенныйВариант) Тогда
Отключенные = ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы();
Если Отключенные.Найти(ПредопределенныйВариант) <> Неопределено Тогда // Вариант отключен.
Текст = НСтр("ru = 'Контекстный вариант ""%1"" отчета ""%2"" открыт без контекста.'");
ВариантыОтчетов.ПредупреждениеПоВарианту(НастройкиОтчета.ВариантСсылка, Текст, НастройкиОтчета.ВариантСсылка, НастройкиОтчета.ОтчетСсылка);
НастройкиОтчета.РазрешеноМенятьВарианты = Ложь;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Не НастройкиОтчета.РазрешеноМенятьВарианты Тогда
АвтоНавигационнаяСсылка = Ложь;
КонецЕсли;
// Регистрация команд и реквизитов формы, которые не удаляются при перезаполнении быстрых настроек.
НаборРеквизитов = ПолучитьРеквизиты();
Для Каждого Реквизит Из НаборРеквизитов Цикл
ПолноеИмяРеквизита = Реквизит.Имя + ?(ПустаяСтрока(Реквизит.Путь), "", "." + Реквизит.Путь);
ПостоянныеРеквизиты.Добавить(ПолноеИмяРеквизита);
КонецЦикла;
Для Каждого Команда Из Команды Цикл
ПостоянныеКоманды.Добавить(Команда.Имя);
КонецЦикла;
// Приведение зависимых элементов формы к кондиции.
ВидимостьДоступностьКорректность("");
// Тесная интеграция с подсистемами БСП.
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РассылкаОтчетов") Тогда
МодульРассылкаОтчетов = ОбщегоНазначения.ОбщийМодуль("РассылкаОтчетов");
МодульРассылкаОтчетов.ФормаОтчетаДобавитьКоманды(ЭтотОбъект, Отказ, СтандартнаяОбработка);
КонецЕсли;
// События.
ОтчетыПереопределяемый.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
Если НастройкиОтчета.События.ПриСозданииНаСервере Тогда
ОтчетОбъект.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
КонецЕсли;
// Если в подменю одна команда, то выпадающий список не отображается.
Если Элементы.ГруппаОтправить_Левая.ПодчиненныеЭлементы.Количество() = 1 Тогда
Элементы.ОтправитьПоЭлектроннойПочте_Левая.Заголовок = Элементы.ГруппаОтправить_Левая.Заголовок + "...";
Элементы.Переместить(Элементы.ОтправитьПоЭлектроннойПочте_Левая, Элементы.КомандыЛевая, Элементы.ГруппаОтправить_Левая);
КонецЕсли;
Если Элементы.ГруппаОтправить.ПодчиненныеЭлементы.Количество() = 1 Тогда
Элементы.ОтправитьПоЭлектроннойПочте.Заголовок = Элементы.ГруппаОтправить.Заголовок + "...";
Элементы.Переместить(Элементы.ОтправитьПоЭлектроннойПочте, Элементы.КомандыЕще, Элементы.ГруппаОтправить);
КонецЕсли;
Показать
Сделала свою форму
и получила Поле объекта недоступно для записи (Видимость)
Что делать?
Хочу параметры СКД сделать недоступными для редактирования пользователю.
но не все. только даты отчета может редактировать.
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Ответственный = Пользователи.ТекущийПользователь();
Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы[1].Видимость = Ложь;
КонецПроцедуры
и получила Поле объекта недоступно для записи (Видимость)
Что делать?
Хочу параметры СКД сделать недоступными для редактирования пользователю.
но не все. только даты отчета может редактировать.
(5) Сделайте свой отчет, копируйте оригинальный и сделайте свой как внешний и извращайтесь как хотите. Дорабатывать типовой, да еще на СКД веселое занятие, но можно.
у реквизита формы нет свойства видимость, вам нужен элемент формы.
Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы[1].Видимость = Ложь;
у реквизита формы нет свойства видимость, вам нужен элемент формы.
(7) Повторяюсь вам нужен элемент формы, а не реквизиты формы. Вы пытаетесь установить видимость для одного из элементов доступных параметров СКД, вам нужен элемент формы:
Или проще
В отладчике то что после точки это и будут элементы формы.
Этаформа.Элементы.
Или проще
Элементы.
В отладчике то что после точки это и будут элементы формы.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот