При создании на сервере формы редактирования разрешенных значений. Заполняет вспомогательные данные, требуемые для работы формы,
// Заполняет вспомогательные данные, требуемые для работы формы,
// которые не зависят от содержания объекта или заполняются для нового объекта.
//
// Форма должна содержать реквизиты, указанные ниже.
// Реквизиты отмеченные символом * заполняются автоматически, но их нужно создать в форме.
// Реквизиты отмеченные символом # должны быть созданы в форме, если
// в форме будет создан реквизит ТекущаяГруппаДоступа (см. ниже).
// Реквизиты отмеченные символом @ будут созданы автоматически.
//
// ТекущаяГруппаДоступа - необязательный реквизит,
// если не создан в форме, тогда не используется.
//
// ВидыДоступа - Таблица с полями:
// #ГруппаДоступа - СправочникСсылка.ГруппыДоступа,
// ВидДоступа - ОпределяемыйТип.ЗначениеДоступа,
// Предустановленный - Булево (только для профиля),
// ВсеРазрешены - Булево,
// *ВидДоступаПредставление - Строка - представление настройки,
// *ВсеРазрешеныПредставление - Строка - представление настройки,
// @Используется - Булево.
//
// ЗначенияДоступа - Таблица с полями:
// #ГруппаДоступа - СправочникСсылка.ГруппыДоступа,
// *ВидДоступа - ОпределяемыйТип.ЗначениеДоступа,
// ЗначениеДоступа - ОпределяемыйТип.ЗначениеДоступа,
// *НомерСтрокиПоВиду - Число.
//
// *ИспользоватьВнешнихПользователей - Булево - реквизит будет создан, если нет в форме.
// *НадписьВидДоступа - Строка - представление текущего вида доступа в форме.
// @ЭтоПрофильГруппДоступа - Булево.
// @ТекущийВидДоступа - ОпределяемыйТип.ЗначениеДоступа.
// @ТекущиеТипыВыбираемыхЗначений - СписокЗначений.
// @ТекущийТипВыбираемыхЗначений - ОпределяемыйТип.ЗначениеДоступа.
// @ИмяРеквизитаХранилищаТаблиц - Строка.
// @ВидДоступаПользователи - ОпределяемыйТип.ЗначениеДоступа.
// @ВидДоступаВнешниеПользователи - ОпределяемыйТип.ЗначениеДоступа.
//
// @ВсеВидыДоступа - Таблица с полями:
// @Ссылка - ОпределяемыйТип.ЗначениеДоступа,
// @Представление - Строка,
// @Используется - Булево.
//
// @ПредставленияВсеРазрешены - Таблица с полями:
// @Имя - Строка,
// @Представление - Строка.
//
// @ВсеТипыВыбираемыхЗначений - Таблица с полями:
// @ВидДоступа - ОпределяемыйТип.ЗначениеДоступа,
// @ТипЗначений - ОпределяемыйТип.ЗначениеДоступа,
// @ПредставлениеТипа - Строка,
// @ИмяТаблицы - Строка.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения, которую требуется настроить для
// редактирования разрешенных значений.
//
// ЭтоПрофиль - Булево - указывает, что возможна настройка видов доступа
// в том числе представление настройки содержит 4 значения, а не 2.
//
// ИмяРеквизитаХранилищаТаблиц - Строка, содержащая, например, строку "Объект", которая
// содержит таблицы ВидыДоступа и ЗначенияДоступа (см. ниже).
// Если указана пустая строка, тогда считается,
// что таблицы хранятся в реквизитах формы.
//
Процедура ПриСозданииНаСервереФормыРедактированияРазрешенныхЗначений(Форма, ЭтоПрофиль = Ложь, ИмяРеквизитаХранилищаТаблиц = "Объект") Экспорт
ДобавитьРеквизитыВспомогательныхДанныхВФорму(Форма, ИмяРеквизитаХранилищаТаблиц);
Форма.ИмяРеквизитаХранилищаТаблиц = ИмяРеквизитаХранилищаТаблиц;
Форма.ЭтоПрофильГруппДоступа = ЭтоПрофиль;
// Заполнение типов значений доступа всех видов доступа.
Для каждого СвойстваВидаДоступа Из СвойстваВидаДоступа() Цикл
Для каждого Тип Из СвойстваВидаДоступа.ТипыВыбираемыхЗначений Цикл
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип);
ОписаниеТипа = Новый ОписаниеТипов(МассивТипов);
МетаданныеТипа = Метаданные.НайтиПоТипу(Тип);
Если Метаданные.Перечисления.Найти(МетаданныеТипа.Имя) = МетаданныеТипа Тогда
ПредставлениеТипа = МетаданныеТипа.Представление();
Иначе
ПредставлениеТипа = ?(ЗначениеЗаполнено(МетаданныеТипа.ПредставлениеОбъекта),
МетаданныеТипа.ПредставлениеОбъекта,
МетаданныеТипа.Представление());
КонецЕсли;
НоваяСтрока = Форма.ВсеТипыВыбираемыхЗначений.Добавить();
НоваяСтрока.ВидДоступа = СвойстваВидаДоступа.Ссылка;
НоваяСтрока.ТипЗначений = ОписаниеТипа.ПривестиЗначение(Неопределено);
НоваяСтрока.ПредставлениеТипа = ПредставлениеТипа;
НоваяСтрока.ИмяТаблицы = МетаданныеТипа.ПолноеИмя();
КонецЦикла;
КонецЦикла;
Форма.ВидДоступаПользователи = Справочники.Пользователи.ПустаяСсылка();
Форма.ВидДоступаВнешниеПользователи = Справочники.ВнешниеПользователи.ПустаяСсылка();
Форма.ИспользоватьВнешнихПользователей = ВнешниеПользователи.ИспользоватьВнешнихПользователей();
ЗаполнитьТаблицуВсеВидыДоступаВФорме(Форма);
ЗаполнитьТаблицуПредставленияВсеРазрешеныВФорме(Форма, ЭтоПрофиль);
ОформитьТаблицуВидыДоступаВФорме(Форма);
УдалитьНесуществующиеВидыИЗначенияДоступа(Форма);
УправлениеДоступомСлужебныйКлиентСервер.ЗаполнитьСвойстваВидовДоступаВФорме(Форма);
ОбновитьОтображениеНеиспользуемыхВидовДоступа(Форма, Истина);
СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(
Форма, "ЗначенияДоступаПоВидуДоступа");
// Настройка параметров выбора значения доступа.
ПараметрыВыбора = Новый Массив;
ПараметрыВыбора.Добавить(Новый ПараметрВыбора("ЭтоВыборЗначенияДоступа", Истина));
Форма.Элементы.ЗначенияДоступаЗначениеДоступа.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбора);
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПослеЗаписиНаСервереФормыРедактированияРазрешенныхЗначений (БСП)
ОбработкаПроверкиЗаполненияНаСервереФормыРедактированияРазрешенныхЗначений (БСП)
ПередЗаписьюНаСервереФормыРедактированияРазрешенныхЗначений (БСП)
ПриПовторномЧтенииНаСервереФормыРедактированияРазрешенныхЗначений (БСП)
ПараметрыФормыРедактированияРазрешенныхЗначений (БСП)
ОтборВТаблицахФормыРедактированияРазрешенныхЗначений (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)