13.03.2016

Работаем с регистрами сведений

Автор: Белозерских Евгений

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

Структура1С.jpg

Теперь посмотрим какая структура таблицы SQL для этого регистра сведений

СтруктураРегистраSQL.jpg

Как видно, платформа помимо измерения и ресурса добавила поле для хранения периода записи (в нашем случае это день). А также индексы!
Виртуальные таблицы регистра, действительно виртуальные. Физических таблиц для них создано не было. Это и необязательно, т.к. данные получаются запросом, который в СУБД имеет не такой вид как на стороне 1С.

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

СрезПервыхПоследних.jpg

Три вложенных запроса, в одном из которых определяется минимальный (срез первых) либо максимальный (срез последних) период. Затем внутреннее соединение, которое возвращает только те записи из двух таблиц, которые удовлетворяют указанному критерию (в нашем случае соединение выполняется по измерению и полю периода). И... Вот пожалуй и "вся любовь"!

Теперь немного примеров работы для платформы 1С 8.х. Программное удаление данных регистра сведений
// Очистить регистр (удалить все записи)
НЗ = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
НЗ.Записать();

// Для периодического регистра дополнительно необходимо указать отбор по периоду
НЗ = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
НЗ.Отбор.Период.Установить(Дата);
НЗ.Записать();

// Для частичного удаления данных необходимо установить отбор по измерению
НЗ = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
НЗ.Отбор.Измерение.Установить(ЗначениеОтбора);
НЗ.Записать();
Добавление записей в регистр сведений
// Можно через набор записей
НЗ = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
// Для периодических установим отбор по периоду
НЗ.Отбор.Период.Установить(Дата);
// ОБЯЗАТЕЛЬНО устанавливаем отбор по измерениям, иначе все записи будут замещены новыми
НЗ.Отбор.Измерение.Установить(ЗначениеОтбора);

Запись = НЗ.Добавить();
Запись.Измерение = Значение;
Запись.Ресурс = Значение;
// Для периодических заполним период
Запись.Период= ТекущаяДата();
НЗ.Записать();

// Хотя проще через менеджер записей
МЗ = РегистрыСведений.ИмяРегистра.СоздатьМенеджерЗаписей();
МЗ.Измерение = Значение;
МЗ.Ресурс = Значение;
// Для периодических заполним период
МЗ.Период= ТекущаяДата();

МЗ.Записать();

Другие статьи

Запуск фонового задания в 1С

    Наглядный пример выполнения произвольного алгоритма в режиме фонового задания

Переопределение (подмена) формы при открытии

    Предлагаю рассмотреть пример того, как можно переопределить (подменить) открываемую форму на другую (произвольную)

Функциональные опции 1С 8.3 (Механизм, использование)

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

Общие реквизиты 1С 8.3

Общий реквизит – это реквизит, добавляемый к нескольким объектам конфигурации. Так же общий реквизит может использоваться как составная часть специального механизма разделения данных
 

Выбор файла 1С 8.3

Диалог выбора файла и отказ от модальности в 1С 8.3

Получение данных динамического списка 1С 8.3

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

Установка отбора в динамическом списке (1C 8.2, 8.3)

Рассмотрим пример программной установки отборов в динамических списках 1С

Представление объектов (ссылок) в 1С

Пара слов о том, как можно изменить получаемое представление объекта (ссылки) в 1С

Версия 8.3.7 и приятные новшества

Приветствую! В данном обзоре предлагаю рассмотреть некоторые новшества в механизмах платформы 1С:Предприятие версии 8.3.7.