1с текущие дела как настроить
В информационной базе может храниться большое количество различных задач пользователям: это и выполненные задачи, и те, которые только предстоит сделать. Очень неэффективно, если каждый пользователь получает общий перечень задач, поскольку ему придется фильтровать список, оставлять только свои задачи, выбирать, какие из них нужно выполнить. Кроме того, по соображениям безопасности и конфиденциальности не все задачи можно просматривать другим пользователям, кроме исполнителя.
В связи с этим в конфигурациях, использующих задачи, чаще всего предусмотрена отдельная форма, которая будет отображать только невыполненные задачи текущего пользователя.
На аттестации есть специальное требование к задачам по бизнес-процессам – при запуске конфигурации в пользовательском режиме на начальной странице должен располагаться список невыполненных задач текущего пользователя.
Также есть требование, что пользователь должен иметь возможность видеть полный список задач, без отбора по исполнителю. Поэтому в каждом экзаменационном билете, где встречается задача по бизнес-процессам, должны быть доступны две формы – форма со списком невыполненных задач текущего пользователя, а также форма с общим списком задач.
Рассмотрим подробнее, как выполнить эти требования.
Как отобразить на форме список задач
Создадим форму списка задачи:
Рисунок 1 – Создание формы списка задачи
Основной реквизит в созданной форме – динамический список:
Рисунок 2 – Реквизит формы типа ДинамическийСписок
Подробно динамические списки управляемых форм рассматриваются в курсе «Профессиональная разработка интерфейсов и форм в 1С:Предприятие 8.3» (см. Занятие 19), а также в курсе«1С:Программист – Быстрый старт в профессию» (см. Модуль 4, Глава 8).Обратимся к свойствам динамического списка, в качестве свойства ОсновнаяТаблица укажем ЗадачиИсполнителям.ЗадачиПоИсполнителю:
Рисунок 3 – Настройка основной таблицы динамического списка
Это виртуальная таблица для объекта метаданных Задача, которая возвращает список задач, назначенных конкретному пользователю.
Для того, чтобы такой динамический список работал, система должна понимать, для какого пользователя следует отображать список задач. Поэтому необходимо для объекта метаданных ЗадачиИсполнителям (ранее созданный объект типа Задача) указать значение свойства Текущий исполнитель на закладке Адресация окна редактирования объекта:
Рисунок 4 – Свойство «Текущий исполнитель» объекта метаданных «Задача»
В этом свойстве нужно указать параметр сеанса, где хранится текущий исполнитель, для которого нужно получить список задач.
Создадим новый параметр сеанса, назовем его ТекущийПользователь (тип – СправочникСсылка.ФизическиеЛица):
Рисунок 5 – Параметр сеанса «Текущий пользователь»
На закладке Адресация для объекта метаданных ЗадачиИсполнителям (объект типа Задача) укажем в качестве свойства Текущий исполнитель созданный параметр сеанса:
Рисунок 6 – Указание для Задачи значения свойства «Текущий исполнитель»
Рассмотрим кратко, как работает виртуальная таблица ЗадачиПоИсполнителю.
Система получает значение параметра сеанса, указанного в свойстве Текущий исполнитель. Все задачи, у которых Основной реквизит адресации (Исполнитель) равен значению параметра сеанса ТекущийПользователь, попадают в результат виртуальной таблицы.
Затем система ищет задачи, у которых не указан основной реквизит адресации (Исполнитель), но значения остальных реквизитов адресации точно совпадают со значениями измерений регистра адресации.
Для лучшего понимания работы виртуальной таблицы рассмотрим отвлеченный конкретный пример. В регистр адресации внесены следующие записи:
Рисунок 7 – Заполнение регистра адресации
Существуют следующие задачи исполнителей:
Рисунок 8 – Перечень задач
Пусть текущим пользователем является Иванов, тогда в виртуальную таблицу ЗадачиПоИсполнителю попадут следующие задачи:
Рисунок 9 – Задачи пользователя Иванов
Если текущим пользователем является Петров, в виртуальную таблицу ЗадачиПоИсполнителю попадут следующие задачи:
Рисунок 10 – Задачи пользователя Петров
Таким образом, в виртуальную таблицу ЗадачиПоИсполнителю попадут те задачи, у которых или явно указан требуемый исполнитель, или его можно определить косвенно по записям регистра адресации. При получении данных учитываются настройки объекта конфигурации типа Задача и те записи, которые были внесены в регистр сведений РегистрАдресации.
Важно, что виртуальная таблица не фильтрует задачи по их выполненности. Она возвращает как выполненные, так и невыполненные задачи. Чтобы отображались только невыполненные задачи, нужно установить отбор. Для этого обратимся к настройкам динамического списка на форме:
Рисунок 11 – Реквизит формы «Список» типа «ДинамическийСписок»
Рисунок 12 – Настройка динамического списка
В настройках установим отбор по значению поля Выполнена равному Ложь:
Рисунок 13 – Настройка отбора записей динамического списка
Чтобы определить, для какого конкретного исполнителя необходимо отображать список задач, требуется указать системе, какой пользователь является текущим. То есть нужно установить значение параметра сеанса ТекущийПользователь.
Рассмотрим два варианта установки значения параметра сеанса ТекущийПользователь для решения поставленной задачи.
Как вручную установить значение параметра сеанса
Первый вариант установки значения параметра сеанса – это указывать текущего пользователя вручную. Данный вариант самый простой и быстрый. В этом случае не потребуется организовывать связь пользователей информационной базы со справочником физических лиц, элементы которого в нашем случае являются Исполнителями. Можно будет вообще не заводить пользователей информационной базы (списка справочника ФизическиеЛица).
Создадим форму списка справочника ФизическиеЛица. Создадим команду формы: УстановитьТекущегоПользователя:
Рисунок 14 – Создание команды формы списка справочника «Физические лица»
Вынесем добавленную команду на форму:
Рисунок 15 – Размещение созданной команды на форме
В обработчике команды УстановитьТекущегоПользователя выполним установку значения параметра сеанса:
В пользовательском режиме назначим Иванова текущим пользователем:
Рисунок 16 – Установка текущего пользователя
В форме списка «Задачи исполнителям» будут отображаться задачи для выбранного текущего исполнителя Иванова:
Рисунок 17 – Задачи исполнителя (текущего пользователя)
Если не установить текущего пользователя и попытаться обратиться к списку задач, система выдаст ошибку:
Рисунок 18 – Ошибка, возникающая при неустановленном значении параметра сеанса
Дело в том, что виртуальная таблица ЗадачиПоИсполнителю при получении данных использует значение параметра сеанса ТекущийПользователь. Если это значение не было установлено, возникает ошибка.
Чтобы такая ошибка не возникала, можно в модуле сеанса инициализировать параметр сеанса при помощи пустой ссылки на справочник Физические лица:
В таком случае при открытии списка задач ошибка не возникнет, даже если текущий пользователь не был предварительно назначен из формы списка. Но нужно понимать, что в таком случае в списке задач будут отображаться задачи, для которых не определен исполнитель. В нашей базе таких задач нет, поэтому список будет пустым:
Рисунок 19 – Список задач, для которых исполнитель не определен
Таким образом, текущего пользователя можно назначать вручную. При этом в списке задач отображаются только задачи, касающиеся текущего пользователя.
Как автоматически установить значение параметра сеанса по данным информационной базы
Второй вариант установки значения параметра сеанса более сложный. Необходимо связать пользователей информационной базы со справочником физических лиц. Тогда устанавливать значение параметра сеанса можно будет автоматически.
Чтобы в информационную базу можно было добавить пользователей, необходимо создать роли. Создадим только одну роль ПолныеПрава, в ней разрешим все действия, кроме интерактивного удаления объектов:
Рисунок 20 – Создание роли ПолныеПрава
В Конфигураторе создадим двух пользователей (Иванов и Петров) и назначим им роль ПолныеПрава:
Рисунок 21 – Создание пользователей информационной базы
При запуске конфигурации в пользовательском режиме нужно выполнить проверку, не является ли имя текущего пользователя пустым. Если имя текущего пользователя заполнено, то находим в справочнике ФизическиеЛица элемент, Код которого совпадает с именем текущего пользователя.
Параметру сеанса ТекущийПользователь присваиваем найденное значение (ссылку на элемент справочника ФизическиеЛица). Если такого элемента в справочнике нет, то нужно его создать, а ссылку на созданный элемент присвоить параметру сеанса.
Для выполнения этих действий заполним соответствующий код в модуле сеанса, в процедуре УстановкаПараметровСеанса. Код процедуры может выглядеть следующим образом:
В таком случае после открытия пользователем базы можно будет сразу просматривать задачи по исполнителю, дополнительного назначения параметра сеанса вручную не требуется.
Теперь необходимо обеспечить, чтобы при запуске приложения в пользовательском режиме список невыполненных задач отображался на рабочем столе. На экзамене рекомендуется использовать данный способ заполнения параметра сеанса ТекущийПользователь.
Как разместить список задач на рабочем столе
Общие принципы настройки рабочего стола (начальной страницы) рассматриваются в курсах: «1С:Программист – Быстрый старт в профессию» (см. Модуль 4, Глава 1), «Профессиональная разработка интерфейсов и форм в 1С:Предприятие 8.3» (см. Занятие 20), бесплатный курс «Программирование в 1С – за 21 день!» (Модуль 1, День 5).К решению аттестационной задачи предъявляются следующие требования:
- На начальной странице должен располагаться список невыполненных задач текущего пользователя
- Должен быть доступен полный список задач, без отбора по исполнителю.
Сначала разместим созданную форму списка объекта конфигурации ЗадачиИсполнителям на рабочем столе. Для этого из контекстного меню корневого элемента конфигурации выберем пункт Открыть рабочую область начальной страницы:
Рисунок 22 – Выбор команды «Открыть рабочую область начальной страницы»
В открывшемся окне выберем форму списка задачи:
Рисунок 23 – Выбор формы списка объекта «ЗадачиИсполнителям» в рабочей области начальной страницы
Запустим приложение в пользовательском режиме. На начальной странице отобразятся невыполненные задачи текущего пользователя:
Рисунок 24 – Невыполненные задачи пользователя Иванова
Однако кроме списка задач по исполнителю необходимо вывести полный список задач. Поэтому в окне настроек объекта конфигурации ЗадачиИсполнителям очистим поле для формы списка задачи:
Рисунок 25 – Очистка поля для формы списка задачи в окне настроек
В таком случае система будет генерировать форму списка автоматически, и в ней будут отображаться все задачи, а не только невыполненные задачи по исполнителю. При выборе в пользовательском режиме команды для открытия списка задач будет открываться форма, сгенерированная автоматически:
Рисунок 26 – Общий список задач
Таким образом, необходимые формы отображаются – поставленная задача решена.
В следующем блоке материалов разберем, как реализовать отображение карты маршрута в форме бизнес процесса.
Окно "Текущие дела"
Рабочее место "Текущие дела" это монитор сигналов для текущего пользователя. Это все то, на что пользователь должен обратить внимание и предпринять какие-либо действия.
"Текущие дела" представляют собой форму c двенадцатью настраиваемыми виджетами.
Для некоторых виджетов определены показатели. Показатели – это характеристики сигналов, на которые пользователю необходимо отреагировать. Например, количество новых писем, задач и т. д.
Для каждого показателя можно определить пороговое значение. При превышении пороговых значений показатели на виджетах выделяются красным. Пороговые значения могут быть настроены каждым пользователем индивидуально.
Для большинства виджетов предусмотрена настройка пороговых значений показателей. Для виджета "Почта" предусмотрена специальная настройка выбора папок писем, в которых следует проверять новые письма.
Настройка пороговых значений показателей виджета "Задачи мне":
Настройка виджета "Почта":
Виджеты можно разделить на два типа:
- Html-виджет (для формирования и отображения виджета используется html).
- Виджет-диаграмма (используется реквизит формы типа диаграмма).
Для html-виджетов определено три стандартных варианта отображения:
- Два показателя,
- Три показателя,
- Список показателей или данных.
В зависимости от контекста виджета применяется один из этих вариантов. Так как для построения и отображения виджетов используется html, то внешний вид виджета можно представить, как угодно.
Варианты представления html-виджетов
Для диаграмм стандартных вариантов не предусмотрено.
Виджеты привязаны к настройкам программы (функциональным опциям) и права доступа (роли в конфигураторе)
Метаданные
Обработка содержит основные формы рабочего места:
ФормаТекущиеДела – форма с виджетами, именно ее можно отобразить на начальной странице.
ФормаНастройки – форма настройки виджета.
Справочник содержит всевозможные виджеты в виде предопределённых элементов.
Справочник содержит показатели существующих виджетов и их пороговые значения по умолчанию.
Используется для хранения настроенных пользователями пороговых значений.
Содержит рассчитанные показатели работы пользователей. Данные используются для виджета «Мои дела» .
Содержит отобранные пользователями папки для отслеживания новые письма. Данные используются для виджета «Почта».
В этом регистре хранятся данные о виджетах которые отображаются у пользователей.
Содержит типы показателей работ, которые учитываются в виджете «Мои дела».
Рег. задание РасчетПоказателейРаботыПользователей
Рег. задание по заполнению регистра ЗначенияПоказателейРаботыПользователя . Данные используются для виджета «Мои дела» .
Как это работает
Основная форма ФормаТекущиеДела обработки ТекущиеДелаДокументооборот размещается на начальной странице и при открытии, в соответствии с сохраненными настройками (регистры ПороговыеЗначенияПоказателейВиджетов, ПапкиПисемТекущихДел, НастройкиТекущихДел ) отображает виджеты с информацией.
Для работы виджета "Мои дела" ежедневно (один раз в день, в 8.00) рассчитываются показатели регламентным заданием РасчетПоказателейРаботыПользователей и помещаются в регистр сведений ЗначенияПоказателейРаботыПользователя . В течение дня этот виджет не меняет показания.
Остальные виджеты производят подсчет динамически (количество новых задач, писем, документов и т.д.).
При каждом обновлении (по кнопке Обновить или при автообновлении), для каждого виджета рассчитываются данные, на основе этих данных формируется html-текст или заполняется диаграмма.
Как устроено отображение и обработка нажатий на виджеты
Форма для обращения виджетов состоит из двенадцати одинаковых прямоугольных областей. Каждая область содержит html-поле и диаграмму.
Заполнение html-полей и диаграмм происходит в общем модуле ТекущиеДелаДокументооборотСервер .
Заполнение начинается в процедуре ЗаполнитьВиджетыТекущихДел . В этой процедуре производиться обходит всех виджетов и зависимости от их типов (тип виджета для конкретной области заполняется при считывании настроек) вызывается соответствующая процедура из области СлужебныеПроцедурыИФункции_ЗаполнениеВиджетов .
В области СлужебныеПроцедурыИФункции_ЗаполнениеВиджетов содержатся все процедуры, которые непосредственно формируют и заполняют html-текст, настройки диаграмм. Считывание настроек виджетов происходит при помощи метода ПолучитьНастройки регистра сведений НастройкиТекущихДел . При открытии формы вначале считываются настройки, потом происходит заполнение виджетов. Также метод ПолучитьНастройки вызывается при каждой настройке виджета.
События нажатия на виджет (переход по html-ссылкам, расшифровка диаграммы, открытие меню виджета) обрабатываются в процедурах ОбработатьНажатиеНаСсылку, ДиаграммаОбработкаРасшифровки и ОбработатьНажатиеНаОбластьМеню в общем модуле ТекущиеДелаДокументооборотКлиент .
Как добавить новый виджет
Для добавления новых виджетов необходимо выполнить следующие действия:
-
В справочник Виджеты :
Добавить свой предопределенный элемент. Этот элемент будет определять виджет в программе.
В модуле менеджера доработать функцию ДоступныеВиджеты . В функции следует определить доступность виджета в зависимости от функциональных опций и доступности тех или иных данных. Доступность определяет возможность выбора виджета в мастере настройки и отображение уже добавленного виджета на форме.
- Добавить предопределенные элементы – показатели виджета.
- В модуле менеджера доработать процедуру ЗаполнитьПоказатели . В процедуре следует указать привязку добавленных показателей к виджету и их пороговые значения по умолчанию.
ДиаграммаОбработкаРасшифровки – обработка расшифровки диаграммы
ОбработатьНажатиеНаОбластьМеню , ОбработатьНажатиеНаОбластьМеню_Завершение – нажатие на область меню.
Рекомендации
При первой разработке процедур заполнения виджетов рекомендуется за основу брать процедуру наиболее подходящего типового виджета. Это позволит сократить время на изучении механизма и проектировании внешнего вида виджета.
Процедура заполнения виджета не должна выполняться медленно, т.к. это может сильно сказаться на работе конечных пользователей. Особенно если используется автообновление (по умолчанию отключено).
Дополнительная информация в пункте 3.51 главы 3 документации БСП на ИТС.
Прямая ссылка:
BB-код для форумов и блогов:
HTML-код:
Совместная работа разработчиков. Используем стороннюю программу на примере KDiff3, для сравнения и объединения конфигураций, внешних обработок и отчетов.
Елена Скворцова, 1С:Эксперт по технологическим вопросам, архитектор в нашей компании, в совместном проекте с Учебным центром №1 1С записала цикл видеолекций, посвященных подготовке к практической части экзамена по сертификации 1С:Эксперт. В этих видео рассматриваются аналоги вопросов и задач, которые встречаются на реальных экзаменах. Рассматриваются различные примеры их решения и сопутствующие вопросы, часто возникающие в связи с этим. Это видео - третье из пяти: "3. Избыточные блокировки. Откуда возникают и что с ними делать". В последнем видео, посвященном анализу блокировок, посмотрим на них с другой стороны - стороны MS SQL Server, и расследуем эскалацию блокировки.
Елена Скворцова, 1С:Эксперт по технологическим вопросам, архитектор в нашей компании, в совместном проекте с Учебным центром №1 1С записала цикл видеолекций, посвященных подготовке к практической части экзамена по сертификации 1С:Эксперт. В этих видео рассматриваются аналоги вопросов и задач, которые встречаются на реальных экзаменах. Рассматриваются различные примеры их решения и сопутствующие вопросы, часто возникающие в связи с этим. Это видео - второе из пяти: "Управляемые взаимоблокировки. Причины, виды и способы устранения". Вспоминаем природу возникновения взаимоблокировок, расследуем и устраняем два реальных конфликта управляемых блокировок.
Елена Скворцова, 1С:Эксперт по технологическим вопросам, архитектор в нашей компании, в совместном проекте с Учебным центром №1 1С записала цикл видеолекций, посвященных подготовке к практической части экзамена по сертификации 1С:Эксперт. В этих видео рассматриваются аналоги вопросов и задач, которые встречаются на реальных экзаменах. Рассматриваются различные примеры их решения и сопутствующие вопросы, часто возникающие в связи с этим. Это видео - первое из пяти: "Ожидания на управляемых блокировках. Назначение, возможности и механизм работы" Повторяем теоретические основы управляемых блокировок и их применяем знания на практике, расследуя управляемый тайм-аут.
В Документообороте 2.1.12 и 2.1.13 на начальной странице «Текущие дела» в типовом механизме отсутствует виджет «Задачи от меня», который бы показывал информацию аналогичную виджету «Задачи мне».
Создадим свой новый виджет небольшой доработкой конфигурации. Расширением, к сожалению, обойтись не получится, так как в них пока что нельзя добавлять предопределенные элементы.
1. Добавляем в справочник Виджеты предопределенный элемент «ЗадачиОтМеня».
2. В модуле менеджера этого же справочника в функции ДоступныеВиджеты() находим объявление переменной ДоступныеВиджеты и добавляем в этот список значений наш новый виджет:
3. В общий модуль ТекущиеДелаДокументооборотСервер добавляем процедуру заполнения нового виджета:
Фактически это копия процедуры ТекущиеДелаДокументооборотСервер.ЗаполнитьВиджетМоиЗадачи с измененным запросом. В нашем случае необходимо поменять связь таблицы ЗадачаИсполнителя и ИсполнителиЗадач с «ЗадачаИсполнителя.ТекущийИсполнитель = ИсполнителиЗадач.Исполнитель» на «ЗадачаИсполнителя.Автор = ИсполнителиЗадач.Исполнитель».
4. В этом же модуле в процедуре ЗаполнитьВиджетыТекущихДел добавим заполнение нашего виджета:
Процедура ЗаполнитьВиджетыТекущихДел(Форма, Виджеты = Неопределено) Экспорт5. В процедуре ТекущиеДелаДокументооборотКлиент.ОбработатьНажатиеНаСсылку добавим описание нажатия на наш виджет:
Процедура ОбработатьНажатиеНаСсылку(Ссылка, Форма, ИндексВиджета)Нам удобней открывать форму списка с задачами, нежели отчет. Но можно аналогично виджету «Задачи мне» открывать отчет, взяв его же за основу, немного изменив запрос.
6. Так как на открытой форме нам необходимо будет видеть либо все задачи, либо непринятые, либо просроченные - необходимо описать это в форме задач от меня.
Модуль формы ЗадачиОтМеня объекта ЗадачаИсполнителя, процедура ПриСозданииНаСервере – добавляем в самый конец вызов процедуры ПрименитьОтборПоТипуЗадач(), которая будет накладывать отбор на динамический список в зависимости от переданных при открытии формы параметров.
И описываем ее:
Читайте также: