ПриСозданииНаСервереФормыРедактированияРазрешенныхЗначений (БСП)

Автор: 1С
ОбщийМодуль.УправлениеДоступомСлужебный
БСП

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

// Заполняет вспомогательные данные, требуемые для работы формы,
// которые не зависят от содержания объекта или заполняются для нового объекта.
//
// Форма должна содержать реквизиты, указанные ниже.
// Реквизиты отмеченные символом * заполняются автоматически, но их нужно создать в форме.
// Реквизиты отмеченные символом # должны быть созданы в форме, если
// в форме будет создан реквизит ТекущаяГруппаДоступа (см. ниже).
// Реквизиты отмеченные символом @ будут созданы автоматически.
//
//  ТекущаяГруппаДоступа - необязательный реквизит,
//                         если не создан в форме, тогда не используется.
//
//  ВидыДоступа - Таблица с полями:
//    #ГруппаДоступа              - СправочникСсылка.ГруппыДоступа,
//    ВидДоступа                  - ОпределяемыйТип.ЗначениеДоступа,
//    Предустановленный           - Булево (только для профиля),
//    ВсеРазрешены                - Булево,
//    *ВидДоступаПредставление    - Строка - представление настройки,
//    *ВсеРазрешеныПредставление  - Строка - представление настройки,
//    @Используется               - Булево.
//
//  ЗначенияДоступа - Таблица с полями:
//    #ГруппаДоступа     - СправочникСсылка.ГруппыДоступа,
//    *ВидДоступа        - ОпределяемыйТип.ЗначениеДоступа,
//    ЗначениеДоступа    - ОпределяемыйТип.ЗначениеДоступа,
//    *НомерСтрокиПоВиду - Число.
//
//  *ИспользоватьВнешнихПользователей     - Булево - реквизит будет создан, если нет в форме.
//  *НадписьВидДоступа                    - Строка - представление текущего вида доступа в форме.
//  @ЭтоПрофильГруппДоступа               - Булево.
//  @ТекущийВидДоступа                    - ОпределяемыйТип.ЗначениеДоступа.
//  @ТекущиеТипыВыбираемыхЗначений        - СписокЗначений.
//  @ТекущийТипВыбираемыхЗначений         - ОпределяемыйТип.ЗначениеДоступа.
//  @ИмяРеквизитаХранилищаТаблиц          - Строка.
//  @ВидДоступаПользователи               - ОпределяемыйТип.ЗначениеДоступа.
//  @ВидДоступаВнешниеПользователи        - ОпределяемыйТип.ЗначениеДоступа.
//  
//  @ВсеВидыДоступа - Таблица с полями:
//    @Ссылка        - ОпределяемыйТип.ЗначениеДоступа,
//    @Представление - Строка,
//    @Используется  - Булево.
//
//  @ПредставленияВсеРазрешены - Таблица с полями:
//    @Имя           - Строка,
//    @Представление - Строка.
//
//  @ВсеТипыВыбираемыхЗначений - Таблица с полями:
//    @ВидДоступа        - ОпределяемыйТип.ЗначениеДоступа,
//    @ТипЗначений       - ОпределяемыйТип.ЗначениеДоступа,
//    @ПредставлениеТипа - Строка,
//    @ИмяТаблицы        - Строка.
//
// Параметры:
//  Форма      - ФормаКлиентскогоПриложения, которую требуется настроить для
//               редактирования разрешенных значений.
//
//  ЭтоПрофиль - Булево - указывает, что возможна настройка видов доступа
//               в том числе представление настройки содержит 4 значения, а не 2.
//
//  ИмяРеквизитаХранилищаТаблиц - Строка, содержащая, например, строку "Объект", которая
//               содержит таблицы ВидыДоступа и ЗначенияДоступа (см. ниже).
//               Если указана пустая строка, тогда считается,
//               что таблицы хранятся в реквизитах формы.
//
Процедура ПриСозданииНаСервереФормыРедактированияРазрешенныхЗначений(Форма, ЭтоПрофиль = Ложь, ИмяРеквизитаХранилищаТаблиц = "Объект") Экспорт
	
	ДобавитьРеквизитыВспомогательныхДанныхВФорму(Форма, ИмяРеквизитаХранилищаТаблиц);
	
	Форма.ИмяРеквизитаХранилищаТаблиц = ИмяРеквизитаХранилищаТаблиц;
	Форма.ЭтоПрофильГруппДоступа = ЭтоПрофиль;
	
	// Заполнение типов значений доступа всех видов доступа.
	Для каждого СвойстваВидаДоступа Из СвойстваВидаДоступа() Цикл
		Для каждого Тип Из СвойстваВидаДоступа.ТипыВыбираемыхЗначений Цикл
			МассивТипов = Новый Массив;
			МассивТипов.Добавить(Тип);
			ОписаниеТипа = Новый ОписаниеТипов(МассивТипов);
			
			МетаданныеТипа = Метаданные.НайтиПоТипу(Тип);
			Если Метаданные.Перечисления.Найти(МетаданныеТипа.Имя) = МетаданныеТипа Тогда
				ПредставлениеТипа = МетаданныеТипа.Представление();
			Иначе
				ПредставлениеТипа = ?(ЗначениеЗаполнено(МетаданныеТипа.ПредставлениеОбъекта),
					МетаданныеТипа.ПредставлениеОбъекта,
					МетаданныеТипа.Представление());
			КонецЕсли;
			
			НоваяСтрока = Форма.ВсеТипыВыбираемыхЗначений.Добавить();
			НоваяСтрока.ВидДоступа        = СвойстваВидаДоступа.Ссылка;
			НоваяСтрока.ТипЗначений       = ОписаниеТипа.ПривестиЗначение(Неопределено);
			НоваяСтрока.ПредставлениеТипа = ПредставлениеТипа;
			НоваяСтрока.ИмяТаблицы        = МетаданныеТипа.ПолноеИмя();
		КонецЦикла;
	КонецЦикла;
	
	Форма.ВидДоступаПользователи           = Справочники.Пользователи.ПустаяСсылка();
	Форма.ВидДоступаВнешниеПользователи    = Справочники.ВнешниеПользователи.ПустаяСсылка();
	Форма.ИспользоватьВнешнихПользователей = ВнешниеПользователи.ИспользоватьВнешнихПользователей();
	
	ЗаполнитьТаблицуВсеВидыДоступаВФорме(Форма);
	
	ЗаполнитьТаблицуПредставленияВсеРазрешеныВФорме(Форма, ЭтоПрофиль);
	
	ОформитьТаблицуВидыДоступаВФорме(Форма);
	
	УдалитьНесуществующиеВидыИЗначенияДоступа(Форма);
	УправлениеДоступомСлужебныйКлиентСервер.ЗаполнитьСвойстваВидовДоступаВФорме(Форма);
	
	ОбновитьОтображениеНеиспользуемыхВидовДоступа(Форма, Истина);
	
	СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(
		Форма, "ЗначенияДоступаПоВидуДоступа");
	
	// Настройка параметров выбора значения доступа.
	ПараметрыВыбора = Новый Массив;
	ПараметрыВыбора.Добавить(Новый ПараметрВыбора("ЭтоВыборЗначенияДоступа", Истина));
	Форма.Элементы.ЗначенияДоступаЗначениеДоступа.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбора);
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПослеЗаписиНаСервереФормыРедактированияРазрешенныхЗначений (БСП)

ОбработкаПроверкиЗаполненияНаСервереФормыРедактированияРазрешенныхЗначений (БСП)

ПередЗаписьюНаСервереФормыРедактированияРазрешенныхЗначений (БСП)

ПриПовторномЧтенииНаСервереФормыРедактированияРазрешенныхЗначений (БСП)

ПараметрыФормыРедактированияРазрешенныхЗначений (БСП)

ОтборВТаблицахФормыРедактированияРазрешенныхЗначений (БСП)

УстановитьРазрешенностьРедактированияРеквизитов (БСП)

ПриСозданииНаСервере (БСП)

1С Менеджер конфигураций