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

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)

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

27.12.2023    1531    0    slavik27    4    

14

Управленческие аналитики для 1С:Бухгалтерии – отчеты для принятия верных решений

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

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

11.12.2023    1742    0    Serg_Tangatarov    2    

15

Архитектурное ревью. Процесс разработки

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

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

30.10.2023    4032    0    ivanov660    10    

30

Технология разработки Рабочих мест для автоматизации производственных процессов и управленческого учета

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

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

26.10.2023    1986    0    user1754524    15    

15

Опыт оптимизации системы ERP на примере железнодорожного холдинга численностью 10 тыс. человек

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

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

29.08.2023    2982    0    ke_almaty    0    

14

5 подходов при доработке конфигурации 1С, чтобы в будущем не было мучительно больно её обновлять

Архитектура Рефакторинг и качество кода Обновление 1С Платформа 1С v8.3 Бесплатно (free)

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

10.08.2023    9832    0    1c-izhtc    37    

22

Внедрение системы технологического контроля (практический кейс)

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

Стабильное качество выпускаемой продукции и ее соответствие нормативным документам (ТУ, ГОСТам, СМК) для активного предприятия является конкурентным преимуществом, так как оно подчеркивает, что на предприятии отлажены контрольные процедуры на входящее сырье, производство полупродуктов и готовой продукции, доставки. В своей практике я принимал участие во внедрении цифровых инструментов в сельском хозяйстве, где показателями зерна служат влажность, засоренность, крупность и т.д.; в металлургии — перед литьем в формы надо проверить сплав на содержания железа, алюминия, магния и т.д.; в кабельной промышленности в дополнение к физическим свойствам типа геометрии, длины, шероховатости, надо выдерживать и электротехнические показатели. 

22.05.2023    1457    0    Ingraf    0    

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

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

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