Регистры сведений для аналитиков

08.11.22

Архитектура

Как использовать регистры сведений при анализе процессов заказчика. Особенности проектирования и применения регистров сведений.

Введение

Ниже приведены рассуждения о разработке структуры базы данных на платформе "1С:Предприятие". Все рассуждения приведены в обобщенном "типовом" для "1С:Предприятие" виде. Дополнительно приводятся некоторые встречающиеся на практике особенности применения.

Для описания структуры данных в 1С:Предприятия применяются:

Справочник - информация об однотипных объектах (Сотрудники, Склады, Номенклатура и т.д.).

В справочники записывается "статичная" информация об объекте, которая не меняется со временем.

Кроме того, справочники создаются для организации дополнительных классификаторов объектов (Виды номенклатуры, Группы доступа и т.д.)

Документы - информация о событиях, которые изменяют состояние ресурсов предприятия.

Проведенный документ - это отраженная в учете информация о событии.

С документом допускается следующие операции:

  • Проведение документа - документ принимается к учету.
  • Отмена проведения - документ исключается из учета.
  • Перепроведение - обновление информации в учете.

Возможность отмены проведения и перепроведения документов приводит к тому, что информация о состоянии ресурсов предприятия может изменяться "задним числом".

Рассмотрим для примера "Договор поставки". Формально, договор - это документ (лист бумаги), но с точки зрения учетной системы - договор это справочник. Это связано с тем, что факт подписания договора не изменяет состояние ресурсов. Резервирование товаров под договор, оплата по договору и другие события, изменяющие состояние ресурсов фиксируются отдельными документами, а сам договор является объектом (аналитикой).

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

Уникальная комбинация значений, однозначно определяющее значение ресурса, образует измерения. Так, если вид цены (опт, розница) и номенклатура однозначно определяют цену, то в регистре необходимы два измерения: "Вид цены" и "Номенклатура". В случае если для однозначного определения цены надо еще знать упаковку, то потребуется добавить еще одно измерение: "Упаковка".

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

Документ, на основании которого формируются записи в регистре, называется регистратором.

Совокупность справочников, документов и регистров обычно называют "архитектурой".

Для аналитика крайне важно уметь:

  1. Анализируя процессы предприятия, определить:
    1. Ресурсы предприятия, изменение состояния которых должна отслеживать информационная система.
    2. Измерения, позволяющие однозначно определить состояние ресурсов. Т.к. значениями измерений обычно являются элементы справочников, то в это же время определяются необходимые справочники.
    3. События (документы) при которых происходит изменение состояния ресурсов.
  2. Анализируя имеющуюся в типовых решениях регистры, справочники и документы, определить их пригодность для отражения состояния ресурсов предприятия.

 

Регистры сведений

Регистр сведений это таблица в базе данных, записи в которой представляют собой структуру "Ключ -> Значения". 

Ключ (измерения) - это уникальная совокупность значений, которая однозначно определяет значение ресурсов и реквизитов.
Приведем пример регистра сведений:

 

 

Далее при описании регистров сведений будет использоваться слово "Ресурсы" вместо "Ресурсы и Реквизиты", т.к. технически в регистрах сведений ресурсы и реквизиты работают одинаково.

Регистр сведений - единственный регистр, в который могут вноситься записи как с привязкой к документу (регистратору), так и вручную.

Оба способа ввода данных одновременно использовать не допускается.

 

Непериодический регистр сведений

Таблица непериодического регистра сведений содержит следующие колонки:

  1. Регистратор (если записи вносятся в регистр через документ)
  2. Измерения
  3. Ресурсы
  4. Реквизиты

Рассмотрим пример анализа регистра "Разрешения операций с товарами" (структуру регистра смотри на картинке выше).
Пусть в справочнике "Номенклатура" есть флаг "Использовать упаковки при указании разрешений на операции с товарами".

В этом случае, аналитику по данному регистру требуется согласовать следующие утверждения:

  1. Объем данных, которые надо внести в регистр:
    Для каждого Склада, Товара, Упаковки (если используются) надо указать разрешения отдельно.
    Если на предприятии имеется 10 складов, 10 тыс. товаров, и для половины товаров планируется использовать упаковки по 3 шт. для каждого, то для описания разрешений в регистр надо внести 200 000 записей:
    10 складов * 5000 товаров без упаковок = 50 000 записей.
    10 складов * 5000 товаров * 3 упаковки = 150 000 записей.
    При добавлении новой номенклатуры или складов так же придется добавлять записи в регистр.
  2. Поведение при отсутствии данных:
    Необходимо определить поведение по умолчанию: Если запись в регистре не найдена, то что? (можно / нельзя / ошибка).
  3. Единство назначения:
    Разрешение на продажу и разрешение на закупку находятся в одной записи, а значит будут всегда устанавливаться с одинаковыми правилами:
    1. Если разрешения устанавливаются с использованием упаковки, то и разрешения на продажи и разрешения на покупку должны устанавливается в разрезе упаковок.
    2. В будущем правила работы со всеми разрешениями, хранящимися в данном регистре будут меняться одновременно и по единой причине - по решению единого ответственного (руководителя).
  4. Единство ответственности (прав):
    Пользователь имеющий право записи записи в регистр должен обладать правами / обязанностями определить все значения ресурсов одновременно. По значениям измерений может быть настроены дополнительные ограничения. Например можно ограничить пользователя в правах по редактированию записей одного склада, но нельзя ограничить в правах по редактированию одного ресурса.

 

Периодический регистр сведений

В случае если значения ресурсов могут изменяться во времени, и необходимо хранить историю изменения значений ресурсов, то необходимо использовать периодический регистр сведений. Структура такого регистра полностью повторяет структуру непериодического регистра сведений, описанного выше. Дополнительно в таблице регистра добавляется колонка "Период", в которой хранится дата начиная с которой действует запись. Для определения значения ресурсов на произвольную дату используется "срез первых" или "срез последних".

Рассмотрим шаги по построению среза последних:

  1. Найти уникальные комбинации значений измерений, которые встречаются в записях регистра с периодом меньше или равным заданному.
  2. Для каждой найденной уникальной комбинации измерений найти запись с максимальным периодом.

* Фактические выполняемые алгоритмы отличаются от указанного, но данное описание более наглядно отражает логику построения среза.

Поиск уникальных комбинаций значений измерений приводит к следующей важной особенности: при построении срезов платформа 1С:Предприятие всегда используются все измерения. Игнорировать часть измерений можно только разработав "собственный" механизм построения среза.

Для периодического регистра сведений надо согласовать все утверждения непериодического регистра и дополнительно согласовать следующие утверждения:

  1. Значения всех ресурсов регистра фиксируются одной датой, т.е. нельзя одной датой установить разрешение только на продажу, а другой датой только разрешение на закупку. При проведении "нового" документа нельзя "просто продублировать" старое значение неизменяемого ресурса" в регистре, т.к. после отмены проведения или изменения "старого" документа данные в регистре могут стать не согласованными.
  2. Записи в регистре будут начинать действовать с указанного периода и будут действовать до следующей записи с такими же значениями измерений. Игнорировать часть измерений нельзя.

 

Периодичность регистра сведений

Регистры сведений могут иметь следующие виды периодичности:

  1. Год - новое значение начинает действовать с 01.01.ХХХХ 00:00:00.
  2. Месяц - новое значение начинает действовать с 01.ХХ.ХХХХ 00:00:00.
  3. День - новое значение начинает действовать с ХХ.ХХ.ХХХХ 00:00:00.
  4. Секунда - новое значение начинает действовать с ХХ.ХХ.ХХХХ ХХ:ХХ:ХХ
  5. По позиции регистратора - новое значение начинает действовать с ХХ.ХХ.ХХХХ ХХ:ХХ:ХХ, но в отличии от периодичности "Секунда" допускается ввод нескольких записей с одинаковыми значениями измерений и одинаковым периодом. Порядок следования записей "внутри" одной секунды определяется по ГУИДу регистратора. В связи с тем, что пользователь не работает с ГУИДами и не может их контролировать, то использование периодических регистров с периодичностью "по позиции регистратора" не рекомендуется.

 

Примеры выбора периодичности регистра сведений

Рассмотрим регистр сведений "Графики работ" из демонстрационной конфигурации БСП:

 

 

Данный регистр сведений сделан непериодическим т.к. указанное значение не должно действовать до тех пор пока не появится следующая запись, т.е. если последняя запись в регистре 31.12.2022 - сокращенный рабочий день, это не значит, что все дни 2023 года сокращенные и рабочие, а означает, что данные на 2023 год не внесены.

А вот регистр "Цена номенклатуры" - периодический, т.к. введенная последняя цена будет действовать до тех пор пока не введут "новую" цену.

 

Использование периодичности "Секунда" для реализации работы с периодом действия "День"

Рассмотрим регистр сведений "Цены номенклатуры"

 

 

 

Пусть необходимо обеспечить возможность установки цен на некоторый период с ... по ... в днях.
Рассмотрим запись Молоко в период с 01.01.2022 по 01.02.2022 должно стоить 1 руб.
Тогда мы можем договориться, что для прекращения действия цены мы будем заносить нулевую цену.
Если мы создадим регистр сведений с периодичностью "день", то не сможем отразить цены за смежные периоды.

Если внести данные так:

Период Товар Цена
01.01.2022 Молоко 1
01.02.2022 Молоко 0

тогда на 31.01.2022 еще будет действовать цена 1 руб., но не получится установить новую цену с 01.02.2022 т.к. такая запись в регистре уже есть.

Если внести данные так:

Период Товар Цена
01.01.2022 Молоко 1
31.01.2022 Молоко 0

то тогда на 31.01.2022 уже будет действовать нулевая цена.

Решением задачи будет использование периодичности "Секунда":

Период Товар Цена
01.01.2022 00:00:00 Молоко 1
31.01.2022 23:59:59 Молоко 0

 

 

Оптимизация структуры регистра для чтения / записи

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

Рассмотрим периодический регистр "Кадровые данные":

 

 

Такая структура регистра не пригодна для записи, т.к. не позволяет устанавливать значение каждого ресурса отдельно. Тем не менее должность и оклад очевидно меняются не одновременно. В связи с этим придется изменить структуру регистра:

 

 

Это позволит записывать каждое свойство (Должность, Подразделение и Оклад) отдельно, но читать из такого регистра станет не удобно, т.к. для каждый раз надо будет искать последнюю записью для каждого свойства каждого сотрудника.

Для оптимизации чтения создается дополнительный регистр, не периодический и не подчиненный регистратору. Имя такого регистра обычно содержит суффикс "Интервальный":


 

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

 

Заключение

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

См. также

Архитектура решений Программист Платформа 1С v8.3 Бесплатно (free)

В статье расскажу про относительно уникальное явление на рынке. EmplDos - полноценный сервис, который в качестве Backend использует платформу 1С. Речь пойдёт не только о технической и архитектурной стороне вопроса, а ещё и о всех трудностях и граблях, которые пришлось и до сих пор приходится преодолевать на пути к успеху.

14.10.2024    4175    0    comol    28    

28

Кейсы автоматизации Платформа 1С v8.3 1С:Документооборот Бесплатно (free)

Компания «Уралхим» использует 1С:Документооборот не только для хранения и согласования документов, но и для централизованного управления НСИ между 47 системами (не только на 1С); для бэкенда к мобильным приложениям охранников; и в качестве сервиса заказа справок для сотрудников. О деталях реализации нестандартных решений, разработанных в компании «Уралхим» на базе 1С:Документооборот, пойдет речь в статье.

02.08.2024    3578    0    Novattor    1    

16

Кейсы автоматизации Платформа 1С v8.3 Энергетика и ЖКХ Россия Бесплатно (free)

Делимся опытом автоматизации учета башни раздачи воды.

27.12.2023    2237    0    slavik27    7    

15

Отчеты и дашборды Бизнес-аналитик Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Бесплатно (free)

Если вы привыкли выгружать бухгалтерские операции в Excel и дополнять их там управленческой информацией, вы сможете значительно сэкономить время, получая нужные управленческие отчеты в бухгалтерской программе сразу, без лишних движений. Представляем решение для самостоятельного внедрения управленческого учета в 1С:Бухгалтерии.

11.12.2023    2974    0    Serg_Tangatarov    2    

16

Архитектура решений Программист Бесплатно (free)

Рассмотрим применение архитектурной проверки задач в процессе разработки.

30.10.2023    5722    0    ivanov660    10    

35

Кейсы автоматизации Работа с требованиями Анализ бизнес-процессов Бесплатно (free)

Автоматизировать производственные процессы в 1С:ERP без доработки типовых механизмов очень сложно. А дорабатывать типовые механизмы 1С:ERP не всегда оправданно. Решением может стать технология разработки Рабочих мест, которая позволяет автоматизировать самые сложные участки последовательно – шаг за шагом, процесс за процессом. Расскажем о том, как помочь пользователям вводить большое количество данных, не нарушая порядок ввода и полноту заполнения всех необходимых реквизитов, и как вовлечь сотрудников Заказчика в разработку и тестирование функционала Рабочих мест.

26.10.2023    3024    0    user1754524    15    

17

Кейсы автоматизации Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Когда проект внедрения ERP в крупном холдинге захлебывается в проблемах производительности и в отчаянии пользователей, нужен комплексный подход. Расскажем о битве за производительность и об организационных мероприятиях по наведению порядка в системе и коллективе.

29.08.2023    3565    0    ke_almaty    0    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Cyberhawk 135 10.11.22 23:32 Сейчас в теме
технически в регистрах сведений ресурсы и реквизиты работают одинаково
Методы Получить(), ПолучитьПервое() и ПолучитьПоследнее() возвращают значения только ресурсов (реквизитов там не будет).
2. Gladkov_Anton 347 11.11.22 10:43 Сейчас в теме
(1) Спасибо за уточнение.

Статья направлена на аналитиков, которые исследуют процессы и "укалывают" их в типовые регистры, а при обнаружении функциональных разрывов прототипируют новые регистры.

Технические подробности не влияющие на процесс анализа и прототипирования специально исключал.
Оставьте свое сообщение