Готового полного решения найти не удалось. Ниже - попытка восполнить это.
Одно из условий задачи
"Управление видимостью должно быть реализовано с помощью механизма функциональных опций"
несколько удивляет тем, что противоречит следующему
"Не следует использовать функциональные опции не по назначению, например: создавать функциональные опции ради управления видимостью элементов управления конкретной формы" (https://its.1c.ru/db/v8std/content/470/hdoc/_top/функциональные%20опции).
Наверное, с точки зрения задачи для экзамена, это не важно.
Решение выполнено на "каркасной конфигурации" https://1c.ru/spec/questions.htm.
Описание решения:
1. Добавлена подсистема УправляемыеФормы; добавлен ПараметрСеанса.ТекущийПользователь типа СправочникСсылка.ФизическиеЛица; добавлена Роль.ПолныеПрава; добавлено два пользователя ИБ.
2. В модуль сеанса добавлен обработчик.
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
ИмяПользователя = ИмяПользователя();
ТекПользователь = Справочники.ФизическиеЛица.НайтиПоКоду(ИмяПользователя);
Если Не ЗначениеЗаполнено(ТекПользователь) Тогда
обСпр = Справочники.ФизическиеЛица.СоздатьЭлемент();
обСпр.Код = ИмяПользователя;
обСпр.Наименование = ИмяПользователя;
обСпр.Записать();
ТекПользователь = обСпр.Ссылка;
КонецЕсли;
ПараметрыСеанса.ТекущийПользователь = ТекПользователь;
КонецПроцедуры
3. Добавлен Документ.ПриходДенег; в Документы ПриходДенег, РасходнаяНакладная добавлен реквизит ОтветственныйСтаршийМенеджер типа СправочникСсылка.ФизическиеЛица; добавлены основные формы обоих документов.
4. Добавлен РегистрСведений.ПраваПользователей периодичность День, Измерение Пользователь типа СправочникСсылка.ФизическиеЛица, Ресурс ДоступКОтветственныйСтаршийМенеджер типа Булево.
5. Добавлена ФункциональнаяОпция.ДоступКОтветственныйСтаршийМенеджер, хранение РегистрСведений.ПраваПользователей.Ресурс.ДоступКОтветственныйСтаршийМенеджер, состав ПриходДенег, РасходнаяНакладная реквизиты ОтветственныйСтаршийМенеджер.
6. Добавлен ПараметрыФО.Пользователь, использование РегистрСведений.ПраваПользователей.Измерение.Пользователь
7. Добавлен ОбщийМодуль.УправляемыеФормыСервер:
Процедура УстановитьПараметрыФункциональныхОпций(Форма) Экспорт
УстанавливаемыеПараметры = Новый Структура("Период, Пользователь", НачалоДня(Форма.Объект.Дата), ПараметрыСеанса.ТекущийПользователь);
Форма.УстановитьПараметрыФункциональныхОпцийФормы(УстанавливаемыеПараметры);
КонецПроцедуры
8. В основные формы документов ПриходДенег, РасходнаяНакладная добавлены обработчики:
&НаСервере
Процедура ПриОткрытииНаСервере()
УправляемыеФормыСервер.УстановитьПараметрыФункциональныхОпций(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПриОткрытииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииНаСервере()
УправляемыеФормыСервер.УстановитьПараметрыФункциональныхОпций(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииНаСервере();
КонецПроцедуры
В новом документе ПриОткрытии дата уже будет установлена, а ПриСозданииНаСервере ещё нет.
В качестве дополнения можно ещё добавить основную форму записи РегистраСведений.ПраваПользователей и ПослеЗаписи() вызвать ОбновитьИнтерфейс(), но, кажется, это будет уже лишнее.
Если есть мнение относительно корректности, правильности описанного решения, добавьте, пожалуйста, в комментарии.
Ограничение ответственности.
Материалы этой публикации предоставляются "как есть". Вы можете пользоваться ими, вносить изменения.
Автор не гарантирует, что результаты использования будут соответствовать Вашим ожиданиям.
Ответственности за прямой или косвенный ущерб, за возможные недостатки предоставленных материалов, а также за результаты их использования автор не несет.
Вы используете материалы этой публикации (включая приложенные файлы) на свой риск и под свою ответственность.