На одном из проектов внедрения системы DIRECTUM возникла необходимость реализовать несколько требований по автонумерации справочников, которые не могли быть решены с помощью стандартного механизма. Приведу наиболее значимые примеры этих требований:
Для выполнения данных требований было разработано прикладное решение, первоначально ориентированное на справочник «Договоры», но затем оно было распространено и на другие справочники. Рассмотрим данное решение в контексте двух примеров:
Итак, в прикладной разработке используются следующие справочники:
Рис. 1. Карточка записи справочника «Типы разрезов справочников»
Рис. 2. Карточка записи справочника «Форматы номеров»
После выбора значения поля «*Тип разреза» в табличную часть автоматически переносятся реквизиты, указанные в соответствующей записи справочника «Типы разрезов справочников». Состав реквизитов не может быть изменен. Необходимо указать конкретные значения реквизитов. Однако если определенный реквизит не участвует в формировании номера, то его значение не заполняется.
Здесь следует расшифровать значение следующих полей с «неговорящими» названиями (см. рис. 2):
Счетчик – ссылка на запись справочника «Счетчики форматов номеров», поле необходимо заполнять в случае, если несколько форматов номеров используют единый сквозной порядковый номер, но при этом элементы, участвующие в формировании формата номера, отличаются (см. пример на рис. 4,5).
Нумерация по значению разреза – признак Да/Нет, предназначен для указания сквозной нумерации, если не указано одно или несколько значений элементов разреза. Имеет смысл при незаполненном поле «Счетчик». Если установлено значение «Да», то порядковый номер будет сквозным только в рамках тех записей, которые подпадают под значения заполненных элементов разреза и имеют одно и то же значение незаполненного элемента разреза. Если значение равно «Нет» или данный реквизит пуст, то порядковый номер будет сквозным для всех записей справочника, подходящих под разрез формата номера. По требованиям примера 2 устанавливаем значение «Да». Тогда запись справочника «Договоры» с реквизитами Ведущая сделка = Deal1, НОР = Org1, Тип документа = Приложение будет иметь порядковый номер отличный от записи Ведущая сделка = Deal2, НОР = Org1, Тип документа = Приложение.
Рис. 3. Карточка записи справочника «Счетчики форматов номеров»
Может оказаться, что значения реквизитов нумеруемого справочника удовлетворяют нескольким записям справочника «Форматы номеров»одновременно. В этом случае среди имеющихся вариантов будет выбираться формат номера с наибольшим количеством заполненных значений реквизитов. Если количество заполненных реквизитов одинаково, то будет применяться один из вариантов. Поэтому при заполнении справочника «Форматы номеров» нельзя допускать неоднозначность выбора.
Продемонстрируем настройку форматов номеров для примера 1 (см. рис. 4,5). Следует обратить внимание, что в настройке формата номера для НОР Org2 заполняется поле «Счетчик» значением, в котором как раз хранится текущий порядковый номер НОР Org1.
Рис. 4. Настройка формата номера для НОР Org1
Рис. 5. Настройка формата номера для НОР Org2
При необходимости изменения элементов разреза (добавление/удаление элементов) требуется изменить состав элементов разреза в соответствующей записи справочника «Типы разрезов справочников», во всех записях справочника «Форматы номеров», относящихся к данному типу разреза, перевыбрать значение поля «*Тип разреза» и задать новые значения элементов разреза.
Авторизуйтесь, чтобы написать комментарий