Регистры в 1с это
Регистр сведений (РС) – это объект метаданных, предназначенный для хранения справочной информации в разрезе определенных разработчиком измерений.
Основная таблица (clustered index) Регистра Сведений Основная таблица (clustered index) Регистра СведенийНо самое главное – это возможность формировать составной индекс (измерения).
Основные таблицы РС
Обычный (непереодический)
У обычного РС создается одна таблица, которая является кластерным по измерениям, ресурсам и реквизитам.
Если мы проиндексируем произвольный реквизит или измерение, то будет дополнительная таблица, где сначала идет реквизит, далее идут измерения (без ресурсов и реквизитов).
Тем самым для регистра сведений очень важен порядок измерений, т.к. если мы будем искать по второму «Отчество», то мы не попадем в индекс и будет выполняться сканирование всей таблицы основной таблицы.
Если же мы будем искать по «коду сайта» и нам нужна ссылка на контрагента, то следует код сайта вынести в измерения и сделать его первым измерением, чтобы попадать в кластерный индекс и не выполнять дополнительные операции ввода вывода для перехода в кластерный из обычного.
Периодический
У периодического регистра сведений основная таблица строится по Периоду:
Если проиндексировать произвольный ресурс, реквизит или измерение, то будет дополнительная таблица, где сначала идет индексируемый реквизит, далее период и измерения (без ресурсов).
Важно понимать суть периодического РС – он содержит именно периодическую информацию.
Следовательно, если у вас есть поле с датой, то не обязательно, что ваш регистр будет периодическим, важно понимать, будем ли мы отбирать наши записи по этой дате или дата – это просто одно из измерений/ресурсов.
Например, Номер и Дата первичного документа для отсканированного файла (акт поставщика) – это просто справочная информация, а не периодическая. В отличие от курсов валют, которые являются строго периодической информацией и курс валют мы всегда получаем в разрезе даты.
Подчиненный регистратору
У РС, подчиненного регистратору кластерный индекс строится по регистратору. Это необходимо для того, чтобы формировать набор движений.
Вот мы и добрались до регистров бухгалтерии платформы 1С:Предприятие 8.x. Ранее мы говорили о регистрах накопления и регистрах сведений, подробно рассматривали их устройство и принцип работы с ними со стороны платформы. В этом плане, регистры бухгалтерии интереснее и сложнее, т.к. имеют большее количество настроек, а сама специфика бухгалтерского учета усложняет их структуру хранения в базе данных, а также SQL-запросы платформы для получения этих данных.
В этой серии статей мы рассмотрим общую информацию о регистре бухгалтерии, его структуре хранения в базе данных в зависимости от настроек, построение SQL-запросов платформы при использовании различных виртуальных таблиц, влияние плана счетов на настройки регистра, а также другие особенности, связанные с итогами и прочими моментами.
В первой части, которая сейчас открыта перед Вами, мы рассмотрим внутреннее устройство регистра бухгалтерии при часто используемой структуре.
Назначение
Регистры бухгалтерии очень похожи на регистры накопления: они также могут иметь произвольный набор измерений, в разрезе которых накапливаются показатели, а также дополнительные реквизиты, в которых хранится произвольная информация о записях.
Любой регистр бухгалтерии обязательно должен быть связан с одним из планов счетов, который своими настройками влияет на хранение итогов (об этом подробнее мы поговорим в следующих статьях). На структуру хранения записей регистра бухгалтерии в основном влияют как сама структура регистра (измерения, ресурсы, реквизиты) и его настройки (включена ли корреспонденция, разделение итогов и др.), так и настройки используемых счетов (признаки учета счетов и субконто, вид счета и т.д.).
Регистры бухгалтерии - это
Опишем каждую из настроек:
- Настройки регистра
- План счетов - указание на объект метаданных "План счетов", который используется регистром бухгалтерии.
- Корреспонденция - флаг, указывающий используется ли корреспонденция счетов при создании записей в регистре. Регистр бухгалтерии может работать в двух режимах:
- С корреспонденцией - в этом случае используется механизм двойной записи, когда каждая запись регистра содержит поля "СчетДт" (счет дебета) и "СчетКт" (счет кредита).
- Без корреспонденции - в этом случае механизм двойной записи использоваться не будет. В каждой записи будет использоваться только одно измерение для указания счета - "Счет"
- Организация - ссылка на справочник "Организации". Не используется признак учета, т.е. измерение будет использоваться для всех записей. Установлена настройка "Балансовый", которая определяет поддержку двойной записи для этого измерения и, соответственно, схождение баланса для него. Другими словами регистр бухгалтерии в нашем случае сконфигурирован таким образом, чтобы баланс можно было сводить в разрезе организации.
- Валюта - ссылка на справочник "Валюты". Измерение ссылается на признак учета "Валютный". Это означает, что измерение будет использоваться только в том случае, если у счета установлен признак учета "Валютный".
- Сумма - балансовый показатель, используемый для всех счетов. Признак учета субконто "Суммовой" указывает ведется ли учет по этому ресурсу для указанных в счете субконто. Подробнее об этом еще поговорим и рассмотрим работы этой настройки на примерах.
- ВалютнаяСумма - не балансовый ресурс, используемый только для счетов с признаком учета "Валютный", а также используемый только для тех субконто, у которых признак учета субконто "Валютный" установлен в Истина.
- Количество - также, как и ресурс "ВалютнаяСумма", не является балансовым. Используется только для счетов с признаком учета "Количественный", а также только для тех субконто, у которых в Истина установлен признак учета субконто "Количественный".
- Содержание - реквизит с типом "Строка" (макс. длина 150) для хранения справочной информации записей регистра.
Как мы видим, на заполнение полей регистра бухгалтерии в основном влияют счета учета. В зависимости от признаков учета счета и субконто определяется какие измерения и ресурсы используются для записи, как должны хранится итоги по счетам и субконто, а также прочие настройки.
Для новичков все эти настройки кажутся запутанными. Мы не будем подробно рассказывать о назначении каждой из настроек регистра и плана счетов. О каждой настройке с прикладной точки зрения Вы можете узнать на ИТС и здесь. Также в последующих статьях мы подробнее остановимся на каждой настройке и проанализируем ее влияние на структуру таблиц регистра и работы платформы 1С:Предприятие с ними.
Таблицы регистра
В нашем примере используется регистр бухгалтерии с поддержкой корреспонденции и с максимальным количеством субконто - 3. Для измерений используются как признаки учета счетов, так и признаки учета субконто. В итоге платформа создала следующую структуру таблиц:
1. Основная таблица (_AccRg[внутренний номер]) - основная таблица регистра, в которой хранятся данные аналогично той структуре регистра, которая задана в конфигураторе (измерения + ресурсы + реквизиты). В нашем примере она выглядит следующим образом:
Заметим, что значения доп. аналитики, а именно субконто, не хранятся в основной таблице регистра. Для их хранения используется отдельная таблица, которая содержит все поля регистра, включая стандартные (период, регистратор, номер записи). Также присутствует поле "Активность" типа булево, которое влияет на то, будет ли запись влиять на таблицы итогов (если Истина, то запись учитывается в таблицах итогов).
2. Значения субконто (_AccRgED[внутренний номер]) - таблица создается, если для плана счетов регистра бухгалтерии используются субконто. Она нужна для хранения значений субконто записей основной таблицы регистра. В нашем примере таблица имеет следующую структуру:
Поле "Вид движения" может содержать два значения: 0 - дебет, 1 - кредит. Вид субконто в большинстве случаев содержит ссылку на элемент плана вида характеристик, задающий виды субконто. Значение субконто хранится по правилам, аналогично тому типу данных, который нужно сохранить. В нашем случае это ссылочный тип (подробнее о значениях каждого поля в этом случае Вы можете прочитать в одной из предыдущих статей).
3. Таблицы итогов. К таблицам итогов регистра накопления относят:
Таблица остатков (или таблица итогов по счетам) (_AccRgAT[внутренний номер])Из названия уже понятно, что в таблице хранятся итоги остатков по счетам, по периодам и в разрезе измерений регистра бухгалтерии. Для каждого ресурса хранится оборот по дебету и кредиту, а также общий оборот. При использовании разделения итогов для регистра используется служебное поле "Разделитель", чтобы повысить параллельность работы пользователей. Принцип работы разделения итогов аналогично его использованию в регистрах накопления, поэтому подробней останавливаться не будем.
Таблица оборотов (или таблица итогов между счетами) (_AccRgCT[внутренний номер])Таблица оборотов хранит обороты между счетами в разрезе балансовых измерений регистра. Как и в таблице остатков, хранятся обороты по дебету и кредиту для ресурсов регистра и имеются служебные поля для механизма разделения итогов.
Таблицы итогов субконто (или итоги по счетам с субконто) (_AccRgAT[количество субконто][внутренний номер])Таблицы итогов субконто хранят итоги по субконто для счетов в разрезе измерений регистра бухгалтерии. В таблицах хранятся обороты по ресурсам регистра (по дебету и кредиту). Таблицы также содержат поля для механизма разделения итогов.
Главной особенностью хранения итогов по субконто является использование нескольких таблиц для этих целей. В нашем примере у плана счетов, который используется регистром бухгалтерии, максимальное количество субконто - 3. В этом случае платформа создает три таблицы итогов, где хранит итоги по 1 субконто, по 2 субконто и по 3 субконто.
В последующих статьях мы подробней проанализируем работу платформы с итогами и на примере проанализируем изменение данных в таблицах. Также будет рассмотрен вопрос влияния количества субконто на производительность бухгалтерских регистров.
4. Настройки хранения итогов (_AccRgOpt[внутренний номер]) - таблицы с настройками итогов регистра бухгалтерии. Имеют следующую структуру:
В таблице настроек хранения итогов сохраняются данные, по которым платформа определяет как именно будут рассчитываться итоги для данного регистра, использовать ли текущие итоги и другие настройки. Подробнее мы о них еще поговорим.
Примечание: аналогичная таблица есть и у регистров накопления. Когда мы рассматривали эту тему ранее (еще на платформе 8.2), таких настроек как макс. и мин. хранимый период итогов не было. Это нововведение платформы 8.3. На примере регистра бухгалтерии мы проанализируем работу этих настроек, который будет актуальным и для регистров накопления.
Таким образом, мы рассмотрели общую информацию о структуре таблиц регистра бухгалтерии. В некотором плане его внутреннее устройство схоже с регистром накопления, за исключением таблиц дополнительной аналитики - субконто, а также таблиц итогов для них.
Вместо заключения
Платформа 1С внутри содержит множество интересных механизмов, решений и много другого. Речь идет не только о стороне базы данных, но и особенностях работы сервера приложений, клиентской части, взаимодействия с веб-сервером и так далее. В этой и предыдущих статьях мы лишь немного приоткрыли внутреннюю структуру базы данных
Если есть интерес к подобным темам или другие вопросы – пишите в комментариях. Вы сами задаете темы будущих публикаций!
Сегодня мы коснулись общего назначение и структуры таблиц регистра бухгалтерии. В будущих статьях поднимем такие темы как:
Разговор сейчас, в частности, пойдет о регистрах 1С:Бухгалтерии 8. Давайте вкратце выясним, что это такое и зачем оно нужно.
В своём курсе по 1С:Бухгалтерии Предприятия 8 я рассказываю пользователям и о том, как хранятся данные в конфигурации. Конечно, особые подробности тут не нужны, но, тем не менее, необходимо знать, какие виды данных присутствуют в 1С Бухгалтерии 8 и как с ними "управляться". Это важно ещё и потому, что далеко не всегда можно полагаться на то, что в программе есть абсолютно всё, что вам нужно.
Устройство программы, в том числе работа с регистрами, справочниками, отчётами и прочими компонентами рассматривается в нашем спецкурсе по конфигурации 1С:Бухгалтерия 8.3 (240 уроков, 42 часа на видео). Посмотрите примеры уроков, учебный план и полное описание видеокурса!
Что такое регистры 1С Бухгалтерии и зачем они нужны
Допустим, что в течение месяца мы вводим в программу различные документы. Однако, в конце концов потребуется сформировать кое-какую отчётность. Откуда тогда 1С Бухгалтерия будет брать данные для формирования отчетов?
Для примера предположим, что данные будут браться из документов. В таком случае каждый раз при формировании любого отчёта программе понадобилось бы перебрать все документы, извлечь из них данные и только потом на основании этих данных составить затребованный отчет.
Очевидно, что такой подход к формированию отчетов, был бы неэффективен. Поэтому на практике и существует такое понятие как проведение документа. При проведении документа (в отличие от его простой записи в базу 1С) на основании заполненной пользователем формы 1С Бухгалтерия формирует так называемые проводки, то есть вносит одну или более записей в один или более регистров.
Регистры 1С — это просто таблицы, содержащие колонки и строки. Принцип тот же самый, что и у таблиц Excel или обычных "бумажных" таблиц.
Движение документа по регистрам — это записи, вносимые документом в регистры при проведении, называются.
Вот из этих-то регистров и берутся данные при формировании различных отчетов. Это гораздо быстрее, чем перебирать все документы. Именно по этой причине всегда следует внимательно относиться не только к заполнению формы документа, но и при необходимости контролировать формируемые документом проводки.
Виды регистров 1С Бухгалтерии
На самом деле, регистры в 1С:Бухгалтерии используются не только для хранения проводок документов, но и для других различных целей. В связи с этим существует несколько видов регистров:
- Регистры сведений
- Регистры накопления
- Регистры расчета
- Регистры бухгалтерии
Последний тип регистра как раз и хранит бухгалтерские проводки документов. Чем отличаются все эти регистры 1С друг от друга и почему, я рассказываю в читаемом мной курсе Бухгалтерии Предприятия 8. Здесь же приведу ещё раз список существующих регистров 1С, только в виде скриншота (на примере 1С Бухгалтерии 8.2).
[нажмите на картинку для увеличения]
Справка: как сохранять фото с сайтовА вот то же самое на примере 1С:Бухгалтерии 8.3:
[нажмите на картинку для увеличения]
Справка: как сохранять фото с сайтовПросмотр регистров 1С Бухгалтерии
Никогда не помешает знать, где именно находятся в программе те или иные регистры и зачем каждый из них нужен. Ну хотя бы потому, что однажды (и очень даже запросто!) может потребоваться их просмотреть с целью поиска и исправления ошибок в учете (типичная задача при закрытии месяца).
Любой из регистров можно открыть с помощью форм, приведенных мной выше. То есть из общего списка регистров определенного типа. Для примера приведу самый известный регистр — регистр бухгалтерии. Впрочем, это название больше техническое, поскольку для пользователя он называется Журнал проводок.
[нажмите на картинку для увеличения]
Справка: как сохранять фото с сайтовПри открытии любого регистра данные там отображаются "в общей куче". Их можно отфильтровать по необходимым вам параметрам в точности также, как это можно сделать с документами.
Внесение изменений в регистры
Если вы еще раз взглянете на фрагмент содержимого регистра бухгалтерии 1С Предприятие на рисунке выше, то обратите внимание на отсутствие кнопки Добавить. Дело в том, что не во все регистры можно вносить записи напрямую, т.е. открыть его и добавить элементы (строки) вручную, как это можно сделать с документами или справочниками.
Вопрос на засыпку: знаете ли вы, что в некоторые справочники также нельзя вносить данные через всеми любимую кнопку "Добавить". Как думаете, почему?
А вот пример простого регистра сведений, в который записи вручную вносить можно. Использовать такие регистры, конечно, проще.
[нажмите на картинку для увеличения]
Справка: как сохранять фото с сайтовЕсли в регистре нет кнопки Добавить, то данные в такие регистры вносятся только так называемыми регистраторами. Смысл понятия регистратор иллюстрирует всё та же картинка с формой регистра бухгалтерии.
Подведём итоги
В регистрах 1С Бухгалтерии хранятся данные, не менее важные, чем записаны в формах документов. Очень важно уметь правильно работать с различными регистрами — это помогает понимать, все ли правильно делает программа (в соответствии с вашими потребностями).
Умение обращаться с регистрами помогает исправлять ошибки в учете.
Особенности разных регистров, внесение в них данных, типы регистраторов, различие между периодическими и непериодическими регистрами, а также многое другое, я рассматриваю в онлайн курсе 1С:Бухгалтерии 8, представленному на данном сайте.
Ещё также хочу добавить, что если вы не уверены, зачем нужен тот или иной регистр и как он работает, то лучше не вносите в него изменения вручную, поскольку потом могут возникнуть ошибки, в том числе трудно отслеживаемые. Последнему у меня посвящена отдельная статья.
Целью данной данной работы сделана попытка повышения уровня абстракции регистров. Будет предложен простейший регистровый тип (класс), и на его основе создана иерархия регистровых классов.
- чтобы ресурсы были обязательно числовыми
- сохранение истории ресурсов
Процедур/функций у данного класса немного:
Динамический массив. Реквизиты движения. Последовательности.
В настоящий момент понятие динамических массивов в 1С отсутствует. Более того, в отличие от статических массивов, эмулировать динамические массивы стандартными средствами платформы довольно сложно. Исключение составляет лишь случай одномерного массива. А что делать, если нужен именно многомерный массив? Например, такая задача.
Предприятие имеет несколько территориально разнесенных подразделений. Каждое подразделение имеет право (и пользуется этим правом) назначать свои цены, как закупочные, так и продажные (предварительно согласовав это с центром). Вопрос, как организовать учет всех
Учет истории в массивах/регистрах приводит к появлению еще двух понятий, связанных с регистрацией изменений состояния массива. это появление у динамических массивов так называемых реквизитов движения. В них (их количество и тип задаются при конфигурировании) удобно хранить дополнительную (сопутствующую) информацию об изменении ресурса. появление истории приводит к понятию изменение истории задним числом, что может быть критичным для каких-либо массивов (задач).
Таким образом, в динамическом массиве должна быть предусмотрена возможность хранения последовательности записи или, границ последовательностей для всех наборов значений используемых измерений, а также хранение флага, который устанавливается, если была нарушена.
Физически динамические массивы должны храниться в двух таблицах. И в той, и в другой присутствуют поля измерений и ресурсов. В одной хранятся все движения/изменения ресурсов массива, время движения, реквизиты движения (если заданы). В другой таблице находятся актуальные значения ресурсов массива, граница последовательности (ГП) и флаг нарушения ГП (если для массива задан учет ГП).
Встречаются также задачи, в которых не важны конечные состояния массива, а важен лишь учет изменений состояния. В терминах динамических массивов это означает отсутствие у массива измерений, а присутствие лишь ресурсов (точнее изменения ресурсов) и реквизитов движения.
Регистры с суммируемыми ресурсами.
Производным от класса хранимых динамических массивов является класс массивов с суммируемыми (обычно числовыми, но необязательно) ресурсами. Назовем такой массив общим регистром. Это уже очень близко к тому, что сейчас принято называть регистрами, но есть нюансы.
Общие регистры наследуют все свойства ХДМ. В общем случае, есть только одна процедура, что-то типа . Не различаются движения прихода и расхода. Таким образом, то, что называется оборотным регистром, является частным случаем общего регистра, при отсутствии у него измерений (статических измерений?), но при наличии реквизитов движения (оборотных измерений?). Для хранения информации общего регистра следует, по-видимому, использовать три таблицы: таблица итогов (остатков), таблица движений и таблица итоговых значений оборотов.
Отметим, что поскольку общий регистр наследует свойства ХДМ, то в общем случае допускается использование ресурсов смешанного типа, как суммируемых, так и нет.
Регстры остатков.
Читайте также: