Справочники, назначение
Справочники по сути это списки объектов, имеющих много реквизитов, эти объекты имеют какой-либо самостоятельный смысл (описывают объективную реальность (желательно чтобы её)), существуют достаточно продолжительное время в относительно неизменном виде и используются разными способами (это - прямое следствие их объективной реальности). К примеру, сущность "Пользователи" вполне удовлетворяет этому определению.
Другими примерами справочников (вполне тривиальными) являются:
- Контрагенты - юридические (как правило) лица, выступающие клиентами, поставщиками и т.п.
- Товары - если мы автоматизируем бизнес-процессы продажи, то логично иметь такой справочник. Переменным реквизитом (относительно часто меняющимся) тут будет цена.
- Скидки - тоже для торговли.
- Контакты - контактная информация по непосредственно людям (впрочем, и фирмам тоже - если нет индивидуализированных контактов). К одному контрагенту может относиться несколько контактов - хотя бы по его подразделениям.
Способы использования справочников
1. Хранение информации. Список контактов полезен сам по себе, особенно если в нем организован поиск и отбор по реквизитам. Считаем хранение долгополезной информации базовой функцией справочников.
2. В качестве реквизита других объектов. К примеру, у задачи/документа мы можем завести допреквизит Клиент типа "справочник.Контрагенты" и иметь под рукой нужную справочную информацию. Более интересное использование - поиск всех задач/документов, у которых одним из реквизитов (или определенным реквизитом) является данный элемент данного справочника.
3. Для формирования документов по шаблону. Сейчас мы умеем создавать документ на основе шаблона, передавая в него контекст архива и/или задачи. Если у документа уже будут заданы и заполнены реквизиты типа справочник (или у задачи), то возможности для заполнения текста документа значительно расширяются.
По сути, это основные способы использования справочников. Использование справочников для управления движением задачи (какие-либо переходы доступны в зависимости от значений каких-либо реквизитов задачи) пока не планируется - это слишком усложнит логику конфигурирования бизнес-процесса (хотя и даст интересные возможности).
Общая конструкция справочников
Надо иметь общий список справочников, из которого каждый справочник можно открыть в списке. Список одноуровневый. Из списка можно открыть элемент справочника для просмотра или редактирования.
Каждый справочник имеет свей id (число) и Наименование (к примеру, id=1 "Контрагенты"). Управление доступом осуществляется на уровне справочника в целом Т.е. если пользователь имеет доступ к справочнику "Контрагенты", то ко всем его элементам в равной степени. Управление доступом осуществляется по следующим параметрам:
- Просмотр справочника в списке (используется в т.ч. для заполнения реквизитов задачи или документа)
- Просмотр элемента со всеми его реквизитами
- Добавление нового элемента
- Редактирование элемента справочника (удаление не предусмотрено)
- Число
- Строка
- Дата
- Справочник определенного типа
- (возможно) Пользователь
Сортировку предполагаем только по реквизитам типа строка, число, дата (в т.ч. по id и наименованию). Желательно иметь быстрый поиск по мере набора на клавиатуре (если несложно реализовать).
Для редактирования элементов и для просмотра применяется одна форма - самая простая, типа той, что мы используем для допреквизитов задачи. Позже можно задуматься над редактором форм.
Элемент справочника всегда имеет экранное представление в виде пары id+Наименование. Надо предусмотреть стандартные кнопки открытия списка для выбора элемента и открытия реквизита (выбранного элемента) на просмотр. Это должно быть сделано одинаково во всех местах, где справочник может использоваться как реквизит - в задачах, в документах и в справочниках (когда один справочник имеет реквизит типа другой справочник).
Стандартные отчеты по справочнику
1. Печатная форма списка. Должна учитывать установленные видимость реквизитов, сортировку и отбор.
2. Печатная форма элемента справочника. Очевидно.
3. Объекты со ссылками на данный элемент справочника. Выбираем элемент справочника и смотрим все задачи, все документы и все другие справочники, у которых данный элемент выбран в качестве какого-либо из реквизитов. Настройки данного отчета: выбор типа и ограничения объектов для поиска: к примеру, задачи данного бизнес-процесса, задачи в активных состояниях, только документы или документы данной категории. В частности, так можно посмотреть все подчиненные элементы данного элемента справочника - к примеру, все Контакты данного Контрагента.
4. Объекты с косвенными ссылками на данный элемент справочника. Примерно то же, что и предыдущий отчет, но сначала мы находим все элементы всех справочников, которые имеют данный элемент своим реквизитом, а потом строим предыдущий отчет уже по множеству найденных элементов. Это имеет смысл, если у нас есть конструкция типа "подчиненный справочник" - у справочника "Контакты" есть реквизит "Контрагент", то есть фактически мы имеем Контрагента и его Контакты (работников). К примеру, к Письмам (категория документов) у нас привязан только Контакт - нам интересно собрать всю переписку с данным Контрагентом. То есть по Контрагенту мы находим все его Контакты, а потом по этим Контактам - все документы.
Специальное использование справочников
Справочник Контактов надо использовать для отправки писем: создали документ с данным контактом и сразу отправили его по электронной почте по адресу, указанному в Контакте.
Можно рассмотреть возможность привязки элемента справочника к исполнителю и наоборот - привязку исполнителя к элементу справочника. То есть к пользователю мы можем привязать контакт и хранить там расширенную информацию о пользователе, а можем к контакту привязать пользователя, т.е. с этим контактом работает данный пользователь. Это требует додумывания.
Формирование и хранение выборок из справочников. Из справочника Контрагенты по определенным критериям выбрали возможных клиентов, разбили список на несколько частей и каждой части назначили исполнителя, который обзвонит этх потенциальных клиентов. Что это за объект - такая выборка и как с ней работать - требует додумывания.
Импорт/экспорт через XML
Требуется импорт справочников через XML - к примеру, выгрузкой из 1С. Критерии выгрузки - не важно. Проверка дубликатов при загрузке, причем дубликаты могут выявляться по реквизитам, не по id или Наименованию - к примеру, Контрагетов проверяем по ИНН.
Также желательно иметь экспорт справочников в XML.
Необходимые изменения, напрямую не связанные со справочниками
Поскольку одним из основных использований справочников является заполнение документов по шаблону, то надо сменить очередность действий при создании документа:
- нажимаем кнопку [создать новый]
- выбираем шаблон
- заполняем/редактируем описание документа
- заполняем реквизиты (допполя) документа
- и только теперь формируем документ по шаблону
Удобно также при создании документа из задачи заполнять реквизиты (допполя) документа из реквизитов (допполей) задачи. Полезно уметь настраивать правила заполнения допполей в конфигураторе (из чего в задаче заполняем это поле документа).
Для начала: Контрагенты и Контакты
Поскольку описана слишком большая функциональность, для начала можно ограничиться двумя справочниками: Контрагентами и Контактами. Состав реквизитов будет уточнен отдельно. По ходу внедрения их будет реализован практически весь описанный функционал за исключением создания новых справочников и изменения набора реквизитов справочника.