Что такое движения регистра и что такое регистратор
Регистр накопления
Регистры накопления — это прикладные объекты конфигурации. Они составляют основу механизма учета движения средств (финансов, товаров, материалов и т. д.), который позволяет автоматизировать такие направления, как складской учет, взаиморасчеты, планирование.
Регистр накопления образует многомерную систему измерений и позволяет «накапливать» числовые данные в разрезе нескольких измерений. Например, в таком регистре можно накапливать информацию об остатках товаров в разрезе номенклатуры и склада, или информацию об объемах продаж в разрезе номенклатуры и подразделения компании.
Структура
Информация в регистре накопления хранится в виде записей, каждая из которых содержит значения измерений и соответствующие им значения ресурсов.
Измерения регистра описывают разрезы, в которых хранится информация, а в ресурсах регистра накапливаются нужные числовые данные. Например, для регистра ТоварныеЗапасы, который имеет следующую структуру:
записи, производящие изменение ресурсов регистра в базе данных, будут выглядеть следующим образом:
Поскольку регистр накопления служит для накопления числовых значений, каждая запись выполняет изменение хранимых ресурсов — движение. Движения, в общем случае, могут либо добавлять некоторые приращения к хранимым ресурсам, либо отнимать их. Если должно выполняться увеличение хранимых ресурсов, — такое движение называется движением прихода («+»), если уменьшение хранимых ресурсов — движением расхода («-»).
Вместе с каждой записью, находящейся в регистре накопления, можно хранить дополнительную произвольную информацию. Для этого служат реквизиты регистра накопления.
Связь с регистратором
Изменение состояния регистра накопления происходит, как правило, при проведении документа. Поэтому каждая запись регистра связана с определенным документом — регистратором, номером строки этого документа, и датой — периодом:
В общем случае значение поле Период может не совпадать с датой документа. Например, документ План продаж может внести в регистр накопления записи о предполагаемых продажах компании несколькими разными датами.
Состав документов, которые могут создавать записи в регистре накопления, задается разработчиком в процессе создания прикладного решения:
Конструктор движений
Алгоритмы, по которым формируются записи в регистре, описываются средствами встроенного языка в процедурах соответствующих документов. Система содержит конструктор движений, который помогает разработчику создавать алгоритмы проведения документа. Подробнее…
Уникальность записей
Система обеспечивает контроль уникальности записей, хранящихся в регистре накопления. Благодаря этому в регистре накоплений не может находиться двух записей, относящихся к одной и той же строке одного и того же документа.
Регистры остатков и регистры оборотов
Существует два вида регистров накопления: регистры накопления остатков и регистры накопления оборотов. Регистр накопления остатков позволяет хранить как итоговые значения ресурсов — остатки, так и изменения этих ресурсов — обороты. Регистр накопления оборотов является более «специализированным» видом регистра накопления и позволяет хранить только изменения ресурсов — обороты.
Существование регистра накопления оборотов связано с тем, что при автоматизации экономической деятельности существует большое количество ситуаций, когда требуется накапливать только обороты, а значения остатков не имеют смысла. Типичным примером использования регистра накопления оборотов является регистр Выручка и себестоимость продаж, хранящий информацию об объемах продаж:
Поскольку регистр накопления оборотов не накапливает остатки ресурсов, для него не имеет смысла «направление» движения ресурсов (приход или расход); накапливается только величина изменения ресурсов. Поэтому все записи регистра накопления оборотов отмечены одинаковыми пиктограммами.
Агрегаты
Для оборотных регистров накопления платформа поддерживает специальный механизм агрегатов, который позволяет значительно ускорить получение данных из регистров, содержащих большое количество записей — сотни тысяч и миллионы записей. Подробнее…
Форма списка и форма набора записей
Для того чтобы пользователь мог просматривать данные, содержащиеся в регистре накопления, система поддерживает форму представления регистра накопления — форму списка. Она позволяет выполнять сортировку и отбор отображаемой информации по нескольким критериям.
Система может автоматически генерировать эту форму. Наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо формы умолчанию, в том числе и форму набора записей, которая позволяет добавлять, изменять и удалять записи регистра сведений.
Что такое движения регистра и что такое регистратор
Регистры
Назначение регистров, запись движений, обращение к итогам, обращение к движениям, фильтрация движений, временный расчет, запрос к регистру | Автор статьи: Волшебник | Редакторы: Mendel_UA Последняя редакция №5 от 31.10.10 | История URL: http://kb.mista.ru/article.php?id=197 |
В этой статье под словом «регистры» стоит понимать «регистры накопления». Прочие регистры, в частности регистры сведений имеют другой функционал.
Назначение регистров
Данные в регистры добавляются только при проведении документов. Сведения из регистров используются для формирования отчетов. Классическая схема использования регистров в 1С:Предприятие выглядит следующим образом:
Документы => Регистры => Отчеты
Измерения и ресурсы
Предположим, что регистр «Остатки товаров» должен содержать сведения о количестве и стоимости каждого товара на каждом складе. В идеологии системы 1С:Предприятие регистр такого вида представляет собой прямоугольную систему координат на одной оси которой находятся склады, на другой — товары, а на пересечении конкретного склада и конкретного товара находятся цифры количества товара и стоимости товара.
Регистр: Остатки товаров
Измерения: Товар, Склад
Ресурсы: Кол-во, Стоимость
С помощью методов встроенного языка мы можем легко получить ответы на вопросы:
* остаток конкретного товара на конкретном складе
* остаток конкретного товара на всех складах
* стоимость всех товаров на конкретном складе
Движения в регистрах
В табличном виде регистр ОстаткиТоваров представляется следующим образом:
Вид движения | Товар | Склад | Кол-во | Стоимость |
приход | Товар4 | Склад1 | 15 | 200 |
расход | Товар4 | Склад1 | 10 | 100 |
приход | Товар4 | Склад1 | 5 | 50 |
Виды регистров
В системе 1С:Предприятие возможно использование регистров двух типов: регистры остатков и регистры оборотов. Разница между ними понятна из их названия и заключается в характере хранимой информации: в регистрах остатков всегда хранится информация о конечном состоянии средств, а в регистрах оборотов, образно выражаясь, — как это состояние было достигнуто.
Если из регистра нужно быстро получать остаток чего-либо на текущий момент, тогда нужно сделать регистр остатков. Если из регистра нужно быстро получать приход или расход чего-либо за период, тогда нужно сделать оборотный регистр.
Регистры остатков
Рассмотрим в качестве примера отслеживание взаиморасчетов с покупателями товаров, которые производит или продает предприятие.
Для того чтобы оперативно получать информацию о взаимной задолженности предприятия и покупателя, потребуется регистр «Взаиморасчеты», в котором для каждого покупателя будет храниться сумма задолженности. При совершении хозяйственной операции состояние регистра будет соответствующим образом изменяться, каждый раз отражая текущее состояние взаиморасчетов. Регистр «Взаиморасчеты» — это регистр остатков.
Регистры оборотов
Однако, легко получить информацию об объеме закупок, совершенных данным покупателем за какой-либо период времени, из регистра «Взаиморасчеты» нельзя. Можно проанализировать все движения, имеющие отношение к данному покупателю, и вычислить общую сумму закупок. Но, когда необходимо получать эти сведения оперативно (например, по условиям договора при достижении определенного объема закупок покупателю должна предоставляться скидка), такой способ, конечно же, не подходит.
В этом случае решением проблемы может быть использование регистра оборотов. В таком регистре — назовем его «Объем закупок» — в разрезе покупателей будет храниться информация об объеме закупок (об обороте покупателя). При создании регистра оборотов можно указывать, с какой периодичностью будет накапливаться информация: день, неделя, месяц и так далее.
Теперь, при совершении хозяйственных операций, необходимо будет изменять не только состояние регистра «Взаиморасчеты», но и регистр «Объем закупок». В этот регистр при совершении клиентом каждой покупки будет заноситься информация о сумме покупки. В результате в регистре «Объем закупок» будет постоянно накапливаться информация об общем объеме закупок клиента.
Основы программирования
Регистры, используемые в примерах:
Оборотный регистр Доходы
Измерения: Клиент, Товар
Ресурсы: Доход
Реквизиты: нет
Периодичность: День
Хранит доходы от продаж за день в разрезе клиентов и товаров.
Регистр остатков Товары
Измерения: Товар, Склад
Ресурсы: Количество, Стоимость
Реквизиты: нет
Хранит остатки товаров на каждом складе в количественном и суммовом выражении.
Запись движений в регистр остатков
Методы ДвижениеПриходВыполнить и ДвижениеРасходВыполнить
Запись движений в оборотный регистр
(только при проведении документа)
2. Метод ДвижениеВыполнить
Примечание: Если сумма или количество в движении будет отрицательным, то это движение будет расходом, иначе приходом.
Обращение к итогам регистра
2-й способ. Выгрузка итогов в таблицу значений
Обращение к итогам оборотного регистра
3. Метод СводныйИтог
Могут быть указаны не все измерения. Фиксируются только указанные измерения.
4. Метод СводныеИтоги
Могут быть указаны не все измерения. Фиксируются только указанные измерения.
3. Метод СводныйОстаток
Могут быть указаны не все измерения. Фиксируются только указанные измерения.
4. Метод СводныеОстатки
Пример:
Обращение к движениям регистра
Фильтрация движений и итогов
1. Метод УстановитьФильтр
2. Метод УстановитьЗначениеФильтра
3. Метод ВыбратьДвиженияДокумента
4. Метод ВыбратьДвиженияСОстатками
Применяется только для регистра остатков.
Временный расчет регистров
Временный расчет регистров требуется, если нужно выбрать итоги или движения на определенную дату. По умолчанию итоги регистров выдаются на Точку актуальности.
1. Метод РассчитатьРегистрыНа
Рассчитать все регистры с установленным флагом временного расчета на начало события.
(на начало даты или на момент до проведения документа)
2. Метод РассчитатьРегистрыПо
Рассчитать все регистры с установленным флагом временного расчета на конец события.
(на конец даты или на момент после проведения документа)
Запрос к регистру
В запросах к регистрам применяются функции НачОст, КонОст, Приход, Расход. В запросах к оборотным регистрам обязательно указывается Период.
Объект 1С «Регистры накопления»
Иначе говоря, это прикладные объекты конфигурации, которые позволяют оперативно фиксировать и хранить движения каких-либо активов или пассивов предприятия.
Регистр накопления представляет собой таблицу с информацией, в которой собраны все движения определенных документов (поступления, списания или обороты).
Регистр накопления образует многомерную систему измерений и позволяет «накапливать» числовые данные в разрезе нескольких измерений. Например, в таком регистре можно накапливать информацию об остатках товаров в разрезе номенклатуры и склада, или информацию об объемах продаж в разрезе номенклатуры и подразделения компании.
Остаточный регистр (Остатки) хранит движения, а также исходя из них, остатки после каждого движения. Остаточные регистры накопления используются, например, для учета товаров на складах.
С точки зрения табличной модели регистр накопления содержит:
При формировании структуры регистра накопления обязательно должен быть назначен регистратор, а также создан хотя бы один ресурс.
Стандартные реквизиты регистра накопления 1С:
Уникальность записей объекта 1С «Регистры накопления»
Система обеспечивает контроль уникальности записей, хранящихся в регистре накопления. Благодаря этому в регистре накоплений не может находиться двух записей, относящихся к одной и той же строке одного и того же документа.
Уникальность записей в таблице движений регистра накопления определяется полями «Регистратор» и «Номер строки».
Регистры накопления всегда подчинены документу-регистратору. Поэтому среди их стандартных реквизитов всегда есть «Регистратор».
Функциональные возможности регистра накопления 1С
Основными функциональными возможностями, которые предоставляет регистр накопления разработчику, являются:
Для регистров накопления может быть включен режим разделения итогов:
Если разделение включено, то в таблицу итогов регистра будет добавлена дополнительная колонка со значением типа «Число», которая будет играть роль разделителя остатков данных в случае одновременной записи в регистр двумя документами.
Разделение данных увеличивает параллельность вычислений за счет уменьшения времени блокировки регистра на чтение, что оправданно на нагруженных системах.
Структура объекта 1С «Регистры накопления»
Информация в регистре накопления хранится в виде записей, каждая из которых содержит:
Разрезом учета могут являться, например, склад, номенклатура, характеристика номенклатуры, серия номенклатуры, качество.
Задав интересующие нас измерения, мы можем в любой момент получить количество — ресурс.
В разрезе разных измерений в дальнейшем, например, можно получать остатки на определенную дату.
Особенности проектирования регистра накопления:
Например, для регистра «Свободные остатки», который имеет следующую структуру:
записи, производящие изменение ресурсов регистра в базе данных, будут выглядеть следующим образом:
Набор записей регистра накопления
Набор записей всегда привязан к определенному документу-регистратору (т.е. определяется документом-регистратором ), поскольку независимых регистров накопления быть не может. Оперируя набором записей, можно эти данные считывать с базы, удалять, изменять, и при определенных условиях добавлять. При записи обычно выполняется замещение всех имеющихся в базе данных записей по данному условию на записи, содержащиеся в наборе. Если записи не замещаются, то после выполнения записи набор очищается.
Максимальное число записей в наборе 999 999 999.
Набор записей регистра накопления может использоваться:
Если попытаться прочитать данные в набор записей регистра накопления с установкой отбора по регистратору и измерению, будет выдана ошибка при попытке установить отбор по измерению, т.к. отбор возможен только по регистратору.
Важно! Отбор может устанавливаться только на равенство.
Вместе с каждой записью, находящейся в регистре накопления, можно хранить дополнительную произвольную информацию. Для этого служат реквизиты регистра накопления.
Регистратор регистра накопления
Записи имеют смысл только в том случае, если регистратор существует; при удалении документа-регистратора записи также будут удалены.
Тем не менее, программно можно сделать запись и без документа-регистратора (но при этом все равно подразумевается, что регистратор есть). Также, формирование записей может происходить не только в обработке проведения, но и по каким-то иным событиям, строгих ограничений тут нет.
Большинство алгоритмов создания движения в регистре накопления формируются при проведении документа в модуле объекта (процедура «ОбработкаПроведения»).
Связь объекта 1С «Регистры накопления» с регистратором
В общем случае значение поле «Период» может не совпадать с датой документа. Например, документ «План продаж» может внести в регистр накопления записи о предполагаемых продажах компании несколькими разными датами.
Состав документов, которые могут создавать записи в регистре накопления, задается разработчиком в процессе создания прикладного решения.
Особенности работы с регистраторами при проведении документов:
Конструктор движений объекта 1С «Регистры накопления»
Алгоритмы, по которым формируются записи в регистре, описываются средствами встроенного языка в процедурах соответствующих документов. Система содержит конструктор движений, который помогает разработчику создавать алгоритмы проведения документа.
Регистры остатков и регистры оборотов
Существует два вида регистров накопления:
Существование регистра накопления оборотов связано с тем, что при автоматизации экономической деятельности существует большое количество ситуаций, когда требуется накапливать только обороты, а значения остатков не имеют смысла. Типичным примером использования регистра накопления оборотов является регистр «Выручка и себестоимость продаж», хранящий информацию об объемах продаж.
Поскольку регистр накопления оборотов не накапливает остатки ресурсов, для него не имеет смысла «направление» движения ресурсов (приход или расход); накапливается только величина изменения ресурсов. Поэтому все записи регистра накопления оборотов отмечаются одинаковыми пиктограммами.
Агрегаты регистров накопления оборотов
Использование агрегатов позволяет аналитикам и менеджерам анализировать имеющуюся информацию, переключаясь между различными разрезами просмотра с небольшим временем отклика системы. При этом система использует накопленные агрегированные данные и всегда обеспечивает актуальность получаемых отчетов.
Для любого регистра может быть создано несколько агрегатов.
Платформа содержит специальный конструктор агрегатов, с помощью которого можно изменять состав агрегатов и настраивать их использование.
Конструктор агрегатов можно вызвать из окна редактирования оборотного регистра накопления (вкладка «Данные»).
Форма списка и форма набора записей объекта 1С «Регистры накопления»
Для того чтобы пользователь мог просматривать данные, содержащиеся в регистре накопления, система поддерживает следующие формы представления регистра накопления:
Наряду с этим разработчик имеет возможность создать собственные (произвольные) формы, которые система будет использовать вместо формы умолчанию.
Немного о регистрах в 1с
В любой конфигурации 1с 8.2 можно увидеть такой вид объектов, как регистры. Основное их предназначение — оптимизация получения данных для отчетов. Существует четыре вида реистров: регистры сведений, регистры накоплений, регистры бухгалтерии и регистры расчета. И хотя предназначены эти виды для решения разных задач, уже по тому, что они все называются «регистрами» можно догадаться, что они имеют и нечто общее.
Во-первых, как уже упоминалось, как объекты конфигурации они нужны для более быстрого считывания информации из базы данных, например в запросах. Регистры можно сравнить с каталогом книжной библиотеки (раньше их составляли на бумажных карточках). То есть это не только хранение информации (данных), но и ее систематизация (создание определенной структуры), когда в конкретный регистр попадают данные (например, из документов разного вида) и при необходимости ее можно достаточно быстро оттуда извлечь и вывести, например, в отчет или обработать иным образом. В общем случае основное использование регистров в 1с можно изобазить следующей схемой: «Документ — Регистр — Отчет», хотя существуют и исключения.
В-третьих, регистры имеют табличную структуру, но она отличается от структуры объектных таблиц. Так что вы не найдете таких классов, как РегистрСсылка или РегистрОбъект. Состав таблицы регистра зависит от его свойств.
В-четвертых, данные в регистры записываеются в виде наборов записей. Каждый набор состоит из одной или нескольких записей. При этом на запись в наборе нельзя сослаться или обратиться к ней. А также ни набор записей, ни запись в наборе не могут иметь состояния «пометка на удаление».
В-пятых, при обращении в запросах к регистрам для получения данных существует возможность обратиться не только к физическим таблицам регистра, но и к виртуальным таблицам, которые представляют из себя вложенный запрос, получающий данные по определенным параметрам. Параметры виртуальной таблицы задаются в зависимости от конкретных потребностей по получению данных из таблиц регистров.
Терперь поговорим об особенностях каждого вида регистров:
1. Регистры сведений
Пожалуй, самый простой вид регистра. В отличие от регистров другого вида, его ресурс может имень не только числовое значение, но и другой тип данных.
Имеет особое свойство, не используемое в других видах регистров — периодичность.
Может не иметь регистратора, то есть быть независимым, в этом случае записи производятся непосредственно в регистр, минуя регистрирующий документ (то самое исключение из общей схемы использования регистров в 1с). Тогда как остальные виды регистров должны иметь хотя бы один документ-регистратор.
Кроме того, данный вид регистра имеет автоматический контроль уникальности записей по периоду (периодичность, указанная в свойствах регистра) и измерениям. То есть среди записей регистра не может быть более одной записи с одинаковыми показателями период+измерение+регистратор(если он есть). Уникальность записей в других видах регистров осуществляется по регистратору.
2. Регистры накоплений
Предназначен для накопления числовых покателей (ресурсов) и делится на два подвида — Остатки и Обороты. Отличие между ними заключается в том, что Регистр накопления Остатки предназначен для получения информации о состоянии «на момент времени», а Обороты — информации о данных «за период».
Данные регистра накопления хранятся в БД в виде двух таблиц — таблица движений и таблица итогов. Обращение напрямую возможно только к таблице движений.
3. Регистры бухгалтерии
Похож на регистр накопления, но предназназначен для систематизации данных о бухгалтерских проводках. Впрочем он может использоваться не только для бухгалтерского, но и для любого другого вида учета.
4. Регистры расчета
Этот вид регистра предназначен не только для хранения, накопления и систематизации данных, но и для реализации сложных механизмов периодческих расчетов. Для этого в свойствах регистра расчета необходимо определить еще один объект 1с — план видов расчета. То есть работа регистра этого вида невозможна без определения для него конкретного плана видов расчета.
Можно сказать, что регистр расчета используется и для хранения информации о видах расчета, и для хранения результатов расчетов, и для промежуточных значений расчетов. Основное его предназначение в конфигурациях 1с — это расчеты начислений, например, заработной платы и других выплат сотрудникам. И для реализации этих задач при определении параметров регистра расчета, в нем возможно указать связь с графиком времени, что позволяет производить расчеты в зависимости от того времени, которое задано в этом графике. Сам график времени должен быть определен с помощью соответствующего регистра сведений.
Таким образом, можно сказать, что регистр расчета имеет в итоге самую сложную структуру по сравнению с другими видами регистров в 1с.