Опубликован: 06.12.2011 | Доступ: свободный | Студентов: 3556 / 746 | Оценка: 4.50 / 4.39 | Длительность: 03:42:00
Лекция 7:

Построение распределенных информационных систем, поиск, регламентные задания, функциональные опции

< Лекция 6 || Лекция 7: 12345678910

Перейдем на закладку окна настройки функциональной опции Состав, включим в ее состав реквизит справочника Сотрудники Расчетчик, рис. 7.26.

Настройка состава функциональной опции

Рис. 7.26. Настройка состава функциональной опции

Функциональную опцию в данном случае нужно дополнить параметром функциональной опции. Создадим новый параметр функциональной опции, назовем его Расчетчик, в свойстве Использование выберем Справочник.ФизическиеЛица, рис. 7.27.

Настройка параметра функциональной опции

Рис. 7.27. Настройка параметра функциональной опции

Теперь нам нужно задать параметр функциональной опции для каждого конкретного экземпляра формы справочника Сотрудники для того, чтобы, в зависимости от состояния реквизита справочника ФизическиеЛица мы могли бы настроить внешний вид формы справочника Сотрудники – скрыть или отобразить реквизит Расчетчик.

Перейдем в форму элемента справочника Сотрудники, создадим обработчик ПриСозданииНаСервере, разместим в нем следующий код:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
  ПараметрыФункциональныхОпций 
      = Новый Структура("Расчетчик", Объект.ФизическоеЛицо);
  УстановитьПараметрыФункциональныхОпцийФормы(ПараметрыФункциональныхОпций);
КонецПроцедуры

Здесь мы создаем новую структуру, которая содержит, в ключе – наименование параметра функциональной опции, в значении – ссылку на объект, из которого следует брать значение функциональной опции.

С помощью команды УстановитьПараметрыФункциональныхОпцийФормы, которой мы передаем сформированную структуру, мы настраиваем функциональную опцию, которая, в свою очередь, повлияет на внешний вид формы.

Кроме того, предусмотрим ситуацию, в которой пользователь выбирает различные физические лица, у некоторых из которых интересующий нас признак ИмеетОпытКадровойСлужбы установлен, у некоторых нет – то есть – состав реквизитов, отображаемых на форме нужно пересматривать и, при необходимости, обновлять, после выбора нового физического лица. Для этого добавим в обработчик события изменения поля ФизическоеЛицо формы элемента справочника Сотрудники код, аналогичный вышеприведенному, в итоге этот обработчик будет выглядеть так:

&НаКлиенте
Процедура ФизическоеЛицоПриИзменении(Элемент)
  ПараметрыФункциональныхОпций 
      = Новый Структура("Расчетчик", Объект.ФизическоеЛицо);
  УстановитьПараметрыФункциональныхОпцийФормы(ПараметрыФункциональныхОпций);
  СформироватьНаименование();
КонецПроцедуры

Команда СформироватьНаименование() относится к уже существующим в форме механизмам.

Опробуем созданный механизм на практике. Установим флаг ИмеетОпытКадровойСлужбы у физического лица Расчетчикова А.И. Откроем соответствующий ему элемент справочника Сотрудники, убедимся, что в нем реквизит Расчетчик присутствует, выберем другое физическое лицо – реквизит исчезнет, при открытии формы элемента справочника для другого сотрудника, у физического лица, соответствующего которому, реквизит ИмеетОпытКадровойСлужбы не установлен, мы так же не увидим в справочнике Сотрудники реквизита Расчетчик, рис. 7.28.

Воздействие функциональной опции на реквизиты формы

увеличить изображение
Рис. 7.28. Воздействие функциональной опции на реквизиты формы

Если функциональная опция используется для управления реквизитами, которые, например, влияют на добавление каких-либо данных в регистры, на расчет каких-либо показателей (скажем, включение и отключение складского учета), скрытие или отображение реквизита (например, реквизита документа Склад или "отключение" измерения регистра Склад) само по себе не влияет на программные механизмы работы системы. Это означает, что программный код, который должен выполняться при том или ином состоянии функциональной опции, разработчик должен писать самостоятельно, разветвляя, при необходимости, его выполнение в зависимости от состояния функциональной опции.

Продемонстрируем это на примере. Основываясь на состоянии функциональной опции РаботаСРасчетчиками, будем выводить различные сообщения при закрытии формы элемента справочника Сотрудники. Создадим в модуле формы элемента справочника обработчик ПриЗакрытии, приведем его к следующему виду:

&НаКлиенте
Процедура ПриЗакрытии()
  Если ПолучитьФункциональнуюОпциюФормы("РаботаСРасчетчиками") Тогда
    Предупреждение("Этот сотрудник может быть расчетчиком");
  Иначе
    Предупреждение("Этот сотрудник не может быть расчетчиком");
  КонецЕсли;
КонецПроцедуры

Здесь мы пользуемся функцией ПолучитьФункциональнуюОпциюФормы(), которая принимает на входе строковое имя функциональной опции. Если функция возвратит значение Истинапользователь увидит сообщение "Этот сотрудник может быть расчетчиком" - в нашем случае подобное сообщение будет выведено для сотрудника Расчетчиков. В противном случае выводится сообщение "Этот сотрудник не может быть расчетчиком". Аналогично, анализируя состояние функциональных опций формы, можно управлять исполнением кода.

пользователем реализованы программно.

Выводы

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

< Лекция 6 || Лекция 7: 12345678910
Константин Павлов
Константин Павлов

Почему в лекции 1 "Основы организации бухгалтерской подсистемы" курса "Разработка прикладных решений для платформы 1С:Предприятие 8.2 в режиме "Управляемое приложение"" совершенно нет информации о том что нужно на вкладке данные в табличной части создать табличную часть "ВидыСубконто" и также нет информации о том какие нужно добавить реквизиты и какие у этих реквизитов должен быть тип? Считаю лекцию 1 в данном вопросе недоработанной.

Надежда Федулкина
Надежда Федулкина