Настройка видимости документов в 1с
Если вам лень самим колдовать с настройкой видимости относительно ролей - дайте мышку в руки администратору!
+ бонус. Вы не пробовали построить дерево элементов формы в 1С? :D
Вот чувствую, что опять кто-нибудь напишет, как было со «Сканирочкой», что решение до безобразия простое… Что делать. :( Когда клиент ставит самую что есть конкретную задачу, которую, казалось бы, сделал – и забыл, коварно подкрадывается мысль: «А нет ли у задачи более общего решения, чтобы потом …»
. Потом – не делать заново, когда похожая задача появится. Потом – продавать, если решение получится интересным. В крайнем случае, потом – попиариться на инфостарте, ведь это весело. :D
Вот и сейчас… Клиент просит настроить список колонок для формы списка конкретного документа, чтобы пользователи с разными ролями видели свои колонки. И ведь приложил список, для какой роли – какие колонки надо отображать! Большой список… Вобщем, представил я, как в ПриОткрытии буду тупо прописывать эти проверки и проставлять видимость колонок, и как-то тоскливо стало. Их же … много! Выход: предоставить пользователю инструмент, чтобы сам он мог забавляться со своими колонками, сколько ему влезет. И кстати, если уж для конкретного объекта я это делаю, то почему не позволить делать такую настройку для любого объекта? Болезнь у меня такая…
В общем, получилось. Выкладываю. Пользуйтесь!
Для использования сего нужно:
- В информационную базу добавить регистр (прилагается)
- Добавить обработку НастройкаВидимости
- В метод ПриОткрытии для форм того объекта, видимость полей которого предполагается настраивать, прописать:
или, как вариант:
Описанный метод может быть использован при разработке конфигураций с нуля, для «ленивой» настройки видимости элементов форм объектов.
В архиве - пример конфигурации, где приведена настройка для разных пользователей по разным ролям видимости элементов форм справочников, документов.
При решении этой задачи хотел, как красивее, чтобы элементы формы можно было в виде дерева выводить. Столкнулся с непониманием со стороны 1С. Оказывается, нет у элемента формы поля "Владелец", как есть в любой порядочной платформы для разработчика. Но ведь хочется, балин! Помогла миста. Там этот вопрос обсуждался (один небезызвестный гений), и было предложено решение. Правда. Реализовали они его там через . спину. Что ж, не всем дано познать глубины рекурсии ;)
Привожу свое решение мистовского метода поиска принадлежности элементов формы к панелям. Я правда еще в своей настройке видимости разношу и по страницам эл-ты формы, но здесь - код только для разнесения по панелям. Думаю, пригодится коллегам.
Сегодня мы поработаем с формой и научимся на ней прятать элементы - устанавливать видимость их (Рисунок 1).
На рисунке 1 изображена форма элемента, на которой есть элементы на форме в отображении списка - это синий прямоугольник, а на самой форме их нет - это жёлтый прямоугольник. То есть они есть, но они там не отображаются.
Это называется пользовательская видимость.
Делается она следующим образом: выделяется элемент на форме, открывается палитра свойств этого элемента и на свойстве "Видимость" снять галочку (Рисунок 2).
Снять/поставить галочку - это значит, что будет виден элемент или не будет виден. А если сказать иначе, то это Истина - галочка стоит и элемент виден, Ложь - галочка снята и элемент не виден.
Сохраните все изменения и увидите, что в пользовательском режиме они у вас теперь не будут отображаться, однако есть интересный момент: для поля "Наименование" установлено свойство "Проверка заполнения со значением Выдавать ошибку". Это свойство означает, что это поле обязательно должно быть заполнено и платформа выдаст ошибку, если оно будет пусто и не даст записать в базу. Запустите и нажмите кнопку "Записать и закрыть" и получите уведомление (Рисунок 3).
Как же так получается, что поля на форме нет, но платформа предупреждает нас, что это поле не заполнено?
Все дело в том, что поле есть на форме, но он просто невидимый для пользователя, но платформа его воспринимает полноценно. Это необходимо учитывать. Поэтому и называется - пользовательская видимость.
А теперь мы попробуем сделать так, чтобы поле появлялось и исчезало в зависимости от какого-либо условия.
Проще всего это сделать с полем, у которого отображение будет в виде галочки. То есть если галочка будет стоять, то поле будет видно, а иначе поле будет спрятано. Давайте попробуем сделать это. Для этого необходимо добавить на форму еще один реквизит с типом "Булево" (Рисунок 3).
После этого необходимо перейти на форму и переместить его на форму (Рисунок 4).
Обратите внимание на рисунок 4, у поля "Видимость" галочка не стоит, а значит по умолчанию стоит значение Ложь!
Теперь необходимо прописать процедуру. Чтобы прописать, необходимо понять как это будет работать!
А работать это будет следующим образом: как только мы меняем значение поля "Показать/Скрыть", так сразу исчезает/появляется поле "Число". Все происходит именно в таком порядке. Чтобы это работало у платформы есть специальные события, а в данном случае нужно событие "ПриИзменении".
ПриИзменении - это событие означает то, что как только вы начинаете менять значение поля, то есть ставить галочку или убирать ее, так сразу начинает меняться и значение поля. А если не трогать, то ничего и не будет происходить, именно поэтому событие и называется, при изменении чего-то в этом поле.
Создадим на форме группу (папку) и поместим в нее элемент, который будем прятать (убирать видимость) - поле "Число" (Рисунок 5).
Выделим поле "Показать/Скрыть" и найдем свойство и оно же событие "ПриИзменении" (Рисунок 5).
Нажмем на значок увеличительного стекла и создадим процедуру на клиенте (Рисунок 6).
В создавшейся процедуре убираем закомментированную строку и вместо нее прописываем нашу (Рисунок 7).
Этот код означает следующее:
1. Если - начало условия;
2. Объект.ПоказатьСкрыть - обращение к элементу формы;
3. Объект.ПоказатьСкрыть = Истина - само условие;
4. Элементы.Группа1 - обращение в элементу "Группа1";
5. Видимость - пользовательская видимость;
6. Элементы.Группа1.Видимость = Истина - папка с находящимися в ней элементами будет видна;
7. Элементы.Группа1.Видимость = Ложь- папка с находящимися в ней элементами будет не видна. КонецЕсли - окончание выполнения условия.
Запустите пользовательский режим и проверьте изменения. Как только поставите галочку, ничего не изменится. Снимете галочку, поле "Число" исчезнет, а как поставите галочку, так сразу же оно и появится.
Так и только так работает это событие - при изменении значения, то есть ставишь галочку или убираешь, начинает срабатывать событие и выполняться условие.
На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том, что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!
Ссылка для вступления телеграм-канал - t.me.Apiscourses
Подписаться в группу ВКонтакте
Прошлые уроки:
На этом все. Жду Вас на следующем занятии.
P.S. Подписывайтесь на мой канал :-)
программирование программирование 1с 1с предприятие обучение онлайн обучение 1с
Подсистема условного оформления элементов форм (далее подсистема) предназначена для настройки оформления элементов форм (видимость, доступность, цвет фона, цвет текста и прочее) в пользовательском режиме 1С. Также подсистему возможно использовать для ограничения доступа к реквизитам формы для определенных пользователей (или групп пользователей).
Назначение подсистемы
Подсистема условного оформления элементов форм (далее подсистема) предназначена для настройки оформления элементов форм (видимость, доступность, цвет фона, цвет текста и прочее) в пользовательском режиме 1С.
Как известно, настройки условного оформления в 1С в пользовательском режиме доступны только для динамических списков, для самих форм настройки оформления выполняются только в режиме конфигуратора.
Это приводит к следующим ограничениям:
- в случае необходимости изменения настроек оформления требуется привлекать разработчиков и обновлять конфигурацию базы данных
- ограничены возможности по настройке условий оформления (в условиях невозможно использовать ссылки на объекты базы данных, невозможно использовать разыменовывание полей ссылочных типов)
Разработанная подсистема решает перечисленные выше проблемы при работе со штатным механизмом условного оформления.
Настройка подсистемы
Для настройки условного оформления используется справочник НастройкаОформленияЭлементовФорм.
В настройках условного оформления указываются следующие параметры
- Объект метаданных - объект метаданных, для которого выполняется настройка условного оформления. В текущей реализации подсистемы поддерживаются следующие виды объектов метаданных - справочники, документы, обработки, внешние обработки.
После выбора вида объекта метаданных открывается список выбора объектов метаданных:
- Имя формы - полное имя формы объекта метаданных, для элементов которой выполняется настройка условного оформления. Выбор осуществляется из списка значений.
- Пользователь - пользователь или группа пользователей, для которых будет применена настройка.
- Условие - условие, при выполнении которого будет применено заданное оформление элементов формы.
- Оформляемые элементы - в табличной части справочника настраивается оформление элементов управления формы
Условия оформления элементов форм задаются с помощью стандартного диалога редактирования отборов системы компоновки данных.
В списке доступных полей отборов выводятся реквизиты выбранной формы, а также реквизиты выбранного объекта метаданных. Для ссылочных реквизитов доступно их разыменовывание.
Важно! Использование сложных отборов (таких как условия "в группе", "в группе из списка", использование разыименовывания полей) приводит к серверным вызовам с обращением к базе данных при проверке условий, что снижает производительность работы прикладного решения, поэтому необходимо по возможности избегать использования таких условий.
При настройке оформления элементов управления формы указываются следующие параметры
- Имя элемента - указывается имя оформляемого элемента формы путем выбора значения из списка элементов формы
- Оформление - настраивается оформление выбранного элемента формы через диалог редактирования параметров оформления
По умолчанию список доступных параметров оформления соответствует штатному списку параметров, который используется при настройке условного оформления в режиме конфигуратора.
При этом имеется возможность добавить в список дополнительные параметры оформления.
Доступны следующие типы значений добавляемого параметра - число, строка, булево, цвет, шрифт.
Важно! Необходимо корректно указывать имя параметра оформления, так как ошибочное указание может привести к ошибкам при открытии формы.
Использование подсистемы для ограничения доступа к элементам формы
Подсистему возможно использовать для организации правил доступа пользователей к реквизитам форм объектов.
С этой целью в настройки оформления добавлено поле Пользователь, в котором можно указать ссылку на элемент справочника ГруппыПользователей (или элемент справочника Пользователи).
Таким образом можно ограничить доступ пользователей, входящих в указанную в настройке оформления группу, к элементам формы, заданным в табличной части "Оформляемые элементы" (в оформлении этих элементов необходимо отключить видимость/доступность). Также можно указать дополнительные условия, при которых элементы формы для выбранной группы пользователей/пользователя будут недоступны.
Отчет по настройкам условного оформления элементов форм
Для удобного просмотра всех настроек условного оформления, установленных для определенного объекта метаданных, разработан специализированный отчет.
Из отчета можно перейти в нужную настройку оформления и при необходимости внести в нее корректировки.
Демонстрация возможностей
Для демонстрации возможностей подсистемы создана простая тестовая обработка с настройками условного оформления показанными на скриншоте с отчетом. Результат работы обработки показан ниже
Состав подсистемы
Подсистема включает в себя следующие объекты метаданных:
- Подсистема.ОформлениеЭлементовФорм
- ОбщийМодуль.ОформлениеЭлементовФормКлиент
- ОбщийМодуль.ОформлениеЭлементовФормСервер
- ОбщийМодуль.ОформлениеЭлементовФормОбщегоНазначения
- ОбщийМодуль.ОформлениеЭлементовФормПовтИсп
- Роль.ЧтениеНастроекОформленияЭлементовФорм
- Справочник.НастройкаОформленияЭлементовФорм
- Отчет.ОтчетПоНастройкамУсловногоОформления
- ОбщаяКоманда.ОтчетПоНастройкамУсловногоОформления
Внедрение подсистемы в прикладное решение
-
Определить состав форм прикладного решения, для элементов управления которых необходимо настроить условное оформление
В модуль каждой формы добавить следующий код.
В конец процедуры ПриСозданииНаСервере() вставить вызов процедуры ОформлениеЭлементовФормСервер.ПриСозданииНаСервере(ЭтаФорма)
В конец процедуры ПриОткрытии() вставить вызов процедуры ОформлениеЭлементовФормКлиент.УстановитьОформлениеЭлементовФормы(ЭтаФорма)
Добавить в модуль формы процедуру ПриИзмененииПоляУсловийОформления(Элемент) со следующим кодом
Настроить права доступа пользователей к объектам подсистемы. Для всех пользователей - дать доступ на чтение справочника НастройкаОформленияЭлементовФорм.
Прочее
Требования
Платформа 1С версии не меньше 8.3.15 (интерфейс Такси. Разрешить Версия 8.2).
Программный код
Программный код полностью открыт.
Внедрение и техническая поддержка
Консультации по внедрению программного продукта проводятся бесплатно. При необходимости, внедрение и настройка данного программного продукта проводится из расчета 1000 руб/час.
Обновление ПО
Обновление при выпуске нового релиза осуществляется бесплатно для клиентов, которые приобрели данное ПО. Такие клиенты автоматически получают обновления с описанием изменений.
Лицензирование
Приобретение программного продукта дает право на его установку и использование. Количество пользователей не ограничено и зависит только от наличия ключей платформы 1С.
Причины купить
- Оперативное управление настройками оформления элементов форм. Оперативное управление видимостью и доступностью любых элементов форм по пользователям и группам пользователей;
- Механизм внедряется в любую типовую конфигурацию;
- Отсутствие необходимости прибегать к услугам программистов для изменения оформления элементов форм и прав доступа к элементам форм;
- Немедленное вступление в силу изменений без необходимости обновления и перезапуска конфигурации
Гарантия возврата денег
ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.
Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.
Необходимо сделать по умолчанию не видимый элемент формы, но с возможность его отобразить — на помощь приходит пользовательская видимость элементов формы.
Форма параметров обработки, с тремя страницами «Параметры подключения», «Логирование» и «Дополнительно».
Задача
По умолчанию скрыть закладку «Дополнительно», но с возможность его отобразить при необходимости из режима 1С:Предприятие.
Решение
Реализуется данное требование достаточно просто, в конфигураторе для страницы «Дополнительно» переходим в свойство Пользовательская видимость и снимаем галочку «Видимость». Свойство Пользовательская видимость задает видимость элемента по умолчанию.
Теперь форма откроется со скрытой страницей «Дополнительно», для ее отображения необходимо перейти в меню «Еще» и установить видимость для страницы.
При изменении видимости пользователем значение будет сохранено и в дальнейшем будет открываться настроенная форма.
Так же можно настроить видимость по ролям, для этого в настройке необходимо указать для каких ролей элемент виден или не виден. По умолчанию все для всех ролей берется значение из общего значения. При редактировании видимости для роли флажок сменит цвет на черный.
В предыдущей статье мы научились создавать подсистемы 1С, а в этой статье научимся, как при помощи подсистем можно настраивать интерфейс пользовательского приложения.
Ссылка на предыдущую статью: подсистемы в 1С.
Для написания статьи я использовал учебную базу из книги «Основы разработки в 1С: Такси» со следующими подсистемами.
Свойство конфигурации «Командный интерфейс»
Мы можем самостоятельно конфигурировать расположение подсистем в пользовательском режиме. Делается это в свойстве конфигурации «Командный интерфейс». Для того, чтобы попасть в это свойство, необходимо вызвать контекстное меню конфигурации (выделить самый верхний узел конфигурации, и вызвать правой кнопкой мышки контекстное меню), в этом контекстном меню интересует команда «Свойства».
После выполнения команды «Свойства» контекстного меню, откроется палитра свойств конфигурации, где нас интересует свойство «Командный интерфейс».
После нажатия гиперссылки «Открыть» этого свойства, откроется окно командного интерфейса. В этом окне мы можем передвигать иконки подсистем, настраивать общее отображение (колонка Видимость), и настраивать отображение по ролям (колонка соответствующей роли).
Заметьте, у колонок ролей могут быть «серые» флажки, это значит, что если у роли установлен такой «серый» флажок, то для данной роли у подсистемы будет такая же видимость, которая установлена в колонке Видимость.
В этом случае роль Администратор будет видеть подсистему Закупки
Если мы отключим видимость подсистемы в свойстве Командный интерфейс, то ее в пользовательском режиме по умолчанию видно не будет (мы отключили подсистему Закупки).
Но пользователь, может включить её. Для этого нужно зайти в настройку панелей разделов.
Для платформы версий 8.15 и выше
Для платформы версий ниже 8.15.
И в открывшемся окне «Настройка панелей разделов», при помощи кнопки «Добавить» переместить нужный раздел в список «Выбранные раздел». В этом же списке вы можете перемещать разделы между собой по своему усмотрению.
Если же мы хотим, чтобы подсистема вообще не была доступна пользователю. То необходимо отключить у нужной роли право на просмотр этой подсистемы.
Для этого открываем дополнительные настройки отключаемой для роли подсистемы.
В этих дополнительных настройках нас интересует закладка Права, где у нужной роли необходимо снять флаг с права Просмотр.
После этого, пользователь не увидит эту подсистему, и не сможет добавить её, используя настройку панелей разделов.
Командный интерфейс подсистемы
Мы можем настраивать видимость нужной нам подсистемы при помощи командного интерфейса. Есть два способа попасть в командный интерфейс подсистемы.
Используя кнопку «Командный интерфейс» в редакторе подсистемы.
Используя команду «Открыть командный интерфейс» контекстного меню подсистемы.
В командном интерфейсе подсистемы по умолчанию существует всего 6 групп: три группы команд навигации (панель навигации), и три группы команд действий (панель действий).
Вы можете перемещать команды навигации между группами команд навигации, и перемещать команды действий между группами команд действий. Но команду навигации нельзя переместить в группу команд действий. И наоборот, команду действия нельзя переместить в команду навигации.
Перемещать команду внутри группы можно при помощи кнопок контекстного меню (для этого нужно выделить нужную команду).
После перемещения команды, в названии группы команд появится словосочетание «Ручной порядок».
Если вы хотите вернуть расположение команд, как было по умолчанию, то необходимо выделить нужную группу, вызвать контекстное меню и выполнить команду «Восстановить автоматический порядок».
Если вы хотите, чтобы команда располагалась в другой группе, то можно мышкой «перетащить» эту команду в нужную группу.
Или воспользоваться командной «Переместить команду». Для этого нужно выделить перемещаемую команду и, или вызвать контекстное меню, где расположена команда.
Или воспользоваться иконкой команды на верхней панели.
После выполнения команды «Переместить команду», откроется окно выбора групп команды, где нужно выбрать группу, в которую вы хотите переместить команду.
После тех или иных действий, команда переместится в нужную группу.
В командном интерфейсе подсистемы имеются также колонка Видимость и колонки видимости по ролям.
Флажки в этих колонках отвечают за видимостью команд подсистемы.
Если флаг снят у соответствующей команды в колонке Видимость, то пользователь не увидит эту команду в интерфейсе подсистемы. У колонок ролей имеется возможность установить «серый» флаг. Это значит, что видимость этой команды для данной роли будет такая, какая установлена по умолчанию в колонке «Видимость».
Например, в этом случае, роль не будет видеть команду.
В случае остальных состояний флага, все точно также как и для колонки Видимость.
Стоит флаг – пользователь с этой ролью видит команду.
Флаг снят – не видит.
Если у вас обычный (не «серый») флаг у колонки видимости роли (снят или установлен), то не играет ни какой роли состояние флага в колонке Видимость!
Но в тоже время, если видимость на какую-либо команду снята в командном интерфейсе подсистемы в конфигураторе 1С, то её можно установить обратно в пользовательском режиме.
Для этого необходимо зайти либо в настройки навигации, либо в настройки действий подсистемы в пользовательском режиме, в зависимости от того видимость какой команды (навигации или действий) вы хотите установить.
Откроется окно настроек, где можно переместить выбранную команду или при помощи кнопки «Добавить», или мышкой.
После перемещения команды
Она появится в командном интерфейсе подсистемы.
Команда «Все подсистемы»
У разработчика имеется возможность посмотреть на командный интерфейс всех подсистем сразу. Для этого необходимо выделить корневой узел ветки Подсистемы, вызвать контекстное меню, в котором выполнить команду «Все подсистемы»
После этого откроется окно «Все подсистемы», где вы можете работать со всеми подсистемами сразу.
Заметьте, если у подсистемы имеются подчиненные подсистемы, то в этом окне вы можете посмотреть, как всё выглядит в иерархии. На скрине выше это наглядно показано. Что нельзя сделать в командном интерфейсе отдельной подсистемы.
Также, в этом окне вы можете редактировать состав нужной вам подсистемы.
В остальном настройки похожи: можно перемещать команды между группами внутри подсистемы, устанавливать видимость и т.д.
Другие статьи по вопросам конфигурирования
Подробно вопросы разработки подсистем рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомиться с разработкой управляемого приложения.
Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 15% — 48PVXHeYu
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Эти книги плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму:
Читайте также: