Как система 1с предприятие 8 может хранить итоги для оборотного регистра накопления
Прикладные объекты в рабочей конфигурации программы 1С получили название «Регистры накопления». Они используются для накопления актуальной информации об итоговом наличии и промежуточном движении имущества, денежных средств и т.п. активов. Регистры накопления формируются данными, которые вводит пользователь в программу документами системы. Основная задача регистров – предоставление данных для отчётных форм.
Вид, тип, структура
Все данные хранятся в узлах системы. Оси системы представляют собой измерения регистра, а сами совокупные данные в узлах – это ресурсы конкретного регистра. Визуально регистр накопления – таблица, количество колонок которой соответствует сумме его измерений. Кроме параметров измерений и ресурсов регистр накоплений характеризуется набором реквизитов. Они позволяют подключать данные дополнительной информации. Сами реквизиты не оказывают влияния на значение ресурса, но могут быть частью анализа движения регистра.
Основные типы Регистров накопления в программе 1С:
- Регистры остатков
- Регистры оборотов
Методом встроенного языка 1С можно сформировать Остатки, выборка будет сделана на указанную временную позицию. Можно фильтровать данные в разрезе значений измерений. Можно получить Остатки в разрезе других указанных измерений. Обороты и регистры оборотов предназначены, чтобы хранить информацию, для которой само понятие «Остатки» лишено смысловой нагрузки.
Три категории полей Регистра накопления:
Период – это Измерение, также как и Регистратор и параметр «Номер строки». Но эти же величины могут служить и категорией Реквизиты, так как способны дать характеристику определённой записи. Такой параметр, как «Вид движения», будет всегда Реквизитом, так как способен только присваивать характеристику записи.
Остатки и Обороты: регистры накопления и виртуальные таблицы
Составные части Регистра накопления Остатков:
Информация в таблицы движения вводится пользователем вручную или генерируется в процессе проведения определённых документов в системе, возможна специальная обработка для заполнения таблиц движения.
Структура таблиц движения:
Период ?Регистратор ? Номер строки ? Вид движения ? ‹Измерения› ? ‹Ресурсы› ? ‹Реквизиты›
Итоговые таблицы содержат остатки в аналитике измерений с периодом месяц, с данными на начало периода.
Структура таблицы итогов:
Период ? ‹Измерения› ?‹Ресурсы›
Остатки в виртуальной таблице используют всегда таблицы итогов, реже таблицы движений.
Стратегия расчёта остатков:
- Проводится отбор ближайшего большего или равного момента, на который Остатки рассчитаны.
- Закрепляются имеющиеся Остатки из таблицы итогов.
- При несовпадении моментов времени, Остатки досчитываются по таблицам движений к данным таблицы итогов.
Обороты формируют виртуальную таблицу только из данных таблиц движений. Если нужны Обороты, то будут обрабатываться все данные о движении, независимо от наличия данных в итоговых таблицах.
Если задача получить виртуальную таблицу остатков и оборотов, то соответственно рассчитываться будут и Остатки, и Обороты. Способ работы такой таблицы зависит от наличия или отсутствия указаний о периодичности данных. Без указания периодичности расчёт проводится в формате единого запроса. Внутри запроса содержатся подзапросы 1С. Один из подзапросов отвечает за расчёт остатков на начало периода, второй вычисляет данные по оборотам за период, результаты объединяются и представляют собой единый результат. Если периодичность указана, расчёт ведётся следующим образом: сначала получают остатки на начало периода, затем вычисляют обороты с указанной периодичностью, только потом объединяются итоговые данные всех запросов.
Регистры Оборотов и Остатков, отличия
Обороты накапливаются в регистре оборотов, в регистре остатков содержатся только итоговые данные. По оборотному регистру нельзя узнать остатки, для его выражения есть только один формат виртуальной таблицы. Структура таблиц сама по себе схожа. Обороты хранятся с периодичностью месяц. Итоги формируются на каждую дату, когда было движение. Таблица оборотов использует информацию и из таблиц итогов, и из таблиц движений.
Агрегаты - это специальный механизм, реализованный в оборотных регистрах накопления и позволяющий значительно сократить время формирования отчетов, что особенно важно для больших информационных баз, содержащих сотни тысяч и миллионы записей в регистрах.
Для любого регистра может быть создано несколько агрегатов. Каждый агрегат - это специализированное хранилище, содержащее агрегированные данные регистра в различных разрезах, удобных для формирования отчетов в данной информационной базе.
Система автоматически оценивает интенсивность работы пользователей с тем или иными разрезами информации и на основе накопленной статистики выбирает оптимальный состав поддерживаемых агрегатов.
Таким образом, агрегаты рассчитываются в пользовательском режиме.
Использование агрегатов позволяет аналитикам и менеджерам анализировать имеющуюся информацию, переключаясь между различными разрезами просмотра с небольшим временем отклика системы. При этом система использует накопленные агрегированные данные и всегда обеспечивает актуальность получаемых отчетов.
Платформа 1С:Предприятие позволяет формировать итоги по регистрам накопления и регистрам бухгалтерии, сворачивая данные по всем комбинациям измерений с периодичностью в месяц (управление итогами регулируется стандартной обработкой).
Для регистров накопления есть возможность использовать вместо итогов агрегаты. В этом случае данные будут также сворачиваться, но:
- только по комбинациям измерений, выбранным разработчиком;
- с периодичностью, выбранной разработчиком (в день, месяц, квартал, полугодие, год, непериодически).
Заполнение агрегатов при изменении данных осуществляется при обновлении агрегатов с помощью регламентного задания.
В режиме 1с Предприятие механизм управления агрегатами доступен в меню "Главное меню - Все функции. - Стандартные - Управление итогами".
Конструктор агрегатов 1С
Платформа содержит специальный конструктор агрегатов, позволяющий:
- создать и настроить агрегаты, которые будет использовать регистр накопления ;
- изменять состав агрегатов и настраивать их использование.
Вызов конструктора агрегатов 1С:
- из окна редактирования оборотного регистра накопления;
- из дерева конфигурации, из контекстного меню оборотного регистра накопления.
Из окна редактирования оборотного регистра накопления:
Из дерева конфигурации, из контекстного меню оборотного регистра накопления:
Если для регистра накопления недоступен конструктор агрегатов, то необходимо изменить настройку регистра накопления "Вид регистра" - "Обороты".
Для отображения в конструкторе списка оптимальных агрегатов необходимо:
- произвести расчет оптимальных агрегатов в 1С:Предприятие (кнопка "Получить оптимальные агрегаты" обработки "Управление итогами");
- сохранить их в xml-файл;
- загрузить их в конструкторе.
Особенности использования агрегатов 1С:
- Конструктор агрегатов предназначен для формирования агрегатов только регистров накопления.
- Конструктор агрегатов может быть вызван:
- по кнопке "Агрегаты" в окне редактирования объекта конфигурации на закладке "Данные";
- в пределах дня;
- в пределах месяца;
- в пределах квартала;
- непериодический.
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
С прикладной точки зрения, полагаю, понятно что такое итоги, хотелось бы рассмотреть что это значит с точки зрения базы данных в СУБД, понять как и где они хранятся, когда создаются и пересчитываются. Сразу хочу отметить что я буду рассматривать именно итоги регистров накопления, а не регистров бухгалтерии. В принципе, сказанное о регистрах накопления можно перенести и на регистры бухгалтерии, но их структура хранения несколько сложнее.
Немного теории
Не вдаваясь в подробности, скажу что итоговые данные используются при обращении к виртуальным таблицам регистров накопления, а если быть точнее, только в случае если выбираемые данные кратны месяцу, в ином случае будет задействована основная таблица регистра.
Начнем с того что объект метаданных «Регистр накопления» в СУБД представлен совокупностью двух таблиц: основной таблицы, куда пишутся движения, и таблицы итогов, которая содержит помесячные итоговые записи в разрезе набора измерений. В случае с оборотным регистром, итоговую таблицу правильнее называть «Таблицей оборотов», а для остаточного регистра она так и называется «Таблица итогов», тем не менее я буду обе таблицы называть итоговыми.
Представление архитектуры метаданных вида «Регистр накопления» в СУБД
Для регистра вида «Обороты» в итоговой таблице содержатся итоговые записи оборотов за месяц, а для регистров накопления вида «Остатки» итоговая таблица содержит итоги на конец месяца и так называемые «текущие итоги» (итоги на +∞, в 1С:Предприятие за +∞ формально принят конец 3999 года). Еще одним важным условием наличия итоговых записей в остаточных регистрах является установленный период рассчитанных итогов: итоговых записей по периоду больше этой даты в таблице итогов не будет, сделано это для оптимизации проведения документов (ускорения и увеличения параллельности работы).
Полагаю, многим известны приведенные факты, но, на мой взгляд, куда интереснее увидеть это «вживую».
Подготовка базы данных
Создадим новую информационную базу, в которую добавим:
- Перечисление «ПриходРасход» с двумя значениями: «Приход», «Расход»
- Документ «ДокументПриходРасход» с реквизитами: «ПриходРасход» (перечисление «ПриходРасход»), «Измерение1» (строка, длина 10), «Измерение2» (строка, длина 10), «Сумма» (число, длина 15, точность 2)
- Регистр накопления вида «Остатки» с измерениями «Измерение1» и «Измерение2» и ресурсом «Сумма». Их типы аналогичны реквизитам документа «ДокументПриходРасход», который будет регистратором данного регистра
- Регистр накопления вида «Обороты» с измерениями «Измерение1» и «Измерение2» и ресурсом «Сумма». Их типы аналогичны реквизитам документа «ДокументПриходРасход», который будет регистратором данного регистра
Документ должен делать движения в регистры накопления по соответствующим измерениям и ресурсам. Вид движения (для остаточного регистра) и знак суммы (для оборотного регистра) должны соответствовать значению реквизита «ПриходРасход» из документа.
Метаданные конфигурации
Хранение в базе данных
Для того чтобы увидеть структуру хранения наших регистров, воспользуемся обработкой из статьи «Получение информации о структуре хранения базы данных в терминах 1С:Предприятие и СУБД», с ее же помощью мы узнаем имена таблиц базы данных в СУБД.
Структура хранения регистров накопления в СУБД
Далее, в информационной базе проведем несколько документов в разных месяцах, например, так:
Проведенные документы
А сейчас перейдем в Management Studio и создадим запрос к таблицам итогов остаточного и оборотного регистров (имена таблиц в СУБД, как писал выше, можно узнать из обработки получения информации о структуре хранения). В моем случае, запрос будет выглядеть следующим образом:
Вы сотрудник франчайзи "1С"? Может быть, Вы даже обновляете клиентов и следите за работоспособностью их информационных баз? Или Вы работаете в штате компании и работоспособность систем на базе платформы "1С" лежит на Ваших плечах? Если ответа "ДА" хотя бы на один вопрос, то эта статья для Вас!
Сегодня мы рассмотрим, с одной стороны, очень простой вопрос обслуживания итогов в регистрах. Но с другой стороны - вопрос простой, но настраивать подобающее обслуживание итогов часто никто не торопится.
Не могу точно сказать для кого эта статья - для новичков или опытных программистов. Или администраторов? Думаю, что решать только Вам!
Как они работают
Платформа "1С" использует механизм итогов для оптимизации получения данных в запросах за большой период. Механизм итогов доступен в регистрах накопления, бухгалтерии и сведений. Именно благодаря ему мы можем формировать отчеты достаточно быстро за большой период времени. Не всегда, конечно, но это уже другая история :).
Но, прежде чем говорить об обслуживании итогов, давайте поверхностно рассмотрим их работу для каждого вида регистра. Мы не будем погружаться в особенности их работы на стороне СУБД, аспекты блокировок и другие связанные темы. Только принцип работы, только суть!
Регистры сведений
Начнем с простого - итогов регистров сведений. С некоторого момента, платформа поддерживает итоги среза первых / последних записей. Например, в последних типовых конфигурациях для регистра "Курсы валют" включены итоги среза последних. Под спойлером Вы найдете пример как данные в регистре отражаются на итогах этого регистра.
Вот такие данные содержатся в самом регистре.
И вот такие данные будет содержать таблица итогов.
Все просто - в итогах хранятся последние записи по периоду в разрезе измерений. Для регистра сведений "Курсы валют" это "Валюта".
Все логично - срез последних записей хранит последние по периоду записи в разрезе измерений регистра. При этом в итогах хранятся данные как измерений, так и ресурсов, и реквизитов.
По такому же принципу работают итоги среза первых, только хранят они, внезапно, срез первых записей.
Регистры накопления
Итоги регистров накопления уже интересней, чем у регистров сведений. О внутренних механизмах платформы и принципа работы с итогами Вы можете узнать здесь и вот тут, а также на сайте ИТС. А сейчас рассмотрим лишь основное. Во-первых, регистры накопления бывают двух видов: оборотов и остатков. От вида регистра также зависит принцип построения и использования итогов.
Регистр оборотов
Для примера возьмем регистр накопления "Реализация услуг" из типовой конфигурации "Бухгалтерия предприятия 3.0". Под спойлером пример данных в регистре и полученные итоги.
Это пример данных.
Движения регистра сформированы в период с марта по май 2019 года. Итоги в этом случае содержат сгруппированные данные по измерениям.
Итоги содержат сгруппированные данные по месяцам, а период записи - начало месяца.
Таким образом, итоги оборотного регистра накопления содержат сгруппированные данные по измерениям на каждый месяц. Позволяют получать данные за период наиболее оптимальным способом, ведь записей читать придется меньше, иногда значительно меньше.
Регистр остатков
В качестве примера остаточного регистра возьмем "НДС предъявленный". Пример снова под спойлером.
Вот пример данных регистра "НДС предъявленный". Некоторые поля убраны (пустые, служебные, реквизиты регистра). Правильность данных с прикладной точки зрения не гарантируется :).
Движения сформированы с апреля по июнь 2019 года. Соответственно, итоги в этом случае будут хранить остатки на конец каждого месяца по комбинациям измерений. При этом итоги за май будут записаны на начало дня 1 июня.
В этом случае, на самом деле, тоже все просто:
- На начало мая имеем остаток от операции прихода в апреле.
- На начало июня сохраняется остаток с апрельской операции, а также добавляется строка с остатком от операции в мае. Именно поэтому в июньских остатках две записи.
- В июне был сделан расход, которых закрыл остаток по первой операции, а также расход с частичным закрытием второй операции. Поэтому в итогах добавлена запись по оставшейся сумме.
Кроме того, есть текущие итоги, которые сохраняют информацию об остатках на самую последнюю дату. В таблице итогов они хранятся с датой "01.11.3999" и позволяют получить информацию об остатках на самый последний момент времени, который может быть зафиксирован в регистре.
Таким образом, итоги по остаткам хранятся на начало месяца и отражают их состояние за предыдущий период. Очень удобно и эффективно.
Итоги по остаткам используются очень часто и позволяют эффективно получать информацию о текущем состоянии каких-либо показателей (остатки номенклатуры, состояние взаиморасчетов и другое).
Регистры бухгалтерии
Не менее интересным объектом с поддержкой хранения итогов является регистр бухгалтерии. Это настоящий рекордсмен по количеству таблиц с итогами. Возьмем для рассмотрения типовой регистр "Хозрасчетный" в той же "Бухгалтерии предприятия 3.0". Всего в регистре можно насчитать 5 таблиц с итогами:
Итоги между счетами - для хранения итогов оборотов между корреспондирующими счетами
Чтобы не углубляться сейчас во внутренние механизмы регистра, отметим лишь, что в таблице итогов между счетами хранятся итоги только по оборотам. В остальных таблицах итогов хранятся итоги и по оборотам, и по остаткам. Также регистр бухгалтерии поддерживает текущие итоги, которые работают практически также, как и в регистре накопления.
Теперь Вы знаете на сколько большим по размеру и тяжелым по использованию может быть регистр бухгалтерии. Ведь при формировании проводок платформе требуется поддерживать большое количество таблиц с итогами. А представьте что бы было, если план счетов поддерживал не три, а пять субконто!
Более подробную информацию об особенностях работы итогов регистра бухгалтерии Вы можете прочитать здесь.
Что же с обслуживанием
И так, мы быстрым шагом прошлись по механизму хранения итогов платформы, рассмотрели какие итоги бывают и у каких объектов. Что же здесь может такое случиться, что потребует обслуживания?
Самым "самообслуживаемым" объектом в части итогов является регистр сведений. Включили итоги по срезу последних и забыли. Ничего настраивать и обслуживать не нужно.
С регистром накопления и бухгалтерии дело обстоит иначе. Для остаточных регистров накопления и любого регистра бухгалтерии обязательно в начале каждого месяца необходимо устанавливать период рассчитанных итогов. Если этого не сделать, то итоги по остаткам просто не будут рассчитаны. Соответственно, и использоваться они не будут.
Во всех типовых конфигурациях имеется регламентное задание "Установка периода рассчитанных итогов" с расписанием на запуск каждое 5 число месяца в 01:00. Вот алгоритм обновления периода рассчитанных итогов.
Эта функция получена из модулей "Библиотеки стандартных подсистем" и находится в общем модуле "УправлениеИтогамиИАгрегатамиСлужебный".
Установка периода рассчитанных итогов выполняется только для остаточных регистров накопления и регистров бухгалтерии. Для этого вызывается метод "УстановитьМаксимальныйПериодРассчитанныхИтогов" для менеджера регистра. Для регистров накопления передается конец предыдущего месяца, а для регистров бухгалтерии конец текущего месяца.
Как проверить, что у Вас установлен актуальный период рассчитанных итогов? Самый простой способ - зайти в обработку "Управление итогами" через "Все функции -> Стандартные -> Управление итогами". Там выбрать полные возможности и в показанной таблице проверить дату в колонке "Период итогов".
Для регистров бухгалтерии это должен быть конец текущего месяца, а для остаточных регистров накопления - конец предыдущего месяца. Если даты обновлены, то все отлично. Если нет - значит либо еще не наступило 5 число месяца, либо регламентное задание по установке периода рассчитанных итогов у Вас не работает.
Но и это еще не все! Есть еще как минимум две операции, которые необходимо планировать для итогов:
Зачем их устанавливать? Если в базе хранятся данные за 10 лет, то вряд ли они все используются. Целесообразно проанализировать какие данные действительно используются и за какой период (например, только последние 5 лет) и ограничить период хранения итогов нужным значением. Данный подход похож на метод скользящего окна, который упрощает сопровождение больших объемов данных.
Вот и все основные операции обслуживания.
Заключение
Мы быстро пробежались по принципу работы механизма итогов платформы "1С" и рассмотрели основные направления работ по обслуживанию итогов. Список получился коротким:
Принципы разделения регистров накопления на оборотные и остаточные см. в статье.
- Количество измерений платформой не ограничивается
- Количество измерений при использовании таблицы итогов до 30
- Количество измерений при использовании агрегатов до 30
- Верны все варианты
В соответствии с ответами, число измерений для остаточных регистров не ограничено, а для оборотных ограничено 30-ю. На деле пруфов не нашлось, и для оборотных регистров можно добавить и более:
Вопрос 12.22 экзамена 1С:Профессионал по Платформе. Какое максимальное количество измерений можно определять для регистра накопления с видов Обороты?
- Количество измерений платформой не ограничивается
- Количество измерений при использовании таблицы итогов до 30
- Количество измерений при использовании агрегатов до 30
- Верны все варианты
Вопрос 12.27 экзамена 1С:Профессионал по Платформе. При определении вида регистра накопления следует учитывать:
- Зависимость показателей, хранящихся в ресурсах, от предыдущих состояний
- Зависимость показателей, хранящихся в ресурсах, от периода определения
- Наличие возможных записей с видом движения "Приход" и "Расход"
- Тип значения показателей, хранящихся в ресурсах
- Верны все перечисленные ответы
- Верны ответы 1,2,3
Вопрос 12.28 экзамена 1С:Профессионал по Платформе. Для получения информации об остатках накопленных средств можно использовать:
- Регистры накопления с видом "Остатки"
- Регистры накопления с видом "Обороты"
- Верны ответы 1 и 2
Вопрос 12.29 экзамена 1С:Профессионал по Платформе. Для получения информации об оборотах накопленных средств можно использовать:
- Регистры накопления с видом "Остатки"
- Регистры накопления с видом "Обороты"
- Верны ответы 1 и 2
Правильный ответ третий - остаточный регистр содержит данные и по оборотам, и по остаткам накопленным итогом.
- Регистр накопления с видом "Обороты" позволяет получить информацию об оборотах за период эффективнее, чем регистр с видом "Остатки"
- Регистр накопления с видом "Обороты" позволяет получить информацию об оборотах за период с такой же эффективностью, что и регистр с видом "Остатки", но при проведении документа запись в регистр будет происходить быстрее, т.к. не будет происходить расчет остатков
- Регистр накопления с видом "Обороты" повышает общую эффективность работы базы, т.к. информация об остатках не хранится, не пересчитывается, и, следовательно, уменьшается размер базы
Правильный ответ первый. Размер обрабатываемой таблицы меньше.
Вопрос 12.50 экзамена 1С:Профессионал по Платформе. Как система определяет обороты для регистра накопления с видом остатки?
- Оборотные данные для регистра накопления остатков система берет из таблицы итогов, в которой хранятся уже рассчитанные обороты
- Для получения оборотных данных необходимо включить использование агрегатов
- Оборотные данные для таких регистров не хранятся в системе, а вычисляются в момент обращения к системе за такими данными
Правильный ответ третий, обороты вычисляются как разница между итогами.
Вопрос 12.51 экзамена 1С:Профессионал по Платформе. Зачем существует регистр накопления оборотный, если в регистре накопления остатков есть возможность получения оборотов?
- Для использования в тех случаях, когда информация по остаткам не требуется
- Для расширения возможностей анализа оборотных данных
- Для ускорения процесса разработки
- Верны варианты 1 и 2
- Верны все варианты
Правильный ответ пятый. Во-первых, есть показатели, по которым остатки в принципе бессмысленны, например движения денег в разрезе статей; это обуславливает первый вариант. Во-вторых, предполагается, что остаточные регистры строятся с минимальной аналитичностью, соответственно требуются усилия, чтобы добыть из них данных. Это обуславливает второй и третий варианты.
Вопрос 12.52 экзамена 1С:Профессионал по Платформе. Для каких задач может использоваться механизм получения оборотных данных в регистре накопления с видом остатки?
Читайте также: