Регистр сведений 1с для чего нужны реквизиты

Регистр сведений

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

Структура

Информация в регистре сведений хранится в виде записей, каждая из которых содержит значения измерений и соответствующие им значения ресурсов.

Измерения регистра описывают разрезы, в которых хранится информация, а ресурсы регистра непосредственно содержат хранимую информацию. Например, для регистра сведений Цены товаров, который имеет следующую структуру:


Регистр сведений

записи, хранимые в базе данных, будут выглядеть следующим образом:


Регистр сведений

Вместе с каждой записью, находящейся в регистре сведений, можно хранить дополнительную произвольную информацию. Для этого служат реквизиты регистра сведений.

Периодичность

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


Регистр сведений

В этом случае к каждой записи регистра будет добавляться поле Период, хранящее дату, которой были внесены записи в регистр. Использование периодичности регистра сведений позволяет не просто хранить статические данные, но и отслеживать их изменение во времени.

Например, периодический регистр сведений Цены товаров может не только хранить информацию о том, какова цена на определенную номенклатуру сейчас, но и о том, как она изменялась в прошлом (или будет изменяться в будущем):

Подчинение регистратору

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


Регистр сведений

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

Например, изменение цен компании может производиться только определенным кругом лиц, и каждое такое изменение должно сопровождаться «бумажным» документом. В этом случае можно использовать режим подчинения регистратору, при котором изменение цен может быть выполнено только специальным документом — Изменение цен товаров.

Уникальность записей

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

В общем случае в формировании ключа записи будут участвовать значения регистратора, периода и значения измерений. Таким образом, например, в непериодическом регистре сведений Цены товаров с независимым режимом записи не может существовать двух записей о розничной цене конфет ассорти. Точно так же, как в периодическом регистре сведений Цены товаров, подчиненном регистратору, не может существовать двух записей о розничной цене конфет ассорти, внесенных одной и той же датой, одним и тем же документом Изменение цен товаров.

Формы

Для того чтобы пользователь мог просматривать и изменять данные, содержащиеся в регистре сведений, система поддерживает несколько форм представления регистра. Система может автоматически генерировать все нужные формы регистра. Наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо форм по умолчанию:

Форма списка

Для просмотра данных, содержащихся в регистре сведений, используется форма списка. Она позволяет выполнять навигацию по регистру, добавлять, помечать на удаление и удалять записи регистра. Форма списка позволяет выполнять сортировку и отбор отображаемой информации по нескольким критериям:


Регистр сведений

Форма записи

Для просмотра и изменения отдельных записей регистра сведений используется форма записи. Как правило, она представляет данные в удобном для восприятия и редактирования виде:


Регистр сведений

Функциональные возможности регистра сведений

Основными функциональными возможностями, которые предоставляет регистр сведений разработчику, являются:

  • создание, изменение и удаление записей;
  • выбор записей в заданном интервале по заданным критериям;
  • выбор записей по регистратору;
  • получение значений ресурсов записей, соответствующих указанному периоду и значениям измерений;
  • получение значений ресурсов наиболее ранних и наиболее поздних записей регистра, соответствующих указанному периоду и значениям измерений.

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

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

Основное предназначение регистров сведений в том, что в них должны храниться показатели аналитики. Например, у нас есть задача хранить виды топлива (АИ-92, АИ-95 и т.д.), но также и цену на этот вид топлива. Как это удобное всего организовать. Однозначно сами виды топлива необходимо хранить в каком-то справочнике. Так его и назовем – вид топлива. Но где же хранить цену на этот вид топлива? Самое первое решение в реквизите справочника.

Реквизит справочника

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

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

Сейчас мы и решим эту маленькую прикладную задачу: в нашей конфигурации есть два  справочника «Виды топлива» и «Поставщики топлива»

Справочники конфигурации

Необходимо организовать возможность хранения цены для каждого вида топлива с учетом поставщиков. Для этого в конфигураторе 1С создадим новый регистр сведений ЦеныНаТопливо.

Создание нового регистра сведений в конфигураторе 1С

На закладке Основные установим имя и синоним. Все остальное оставим как есть.

Регистр сведений 1С цены на топливо

Теперь на закладке данные создадим два измерения – ВидТоплива и ПоставщикТоплива, типы которых ссылки на соответствующие справочники.

Измерение регистра сведений 1С ВидТоплива

Измерение регистра сведений 1С ПоставщикТоплива

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

Установим для каждого измерения этот флаг.

Флаг ведущее для измерения регистра сведений ВидТоплива

Флаг ведущее для измерения регистра сведений ПоставщикТоплива

У нас непериодический регистр, и в нем два измерения ВидТоплива и ПоставщикТоплива это значит, что мы не сможем создать две записи с одинаковыми значениями полей ВидТоплива и ПоставщикТоплива. Программа выдаст ошибку. Что и разумно – не может быть две разных цены на один и тот же вид топлива у одного и того же поставщика. А если может, то это значит, что необходимо добавить еще один разрез (например, база поставщика).

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

Мы создадим ресурс – Цена (тип число 10,2).

Ресурс Цена регистра сведений

И всё. Сохраним конфигурацию и откроем этот регистр сведений и заведем какую-нибудь запись.

Записи регистра сведений

Если мы сейчас попробуем создать запись с точно таким же набором измерений, то возникнет ошибка: «Запись с такими ключевыми полями существует».

Создание дублирующей записи регистра сведений

Ошибка при создании дублирующей записи регистра сведений

И последний момент: поскольку мы у измерения ВидТоплива установили флаг «Ведущее», то у элемента справочника ВидыТоплива появилась команда на открытие регистра сведений «Цена на топливо»

Команда на открытие регистра сведений

Если мы в управляемом приложении 1С перейдем по этой команде, то увидим все цены для нашего вида топлива.

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

Продолжение темы регистров сведений читайте в следующих статьях:

Периодический регистр сведений 1С

Подчиненный регистр сведений 1С

Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Регистр сведений отличие Реквизита от Измерения

Я
   unTonee

11.02.09 — 12:52

Подскажите, пожалуйста, в чем различия назначения использования в регистре сведений Реквизита и Измерения?

  

Партнерская программа EFSOL Oblako

   unTonee

1 — 11.02.09 — 12:52

Тема по 1С:Предприятию 8.х

   unTonee

2 — 11.02.09 — 13:09

Текст вопроса, тоже другой: Подскажите, пожалуйста, в чем различия назначения использования в регистре сведений Реквизита и Ресурса?

   rotting

3 — 11.02.09 — 13:10

(2) Так скоро и сам себе ответишь

   dimoff

4 — 11.02.09 — 13:13

(2) Только логический. В ресурсы нужно пихать то что является результатом, а в реквизиты то что характеризует саму запись. Но реально и то и то получается одинаково.

   Новиков

5 — 11.02.09 — 13:16

(0) Инфа в рс хранится в виде ресурса, а тот разрез по которому ты ее хочешь получать — в измерении. Разница между реквизитом и ресурсом на практике — никакой. Только в словоблудии

   НЕА123

6 — 11.02.09 — 13:35

(5)

если верить СП, то есть разница.

   НЕА123

7 — 11.02.09 — 13:36

+(5)

СП

РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Имя регистра сведений>)

Выбрать (Select)

Вариант синтаксиса: Для периодического регистра

Синтаксис:

Выбрать(<Начало интервала>, <Конец интервала>, <Отбор>, <Порядок>)

Параметры:

<Начало интервала> (необязательный)

Тип: Дата, МоментВремени, Граница. Начало интервала, за который будут выдаваться записи периодического регистра сведений. Если не указан, то будут выдаваться записи с самого ранней включительно. Может задаваться значениями типа Дата, МоментВремени или Граница.

<Конец интервала> (необязательный)

Тип: Дата, МоментВремени, Граница. Конец интервала, за который будут выдаваться записи периодического регистра сведений. Если не указан, то будут выдаваться записи до самой поздней включительно. Может задаваться значениями типа Дата, МоментВремени или Граница.

<Отбор> (необязательный)

Тип: Структура. Задает поле и значение отбора открываемой выборки. Ключ структуры описывает имя поля, а значение структуры — значение отбора по этому полю. В качестве полей для отбора могут задаваться измерения или реквизиты, для которых в конфигураторе признак индексирования установлен в значение «Индексировать» или установлен признак «Ведущее». Вид сравнения может быть только Равно.

Важно! Структура может содержать только один элемент.

Если параметр не указан, то отбор не используется.

<Порядок> (необязательный)

Тип: Строка. Может содержать слово «Возр» или «Убыв», тогда стандартный порядок будет использоваться с указанным направлением.

Может содержать имя поля (реквизита или измерения, для которых указано индексирование) и слово «Возр» или «Убыв», тогда упорядочивание будет производится по указанному полю в указанном порядке.

Значение по умолчанию: «Возр»

Вариант синтаксиса: Для непериодического регистра

Описание:

Используется только для непериодического регистра

Синтаксис:

Выбрать(<Отбор>, <Порядок>)

Параметры:

<Отбор> (необязательный)

Тип: Структура. Задает поле и значение отбора открываемой выборки. Ключ структуры описывает имя поля, а значение структуры — значение отбора по этому полю. В качестве полей для отбора могут задаваться измерения или реквизиты, для которых в конфигураторе признак индексирования установлен в значение «Индексировать» или установлен признак «Ведущее».

Важно! Структура может содержать только один элемент.

Если параметр не указан, то отбор не используется.

<Порядок> (необязательный)

Тип: Строка. Может содержать слово «Возр» или «Убыв», тогда стандартный порядок будет использоваться с указанным направлением.

Может содержать имя поля (реквизита или измерения для которых указано индексирование) и через пробел слово «Возр» или «Убыв», тогда упорядочивание будет производится по указанному полю в указанном порядке.

В качестве значения параметра может быть задана строка «<Нет>» («<No>»). Это будет означать, что система выберет наиболее оптимальный порядок обхода такой выборки, который в общем случае не будет соответствовать порядку обхода по умолчанию.

Значение по умолчанию: «Возр»

Возвращаемое значение:

Тип: РегистрСведенийВыборка.

Описание:

Формирует выборку записей регистра сведений.

Пример:

Курсы = РегистрыСведений.КурсыВалют;

ОтборВалют = Новый Структура(«Валюта»);

ОтборВалют.Валюта = ВыбВалюта;

ВыборкаКурсовВалют = Курсы.Выбрать(,,ОтборВалют);

Пока ВыборкаКурсовВалют.Следующий() Цикл

   Сообщить(«Дата » + ВыборкаКурсовВалют.Период +

   » Валюта «+СокрЛП(ВыборкаКурсовВалют.Валюта) +

   «, Курс «+ ВыборкаКурсовВалют.Курс );

КонецЦикла;

   Mitriy

8 — 11.02.09 — 13:37

(5)+ справедливо только для РС…

   НЕА123

9 — 11.02.09 — 13:43

(8) почти согласен, но не знаю насчет построения индексов.

ну и из (7) нельзя (почему-то) делать отбор по ресурсам.

   Сергей-ХХХ

10 — 11.02.09 — 13:46

В ресурсе может быть периодическая инфа по измерениям. А вот периодичские измерения по ресурсу — это мистика, имхо. Как я понимаю, измерения — это заголовки колонок и строк, а ресурсы — это их содержимое.

   НЕА123

11 — 11.02.09 — 13:50

(10) тогда почему можно по реквизитам? они-то, вроде, по логике, вообще «довесок».

   Сергей-ХХХ

12 — 11.02.09 — 13:55

(11) Не ко мне вопрос. Как я понял, регистр сведений вообще мало отличается от справочника, только в нем есть периодические ресурсы, а в справочнике нет. А вообще, я тут думаю, что при логической конструкции: регистр(а,б).ресурс, где а и б — это реквизиты, мы получим ресурс «1». При конструкции регистр(а,с).ресурс, мы можем получить другой ресурс, например, «2». При этом по ресурсу «2» мы, наверное, получим а и с. Но в том случае, если нет ресурсов с таким же значением. Гы, сам стал запутываться )))

   aslambek

13 — 11.02.09 — 14:31

В ресурсы надо пихать то, что потом будешь суммировать, в реквизиты — дополнительную информацию.

   dimoff

14 — 11.02.09 — 14:33

(12) Регистр сведений отличается от справочника контролем

— уникальности измерений

— Отсутствием ссылок

— Возможностью получать срезы по периодам

Не знаю мало ли, по-моему очень много чем.

   ASU_Diamond

15 — 11.02.09 — 14:36

А в регистре накоплений в чём разница между этими понятиями?

   ShoGUN

16 — 11.02.09 — 14:36

(13) Если в РС ресурс — значение перечисления, или вообще строка — что ты там суммировать собираешься?

   ShoGUN

17 — 11.02.09 — 14:37

(15) В регистре накопления ресурс может быть только числовым и по нему производится суммирование и хранятся итоги.

   aslambek

18 — 11.02.09 — 14:39

(16) Пихай это в реквизиты и не парься.

   ASU_Diamond

19 — 11.02.09 — 14:39

структура регистров унифицирована: у всех регистров есть измерения, ресурсы, реквизиты
просто в РС ресурс не несет такого смысла как в остальных имхо

   ShoGUN

20 — 11.02.09 — 14:41

(19) +1

(18) В РС тогда вообще должны быть только реквизиты.

   Shurjk

21 — 11.02.09 — 14:44

Вопрос — Что является ключом записи регистра сведений?

   dimoff

22 — 11.02.09 — 14:45

Комбинация измерений, естественно, плюс период для периодических измерений.

   ShoGUN

23 — 11.02.09 — 14:46

(22) Период можно доп. измерением считать.

   Shurjk

24 — 11.02.09 — 14:46

(22) Теперь понятна разница между ресурсами и измереняими?

+ (23) есть еще регистры подчиненные регистратору

   dimoff

25 — 11.02.09 — 14:49

(24) кому теперь понятна разница между ресурсами и измерениями и кому она была непонятна раньше?

   unTonee

26 — 11.02.09 — 17:07

Я уже разобрался! =)

Вот развернуйтый ответ:

http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=540995&threadtype=0

сообщение номер 540995

почитайте, там даже проиллюстрировано.

   НЕА123

27 — 11.02.09 — 17:14

(26)

да, нормально. только автор ветки http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=540995&threadtype=0, судя по его последнему посту, не понял сути.

  

unTonee

28 — 11.02.09 — 17:19

(27) Эт точна! =)
Сильно все упростил, и опять запутал сам для себя ситуацию — своим постом.

Вопрос Чем реквизит отличается от измерения — это понятно всем. А вот чем реквизит отличается от ресурса?

Регистр сведений – это вырожденный случай регистров. Поэтому у него «не все так», как у «настоящих» регистров (накопления, бухгалтерии, расчета). И чтобы не путаться дальше будем рассматривать все в несколько в упрощенном виде.

Сначала посмотрим, как работает «настоящий» регистр, регистр накопления.
Регистр простой, два измерения, один ресурс и один реквизит (рис. 1).

Допустим, в регистре есть четыре записи (рис. 2).

Это – основная таблица регистра, т.е. таблица, содержащая записи, которые были добавлены в регистр.
Вы можете получить записи этой таблицы и, естественно, отобрать их по любому из существующих полей (рис. 3).

«Функция» регистра накопления, грубо говоря, заключается в том, чтобы суммировать значения ресурсов. Причем это суммирование выполняется для всех различных значений измерений. То есть, если вы попросите «функцию» этого регистра, то получите следующий результат (рис. 4).

То есть значения ресурсов для записей, содержащих одинаковые значения измерений (в данном случае Значение1 и Значение2) будут просуммированы (9 + 1 = 10).
Понятно, что когда вы получаете функцию, невозможно получить какие-либо реквизиты, потому что, например, непонятно, как можно «сложить» Заметка99 и Заметка1?. Можно только «развернуть функцию», и посмотреть, из каких записей она сложилась, какие у этих записей реквизиты. Но сам результат «функции» не содержит информации о каждой из записей (рис. 5).

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

Теперь посмотрим на регистр сведений. Возьмем периодический регистр сведений с такой же структурой и такими же записями. Его основная таблица будет выглядеть следующим образом (рис. 6).

«Функцией» периодического регистра сведений является получение наиболее ранних или наиболее поздних записей, на некоторую дату по различным сочетаниям значений измерений. Например «функция» этого регистра на 29 число будет выглядеть следующим образом (рис. 7).

То есть для уникального сочетания значений измерений будет выбрана одна из существующих записей основной таблицы, в отличие от регистра накопления, в котором результатом функции являлась запись, не существующая в основной таблице (рис. 8).

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

Если же рассматривать непериодический регистр сведений, то у него вообще нет «функции». Можно только записать данные в его основную таблицу, и прочитать их. Несмотря на это он так же имеет измерения, ресурсы и реквизиты. Потому что данные в этот регистр заносятся по тем же правилам, как и во все другие регистры: не может быть двух записей, с одинаковыми значениями ключевых полей (измерений, в данном случае).
Первоисточник

Любой регистр можно представить в виде функции, возвращающей некоторое значение (значения) в зависимости от переданных параметров (параметра).

Измерения регистра описывают параметры этой функции.

Возвращаемое значение (значения) функции описываются ресурсами регистра.

Данные заносятся в регистр путем добавления записей. Реквизит — это просто некоторое поле, содержащее дополнительную информацию о записи.

При работе с регистром вы можете получать значения ресурсов, соответствующие значениям измерений, то есть «реализовывать» функцию, которую представляет собой регистр.

Или вы можете выбирать некоторые записи, содержащиеся в регистре, соответствующие значениям измерений или реквизитов. То есть анализировать исходные данные, «от которых» раcсчитывает свою функцию регистр.

Для «настоящих регистров» (накопления, бухгалтерии, расчета) получать значения ресурсов, указывая реквизиты, нельзя. И получив значения ресурсов (то есть «вычислив функцию регистра»), вы не сможете увидеть реквизиты.

Next Post

  • v8

  • Программисту 1C

Вт Май 18 , 2010

Как в языке запросов 1С используются временные таблицы. Что такое временные таблицы. Что такое виртуальные таблицы. В одном из последних релизов платформы 8.1 появилась возможность использовать в запросах временные таблицы. Что это такое и как их можно использовать? Рассмотрим пример, с которым наверное многие из Вас сталкивались — а именно […]

В статье рассмотрено описание и предназначение регистров сведений, а также примеры работы с регистрами сведений средствами встроенного языка 1С – создание и редактирование наборов записей, отдельных записей, работа с ключом записи.

Содержание

Регистры сведений в 1С 8

Что такое регистр сведений

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

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

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

Периодические регистры сведений позволяют получить информацию о срезе наиболее ранних или наиболее поздних записей.

Строки в многомерной таблице регистра сведений называются записями. Уникальность записей регистра сведений определяется как комбинация измерений и периода. В случае, если регистр сведений не периодический, то период будет не заполнен, и уникальные записи будут отличаться по комбинации измерений. Платформа не допускает создания двух записей с одинаковым набором измерений и периодом. Измерения и период образуют т.н. составной ключ, и называются ключевыми полями.

Записи в регистр сведений могут вноситься как вручную, независимо одна от другой, так и при помощи документов, единым набором. Документ, которым вносится запись в регистр сведений, называется регистратором.

Свойства регистра сведений. Основные настройки

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

Периодичность регистра сведений

Данное свойство отвечает за доступность стандартного реквизита Период. Периодичность может быть

  • В пределах секунды
  • В пределах дня
  • В пределах месяца
  • В пределах квартала
  • В пределах года

В случае, если регистр сведений подчинен регистратору (см. ниже), становится доступным еще один вариант периода – по позиции регистратора.

Поле Период входит в составной ключ записи; можно добавлять записи с одинаковым составом измерений, но с разным периодом. Если периодичность – по позиции регистратора, то дата документа может совпадать с точностью до секунды – все равно это будут разные записи, т.к. в этом случае позиция регистратора будет определяться как момент времени (Дата + ссылка на документ). В зависимости от выбранной периодичности, период записи будет автоматически приводиться к началу периода в свойстве Периодичность. Например, если указана периодичность “В пределах дня”, то к началу суток, если “В пределах месяца” – то соответственно к первому числу месяца, и т.д.

Режим записи регистра сведений 1С

Режим записи определяет, можно ли редактировать записи регистра сведений вручную, или они будут вноситься движениями документа-регистратора. Для регистров сведений с режимом записи “Независимый” можно указывать основной отбор для измерений. В случае, если при этом регистр сведений периодический, становится возможным указание флажка Основной отбор по периоду.

Что такое ведущее измерение и основной отбор?

Флаг Ведущее у измерения регистра сведений означает, то данная запись имеет смысл пока существует объект, ссылка на который хранится в данном измерении. Например, если удалить из базы данных сотрудника “Иванов Иван”, то автоматически из регистра сведений будут удалены все записи по тарифам, где в измерении “Сотрудник” был указан Иванов Иван. Если данный флаг не установлен, то при удалении объекта, записи остались бы в регистре с битой ссылкой на него.

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

Если регистр независимый, по этим измерениям будет устанавливаться регистрация изменений для плана обмена. Аналогично использование Основной отбор по периоду включает основной отбор для период для периодических регистров.

Проектирование структуры регистра сведений

Следует стараться избегать архитектурных решений, когда значение одного ресурса регистра сведений меняется значительно чаще чем значение другого. В этом случае целесообразно выделить такие ресурсы в отдельный регистр сведений. Это связано с тем, что в момент записи записываются все ресурсы, а не только измененный, что приводит к неоправданной нагрузке на СУБД.

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

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

Например, мы хотим знать, какие материально ответственные лица закреплены за тем или иным складским помещением. Если таких МОЛ более одного человека, то правильная архитектура регистра будет такая:

Измерения: МОЛ
Ресурсы: Склад

Если же нам требуется гарантировать, что у одного склада может быть только одно материально ответственное лицо, то состав регистра сведений будет следующий:

Измерения: Склад
Ресурсы: МОЛ

Примеры работы с регистрами сведений в 1С

Программная запись в регистр сведений 1С

Программно добавить записи в независимый регистр сведений можно двумя способами: при помощи менеджера записи, и при помощи набора записей.

//Использование менеджера записи регистра сведений
НоваяЗапись = РегистрыСведений.ТарифыРаботников.СоздатьМенеджерЗаписи();
//Сотрудник - это переменная, реквизит формы, параметр и т.п. с типом СправочникСсылка.Сотрудники
НоваяЗапись.Сотрудник = Сотрудник;
НоваяЗапись.ВидТарифа = Перечисления.ВидыТарифов.Почасовой;
НоваяЗапись.Тариф = 1500;
НоваяЗапись.Записать();

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

ЗаписьНабора = НаборЗаписей.Добавить();
ЗаписьНабора.Сотрудник = Сотрудник;
ЗаписьНабора.ВидТарифа = Перечисления.ВидыТарифов.Почасовой;
ЗаписьНабора.Тариф = 1500;

ЗаписьНабора = НаборЗаписей.Добавить();
ЗаписьНабора.Сотрудник = Сотрудник;
ЗаписьНабора.ВидТарифа = Перечисления.ВидыТарифов.ПоДням;
ЗаписьНабора.Тариф = 6000;

НаборЗаписей.Записать();

Следует иметь в виду, что если не установить отбор для набора записей, при записи такого набора будет заменен весь регистр сведений!

Набор записей регистра сведений

Общий порядок добавления новых записей в регистр сведений:

  1. Создать набор записей
  2. Установить у него отбор по тем измерениям и периоду (если регистр периодический), по которым нужно добавить новые записи
  3. Добавить в набор необходимое количество новых записей
  4. Записать набор записей

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

// работа с набором записей
	
//создание набора записей
НаборТарифы = РегистрыСведений.ТарифыРаботников.СоздатьНаборЗаписей();
 
//количество записей набора
Колво = НаборТарифы.Количество(); //0
 
//чтение набора записей из базы
//если не вызвать метод Прочитать и не добавить записи, то запишется пустой набор записей!
НаборТарифы.Прочитать();
Колво = НаборТарифы.Количество(); //вернет количество записей в наборе
 
//добавление записей
ЗаписьНабора = НаборЗаписей.Добавить();
ЗаписьНабора.Сотрудник = Сотрудник;
ЗаписьНабора.ВидТарифа = Перечисления.ВидыТарифов.ПоДням;
ЗаписьНабора.Период = ТекущаяДата();
ЗаписьНабора.Тариф = 6000;
 
//выгрузка в таблицу значений
ТаблицаТарифов = НаборТарифы.Выгрузить();
 
//удаление всех записей набора
НаборТарифы.Очистить();
 
//загрузка из таблицы значений
НаборТарифы.Загрузить(ТаблицаТарифов);
 
//удаление первой записи набора
НаборТарифы.Удалить(0);
 
//выгрузка одной колонки в массив
МассивТоваров = НаборТарифы.ВыгрузитьКолонку("Сотрудник");

//загружаем обратно
НаборТарифы.ЗагрузитьКолонку(МассивТоваров, "Сотрудник");
 
//сумма всех значений ресурса, если его тип содержит тип Число
Итог = НаборТарифы.Итог("СуммаТарифа");
 
//запись набора
НаборТарифы.Записать();

Изменение записей регистра сведений

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

Изменим, например, все часовые оклады, добавив 10%.

//Изменение записей регистра сведений
НаборЗаписей = РегистрыСведений.ТарифыРаботников.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ВидТарифа.Установить(Перечисления.ВидыТарифов.Почасовой);
НаборЗаписей.Прочитать();
//Переберем в цикле все записи набора
Для Каждого ЗаписьНабора из НаборЗаписей Цикл
	//Добавим 10%
	ЗаписьНабора.Тариф = ЗаписьНабора.Тариф*1.1;
КонецЦикла;
НаборЗаписей.Записать();

Удаление записей регистра сведений

//Удаление записей из регистра сведений

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

//2. Очистить регистр сведений программно
НаборЗаписей = РегистрыСведений.ТарифыРаботников.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
//Все записи регистра сведений будут удалены

//3. Выборочное удаление записей по какому-нибудь условию
//Здесь рассмотрим пример обработки записей с учетом значения реквизитов
//Наложить отбор непосредственно на реквизиты нельзя, поэтому следует использовать другой способ
НаборЗаписей = РегистрыСведений.ТарифыРаботников.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ВидТарифа.Установить(Перечисления.ВидыТарифов.Почасовой);
НаборЗаписей.Прочитать();
//Переберем в цикле все записи набора
МассивЗаписейКУдалению = Новый Массив;
Для Каждого ЗаписьНабора из НаборЗаписей Цикл
	Если ЗаписьНабора.Примечание = "Служебная запись" Тогда
		МассивЗаписейКУдалению.Добавить(ЗаписьНабора);
	КонецЕсли;
КонецЦикла;
//Вторым циклом удалим ненужные записи из набора регистра сведений
Для Каждого ЗаписьКУдалению Из МассивЗаписейКУдалению Цикл
	НаборЗаписей.Удалить(ЗаписьКУдалению);
КонецЦикла;
НаборЗаписей.Записать();

Менеджер записи регистра сведений

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

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

Если ЗаписьМенеджер.Выбран() Тогда
	ЗаписьМенеджер.Тариф = 7000;
	ЗаписьМенеджер.Записать();
КонецЕсли;

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

Ключ записи регистра сведений

// создать ключ записи
//пустой ключ	
ПустойКлюч = Новый("РегистрСведенийКлючЗаписи.ТарифыРаботников");
//используя менеджер
ПустойКлюч = РегистрыСведений.ТарифыРаботников.ПустойКлюч();
 
//ключ на определенную запись регистра
ЗначенияКлюча = Новый Структура;
ЗначенияКлюча.Вставить("Период", Дата(2021,01,31));
ЗначенияКлюча.Вставить("Сотрудник", СсылкаНаСотрудника);
ЗначенияКлюча.Вставить("ВидТарифа", Перечисления.ВидыТарифов.ПоДням);
КлючЗаписи = РегистрыСведений.ТарифыРаботников.СоздатьКлючЗаписи(ЗначенияКлюча);

Изменение записей в регистр сведений с подчинением регистратору

Рассмотрим пример. Допустим, у нас есть документ “Назначение материально ответственных лиц”, в котором мы в табличной части указываем склад и соответствующее ему МОЛ. Этот документ записывает движения в регистр сведений МОЛПоСкладам, со следующими настройками:

  • Измерения: Склад, тип СправочникСсылка.Склады
  • Ресурсы: МОЛ, тип СправочникСсылка.Сотрудники
  • Реквизиты: Примечание, тип Строка(100)
  • Периодичность: в пределах месяца
  • Режим записи: Подчинение регистратору

Для изменения записей регистра сведений, подчиненного регистратору, нужно иметь ссылку на документ-регистратор. После этого необходимо получить движения объекта по этой ссылке, по нужному регистру. Далее мы получаем набор записей, и работа с ним аналогична работе при использовании метода СоздатьНаборЗаписей. Для того чтобы изменить движения документа, также следует вызвать метод Прочитать. Второй вариант – заново добавить нужные записи в движения, в этом случае новый набор полностью заменит старый.

ОбъектРегистратор = СсылкаНаДокумент.ПолучитьОбъект();
ДвиженияПоРегистру =ОбъектРегистратор.Движения.МОЛПоСкладам;
ДвиженияПоРегистру.Прочитать();
Для Каждого ЗаписьДокумента Из ДвиженияПоРегистру Цикл
	ЗаписьДокумента.Примечание = "Запись обработана программно";
КонецЦикла;
ДвиженияПоРегистру.Записать();

Примеры работы с периодическим регистром сведений

Периодический регистр сведений позволяет получать данные о самых первых и самых последних записях. Для этого платформа предусматривает две виртуальные таблицы – СрезПервых и СрезПоследних. В определенных случаях можно включить итоги для среза первых и/или последних. Это может многократно ускорить получение данных, так как при этом будут созданы физические таблицы, откуда данные будут извлекаться гораздо быстрее, чем из виртуальных.

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

Получить самые ранние записи (Срез первых)

Получим самые ранние записи тарифов с видом тарифа “ПоДням”

//Как получить самые первые записи
Отбор = Новый Структура("ВидТарифа", Перечисления.ВидыТарифов.ПоДням);
СрезПервых = РегистрыСведений.ТарифыРаботников.СрезПервых(ДатаСреза, Отбор);
//Получим таблицу значений со структурой колонок, аналогичной структуре регистра сведений
//В результат попадут наиболее ранние записи регистра, соответствующие установленным значениям ключевых полей.
//Записи подбираются для каждой комбинации из всех имеющихся значений измерений регистра.
//При этом, если есть записи с датой реньше, чем начало периода, они учитываться не будут.
Для Каждого СтрСреза Из СрезПервых Цикл
	Сообщить(СтрШаблон("Самый ранний тариф по дням для сотрудника %1: %2", СтрСреза.Сотрудник, СтрСреза.Тариф)); 
КонецЦикла;

Получить самые поздние записи (Срез последних)

//Как получить последние записи регистра сведений на дату
//В случае работы с запросом, можно накладывать более сложные фильтры, и извлекать только необходимые данные,
// например, только сотрудника и тариф, без лишних полей
ЗапросПоследних = Новый Запрос("ВЫБРАТЬ
|	ПРЕДСТАВЛЕНИЕ(ТекущиеТарифы.Сотрудник) КАК Сотрудник,
|	ТекущиеТарифы.Тариф КАК Тариф
|ИЗ
|	РегистрСведений.ТарифыРаботников.СрезПоследних(&ДатаСреза, ВидТарифа = ЗНАЧЕНИЕ(Перечисление.ВидыТарифов.Почасовой)) КАК ТекущиеТарифы");
ЗапросПоследних.УстановитьПараметр(ДатаСреза, ДатаСреза);
Выборка = ЗапросПоследних.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	Сообщить(СтрШаблон("Текущий почасовой тариф для сотрудника %1: %2", Выборка.Сотрудник, Выборка.Тариф)); 
КонецЦикла;

Регистры 1С

Документы – суть ведения учета в 1С. Каждый документ имеет результат, например пришло товаров +10 шт.

Отчеты – позволяют смотреть результаты. Суммируют эти результаты и показывают пользователю.

Однако документов много и если бы приходилось суммировать их результаты, то это было бы слишком сложно. Поэтому придуман лучший способ!

Документы записывают свои результаты (называют «движения») в специальные таблицы – регистры 1с, которые сами суммируют результаты, чтобы отчет просто отобразил заранее посчитанные итоги.

Сегодня мы поговорим про регистры 1С и их использование.

Регистр 1с – это таблица, такая же как и в Excel, каждый документ пишет в регистр 1с одну или несколько строк своих движений (результатов) с каким-либо знаком – плюс или минус. Это значит, что итого регистра 1С изменилось на соответствующую цифру.

Документ, который записал движения в регистр 1С, называют Регистратор. Дата и время движения равны (в 99% случаев) дате документа. Дату движения называют Период.

Каждый регистр 1С учитывает обычно движения какого нибудь одного справочника. Например, регистр 1С Товары на складах – движения товаров (в терминах 1С «номенклатуры») – сколько поступило товаров на склад, сколько убыло. Регистр 1С Взаиморасчеты с контрагентами (покупателями и поставщиками) – движения договоров с контрагентами – сколько нам стал должен контрагент после покупки или сколько мы ему должны после оплаты. Справочник, в разрезе которого ведется регистр называют основным измерением (аналитикой) регистра 1С.

Конечно же никто не делает одно основное измерение к у регистра 1С. Ведь если мы учитываем движения товаров, то нам интересно не только какой товар уменьшился или прибавился, но и например, по какому складу. Поэтому всегда есть три-пять дополнительных измерений «на всякий случай», которые можно назвать дополнительной аналитикой регистра 1С.

Как документ проводится по регистрам?

Движения документа по регистрам 1С

Посмотрим как работают регистры 1С. Вот у нас есть документ поступления товаров, в котором мы видим, что поступил товар Масло на склад Главный.

С точки зрения логики и математики этот документ имеет результат:

Масло кремлевское, Главный склад +10 (шт)

Проверим – так ли это?

Этот пункт меню покажет нам все движения документа, которые он сделал по регистрам. Как мы видим, документ сделал движения по целой куче регистров 1С, в каждый из которых он записал разную информацию (в соответствии с назначением регистра 1С). По регистру 1С Товары на складах он сделал ту проводку, которую мы с Вами рассчитали.

Как же это выглядит в регистре 1С? Откроем регистр 1С через меню Операции.

Открылся регистр 1С. Данных в нем много. Сделаем отбор только по нашему документу.

В результате мы видим движение нашего документа по регистру 1С. Оно ровно совпадает с тем, что мы рассчитали вручную:

  • Плюс – вид движения (приход/расход)
  • Регистратор – наш документ
  • Активность – эта строка движения действительна (то есть не отключена)
  • Номенклатура, основное измерение
  • Склад, дополнительное измерение
  • Количество, ресурс (то есть цифра, которую мы считаем).

Если мы поставим отбор не по документу, а по номенклатуре (точно таким же образом), то мы увидим движения всех документов, которые трогали эту номенклатуру. Один документ – мы купили товар. Другой – продали. Итого естественно сам регистр 1С не показывает – для этого нужно использовать отчет или запрос.

Регистры 1С бывают разные (ниже мы обсудим это). Проводки по разным регистрам 1С выглядят тоже по разному. Мы сейчас смотрели проводки по регистру накопления 1С. Вот так выглядят проводки нашего этого же документа по бухгалтерскому регистру 1С, который работает на основании бухгалтерского (налогового) плана счетов 1С.

Зачем нужны регистры 1С

Регистры 1С бывают разных видов. Цель использования регистра 1С зависит от его вида.

  • Регистры сведений 1С Это обычная таблица, как в Excel. Она не имеет никаких движений (приходов/расходов). Регистр сведений 1С обычно используется для хранения дополнительных данных справочников. С помощью регистра сведений 1С можно организовать периодический реквизит справочника, как это делать мы обсуждали здесь.
  • Регистры бухгалтерии 1С С точки зрения пользователя учет ведется на бухгалтерском плане счетов. На самом деле учет ведется в таблице регистров бухгалтерии 1С, которые сделаны в разрезе плана счетов 1С.
  • Регистры накопления 1С (регистр остатков 1С) Таблица движения документов + и –, которая автоматически вычисляет итого на начало периода и итого на конец периода. Например движения товара Лопата было +10, а потом -8. Значит остаток на начало был 0, а остаток на конец стал 2.

    Регистр накопления 1С с видом «Остатки» обозначает, что будут хранится движения (приходы и расходы, которые также называют «Обороты») и дополнительно будут автоматически рассчитываться итоги (которые называют «Остатки»).

    Регистр остатков 1С используют в том случае, когда у справочника логически может быть остаток. Например, когда мы учитываем движения товаров, то мы будем использовать регистр остатков 1С – ведь мы можем сказать, что товара Лопата осталось 3 штуки.

  • Регистры накопления 1С (регистр оборотов 1С) Таблица движения документов + и -, которая не считает итого.

    Регистр оборотов 1С ничем не отличается от регистра остатков, за исключением того, что у него не рассчитываются автоматически остатки.

    Регистр оборотов 1С используют в том случае, когда у справочника логически не может быть остатка. Если нам надо учитывать продажи товаров, то мы будем использовать регистр оборотов.

    Например, продажи товаров были +10 (мы продали) а потом -2 (нам вернули). Мы не можем сказать что остаток продаж стал 8, потому что логически понятия остатка продаж не существует, мы скажем что итого оборота (сумма каждой строки оборота) стала 8.

  • Регистры расчетов 1С

    Таблица движений в разрезе видов расчета и периодов. Используется в начислении заработной платы (называют Сложные периодические расчеты).

Где находятся регистры 1С

Когда мы с Вами обсуждали документы, то мы говорили, что они обычно расположены в тех или иных меню.

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

Конечно же это не касается двух программистских меню. В толстом клиенте меню Операции (в интерфейсе пользователя с административными правами):

В тонком клиенте меню Все функции, которое аналогично меню Операции, но по умолчанию спрятано (см. пункт меню Сервис, чтобы его включить):

В конфигураторе регистры расположены в соответствующих ветках.

Как происходит работа с регистрами 1С

Как мы уже обсудили только что – документ «проводится» по регистрам 1С. Понятие процесса «проведение» — имеется ввиду запись документом в регистры 1С своих результатов. Как не сложно догадаться – если документ не проведен, то он ничего не записал в регистр 1С. Это используется для создания черновиков документов.

В списке документов в первой колонке отображается статус документа. Зеленая галочка – документ проведен. В следующих колонках отмечено по каким типам регистров 1С проведен документ (наличие этих колонок зависит от конфигурации). «У» управленческий учет – регистры накопления 1С. «Б» и «Н» бухгалтерский и налоговый учет – бухгалтерские регистры 1С.

Чтобы провести документ, нажмите на него в списке правой кнопкой и нажмите Провести.

Или в самом документе кнопки проведения. Также кнопка ОК записывает и проводит документ.

Проведение документа бывает оперативное (когда дата проводимого документа больше чем дата существующих документов) и неоперативное (дата меньше, например, вчера), последнее еще называют «работа задним числом». Подробнее об этом мы обсуждали в уроке про даты в 1С.

Проведение документа в коде (в программе) прописывается программистом. Для этого откройте модуль объекта любого документа (как это сделать мы обсуждали в уроке про модули 1С). Найдите строку вида «Процедура ОбработкаПроведения(». Раскройте крестик и Вы видите программу проведения этого документа.

    Настройка проведения документа происходит следующим образом:

  • В конфигураторе, в документе, на закладке Движения необходимо галочками проставить те регистры 1С, по которым будет проведен документ.

    После этого нажмите кнопку Конструктор движений. Эта кнопка генерирует код (программу) для указанной выше процедуры ОбработкаПроведения(). Поэтому Вы должны использовать или эту кнопку или писать код вручную, так как эта кнопка затирает написанный вручную код.

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

    Задача проста – Вы видите справа вверху реквизиты документа, слева внизу реквизиты регистра 1С. Нужно заполнить какой реквизит документа попадет в какой реквизит регистра 1С. Помочь в этом может кнопка «Заполнить выражения».

Настройка и разработка Регистров 1С

Основные особенности Регистров 1С, по закладкам:

  • Основные – название регистра 1С в конфигураторе (Имя) и в режиме Предприятие (Синоним). Здесь же Вы выбираете основные свойства регистра 1С, для регистра накопления 1С – остатки или обороты, для регистра сведений 1С – периодичность.  

  • Подсистемы и Функциональные опции – на какой закладке рабочего стола пользователя в тонком клиенте будет находится справочник, условия его видимости
  • Данные — здесь указываются «реквизиты» регистра 1С o Измерения – основное измерение (ради чего создается регистр 1С) и дополнительные измерения (на всякий случай), мы обсуждали это ранее o Ресурсы – цифры, которые мы будем считать, обычно количество и сумма

    o Реквизиты – дополнительная информация, такая как Комментарий

  • Регистраторы – документы, которые будут проводится по этому регистру 1С, для некоторых регистров сведений 1С могут не использоваться
  • Формы – формы, которые видит пользователь при работе со регистром 1С – обычно только форма списка

howknow1c.ru

Регистры сведений 1С — описание и примеры записи

Регистр сведений 1С 8 — объект метаданных, предназначенный для хранения справочной информации в разрезе определенных разработчиком измерений.

Типичный пример использования регистра сведений — хранение информации о курсе валют в разрезе валюты и периода.

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

Настройка и свойства регистра сведений 1С 8

Два главных свойства регистра сведения — Периодичность и Режим записи.

Это уникальные свойства регистра сведений, которых больше нет ни у одного объекта метаданных. Рассмотрим их подробнее.

Периодичность регистра сведений 1C

Данное свойство позволяет добавить к списку измерений дополнительное измерение — Период. С его помощью  можно решить большое количество задач: хранение информации в базе данных, учитывая актуальность на определенную дату. Прикладных примеров использования периодов множество: хранение значение валюты на каждый день, хранение цены номенклатуры и т.д.

Периодичность может принимать следующие значения:

  • Непериодический
  • В пределах секунды
  • В пределах дня
  • В пределах месяца
  • В пределах квартала
  • В пределах года

Получите 267 видеоуроков по 1С бесплатно:

При выборе периодичности, отличной от варианта Непериодический, система будет контролировать уникальность записей в пределах заданного промежутка времени. Если запись не уникальна, система 1C выдаст сообщение Запись с такими ключевыми полями существует! и не даст произвести запись в базу данных.

А одна из главных особенностей периодического регистра сведений — возможность получать готовые значения «Среза первых» и «Среза последних». Эта информация позволяет очень быстро получить из базы данных информацию о последнем (первом) установленном значении на определенную дату.

Режим записи регистра сведений

В 1С 8.2 и 8.3 это свойство может быть либо в значении «Независимый», либо — «Подчинение регистратору». В первом случае записи можно будет произвести как программно, так и из формы списка регистра сведений. Во втором случае обязательно указание документа-регистратора записи. Это накладывает определенные ограничения, но в то же время открывает новые возможности.

Свойства измерения регистра сведений

Также следует обратить внимание на палитру свойств измерений регистра сведений 1С 8.3.  Особенно на флаги Ведущее и Основной отбор:

  • Ведущее —  свойство измерения, подразумевающее под собой информацию о том, что без значения этого измерения запись регистра не имеет смысл. На деле это означает что система при удалении значения из измерения удаляет еще и запись регистра с «Ведущим» измерением. Может быть установлено только одно измерение.
  • Основной отбор — если регистр независимый, по этим измерениям будет устанавливаться регистрация изменений для плана обмена. Аналогично использование Основной отбор по периоду включает основной отбор для период для периодических регистров.

О других объектах системы 1С можно прочитать в разделе конфигурирование 1С.

Программная запись в регистр сведений 1С

Добавить новые записи в регистр сведений можно двумя способами — с помощью менеджера записи и с помощью набора записей. Первый случай подойдет для одиночной записи, второй — для двух и и более записей.

Использование менеджера записи:

НоваяЗапись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); НоваяЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию(«USD»); НоваяЗапись.Период = Дата(31,12,2016); НоваяЗапись.Курс = 100; НоваяЗапись.Кратность = 1;

НоваяЗапись.Записать();

programmist1s.ru

Регистры накопления в 1С 8.3 и 8.2

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

Предположим, что у нас есть 1000 разных документов: поступление товаров, списание, возврат, продажа и т.д. И каждый из документов изменяет количество определенного товара на складе. Чтобы получить информацию о текущем количестве на складе, необходимо перебрать все документы: какие-то увеличивают количество товара, какие-то уменьшают, какие-то могут и увеличивать, и уменьшать. А если необходимо учитывать еще и склад, организацию?.. Такая система очень ресурсоёмкая.

Для упрощения данного процесса разработчики 1С придумали особые объекты конфигурации. Используются они для удобства хранения и получения информации, в 1С 8.3 и 8.2 используются всевозможные регистры, в данной статье речь пойдет именно про Регистры накопления.

Что же такое регистр накопления в 1С 8?

Сам регистр накопления представляет собой таблицу с информацией, в которой собраны все движения (поступления/списания или обороты) определенных документов. Рассмотрим, как выглядит таблица движения, на примере типового регистра накопления «Товары на складах» в конфигурации «Управление торговлей 10.3»:

Здесь мы видим, что документы 1C «Реализации» уменьшают количество определенного товара в определенном месте хранения, а документы поступления, наоборот, увеличивают количество.  В итоге мы получаем общую картину, в которой отчетливо видно, что, когда и в каком количестве поступило (было списано) по учету. По такой таблице уже гораздо удобнее строить отчет.

Регистр накопления в конфигураторе

Что же такое регистр накопления с точки зрения разработки конфигурации? Начнем, пожалуй, с рассмотрения полей регистра накопления в конфигураторе:

Получите 267 видеоуроков по 1С бесплатно:

У регистра накопления есть Измерения, Ресурсы, Реквизиты и Стандартные реквизиты. 

Рассмотрим сначала стандартные реквизиты регистра накопления:

  • период — дата движения, не обязательно должна совпадать с датой документа;
  • регистратор — документ, который производит запись в регистре;
  • номер строки — порядковый номер строки в наборе записи, уникален в пределах регистратора;
  • активность — отвечает за попадание записи в виртуальные таблицы (о них ниже);
  • вид движения — приход или расход.

Измерения регистра накопления

Измерение — это разрез, в котором ведется учёт. На вышеприведенном примере разрезом учета являются: склад, номенклатура, характеристика номенклатуры, серия номенклатуры, качество. Т.е задав интересующие нас измерения, мы можем в любой момент получить количество — ресурс. В разрезе разных измерений в дальнейшем, например, можно получать остатки на определенную дату.

Ресурс регистра накопления

Ресурс — это числовое поле, в котором хранится информация в разрезе измерений, о которых писали выше.

Иначе взаимодействия измерений/ресурсов можно схематично изобразить как систему координат:

Два измерения — абсцисса и ордината системы координат, т.е. на данном примере измерения это склад и номенклатура.  На пересечении измерений мы можем получить количество — ресурс. Например, на «основном» складе товара «карандаш»  в наличии 1 штука.

Реквизиты регистра накопления 1C

Реквизиты регистры накопления несут в себе роль «комментария» или дополнительной информации, в разрезе измерений нельзя получить остатки/обороты. Используются достаточно редко.

Виды регистра накопления

Существует два вида регистра накопления — обороты и остатки. 

Если целью регистра накопления не является получение остатков, обязательно нужно использовать вид регистра накопления — обороты. Типичный пример использования оборотного регистра — регистрация объема продаж. В данном случае нам нужно знать только, какие продажи были за определенный период времени, остатки в данном случае не имеют смысла.

Если же среди целей использования регистра накопления — получение остатков на определенный период, нам необходим регистр с видом остатки. Такой тип позволяет получать как остатки, так и обороты. Для такого регистра система автоматически рассчитывает остатки. Пример «остаточного» регистра — товары на складах, деньги в кассе.

Использование вида регистра остатки, где можно обойтись оборотами, считается грубой ошибкой при проектировании регистра накопления с точки зрения производительности системы.

В зависимости от вида регистра система будет создавать разные виртуальные таблицы для регистра накопления. Виртуальная таблица – быстрый способ получения профильной информации из регистров.

Для регистра накопления это:

  • Остатки;
  • Обороты;
  • Остатки и обороты.

Для разработчика решения данные берутся из одной (виртуальной) таблицы, но на самом деле платформа 1С берёт из множества таблиц, преобразовывая их в нужных вид.

Правильное проектирование регистров накопления

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

Среди особенностей проектирования регистра следует отметить необходимость правильно расставлять по порядку измерения в регистре. Выше всего необходимо ставить измерения, которые будут чаще запрашиваться в системе.

Индексация измерений регистра накопления

У измерений регистра накопления имеется свойство — «индексировать». Это свойство необходимо устанавливать на измерения в тех случаях, когда по измерению планируется часто накладывать отборы при получении данных и данное измерение может иметь большое количество вариантов значения.

Например,  регистр «ТоварыНаСкладах», измерения — «Склад, Номенклатура», ресурс — «Количество».

Правильнее проиндексировать «Номенклатуру», а поле»Склад» индексировать не стоит, потому как количество складов в системе, как правило, не существенное.

Другие статьи по 1С:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

programmist1s.ru

Разные Регистры и работа с ними в 1С

Все изменения, вносимые в базу данных, хранятся в соответствующих таблицах. Для 1С это таблицы документов, журналов документов, справочников и регистров. О типах регистров 1С, особенностях и тонкостях их использования и пойдет разговор в нашей статье.

Формирование записей в регистрах

Одним из первых вопросов, связанных с регистрами, является вопрос: для чего?

Для чего вообще нужно создавать отдельные таблицы, зачастую дублирующие уже существующие записи?

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

Таким образом, мы выяснили, что одним из способов создания записи регистра является запись при помощи регистратора (документа). Этот вариант присутствует во всех типах регистров.

Процесс формирования записей регистров на основе документа принято называть проведением документа. Непроведенный документ-регистратор не имеет движений по регистрам, это фактически, черновик или заготовка.

Второй вариант формирования записи – непосредственно, без создания регистрирующего документа. Создать записи таким способом можно только в регистрах сведений при этом в свойствах регистра реквизит «Режим записи» должен иметь соответствующее значение (Рис.1).

Рис.1

Общее для всех регистров

Внутренняя структура любого регистра может быть продемонстрирована Рис.2

Рис.2

Рассмотрим её подробнее:

  • Измерения – свойства записи, определяющие, в каких разрезах хранится важная информация;
  • Ресурсы – они содержат информацию, которую необходимо систематизировать;
  • Реквизиты – поля записи, которые содержат дополнительную информацию;
  • Формы –  свойство, которое содержит графическую информацию о внешнем виде списка, элемента и т.д. и их внутренних модулях;
  • Макеты – печатные формы регистров.

Регистры сведений

Раз уж выше речь зашла о регистрах сведений, давайте о них и поговорим.

Это, наверное, самый простой и понятный тип регистров. Обычная таблица, содержащая колонки и столбцы, в которой хранится информация.

Список важных свойств регистра сведений небольшой (Рис.3), поговорим об основных:

Рис.3

  1. Периодичность, она указывает на то, в каких пределах контролируется уникальность записи (в пределах минуты, часа, дня, года в соответствии с выбранным значением не могут существовать две записи с одинаковыми измерениями), также может принимать значение «По регистратору», но для этого необходимо выбрать соответствующий режим записи;
  2. Режим записи – фактически это выбор из двух значений: «Независимый» и «Подчинение регистратору».
    1. Важно понимать, что выбор независимого режима не означает, что запись не может быть сформирована документом, будет невозможен только отбор по регистратору и контроль уникальности записи по нему;
  3. Разрешить итоги срез первых и Разрешить итоги срез последних: (объединим два пункта в один) – при выставлении соответствующих галочек, запрос к регистру сведений можно производить по дополнительным таблицам (Срез первых и Срез последних), которые содержат соответствующие наборы данных, в качестве одного из параметров этих таблиц выступает дата, на которую необходимо делать выбор данных.

Регистры накопления

Структуру одного из них мы видели на Рис.2. Основным свойством, сильно влияющим на внешний вид регистра, а так же на его внутреннюю структуру является «Вид регистра» (Рис.4)

Рис.4

В зависимости от требований к хранимой информации может принимать значения:

В первом случае в базе данных будет содержаться информация не только о движениях ресурсов в разрезе измерений, но и о типе операции (приход или расход). К тому же при создании запроса будет доступна дополнительная таблица, содержащая итоги.

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

Если требуются данные, включающие конец периода можно:

  • Использовать таблицу ОстаткиИОбороты;
  • Сделать выборку на дату на 1 секунду большую заданной (т.е. не на 31.12.16 23:59:59, а на 01.01.17 00:00:00);
  • Воспользоваться методом Граница, который помогает настроить вариант включения момента времени в рассматриваемый период (вариант использования: Граница(ДатаКонца,Включая).

Регистры бухгалтерии

Достаточно специализированные регистры, по своей конструкции напоминают регистры накопления. Основным отличием от других типов регистров платформы 1С является присутствие в структуре свойств параметра «План счетов» (Рис.5).

Рис.5

План счетов – отдельный объект метаданных, требующий отдельного разговора. В зависимости от плана счетов, современные типовые конфигурации 1С содержат 4 основных регистра бухгалтерии:

  1. Бюджетирование;
  2. Международный;
  3. Налоговый;
  4. Хозрасчетный.

Второй параметр, характерный для бухгалтерских регистров – «Корреспонденция».

Установка галочки в этом параметре позволяет формировать двойные записи, содержащие кредитовый счет СчетКт и дебетовый счет СчетДт и соответствующую этим счетам аналитику (субконто). Если галочка не установлена, в записях регистра будет проставляться только один счет.

Регистры расчета

Это, наверное, самые сложные для понимания регистры. Между тем, по своей сути они очень сильно напоминают регистры накопления вида «Обороты».

Определяющим отличием регистра расчета от других регистров является наличие в его свойствах параметра «План вида расчета». К тому же, регистр расчета, также как и регистр сведений – периодический.

В каждом регистре расчета может быть включена возможность связи записи с графиком времени, заданном в соответствующем регистре сведений. Это позволяет при помощи кода получать данные о рабочем времени.

В дополнение к измерениям, ресурсам и формам, имеющимся в других типах регистра, регистрам расчета может быть задан объект «Перерасчет», где будет храниться информация о неактуальных и требующих пересмотра записях.

Основное использование их в типовых конфигурациях 1С – регистрация и облегчение работы с начислениями работникам организации.

blog.it-terminal.ru


Смотрите также

Задача хранения многомерных данных является типичной для большинства серьезных учетных и ERP-систем. В программном комплексе «1С Предприятие» эта задача решается с помощью инструментария получившего название «регистр сведений 1с». Регистр сведений 1с представляет собой контейнер, позволяющий одновременно хранить произвольные данные прикладного характера и анализировать их по ряду заданных критериев. По сути, — это многомерный куб, данные которого можно представить в разрезе нескольких, наперед указанных, измерений. Элементы хранения регистра сведений 1с называются «объектами прикладного решения». Объекты прикладного решения – это элементы метаданных отображающие те или иные бизнес процессы на предприятии и объединенные в группы по признаку принадлежности к тому или иному конкретному прикладному решению.

О структуре регистра сведений.

В своей простейшей форме регистр сведений 1с представляет собой плоское табличное представление одного из объектов метаданных. Каждый экземпляр объекта метаданных представлен отдельной записью регистра сведений 1с. Например, если мы рассмотрим справочник «ЦеныКомпании», то его представление в виде регистра сведений 1с будет выглядеть как обычная таблица, со столбцами, соответствующими реквизитам справочника (Номенклатура, ТипЦен и т.д.) и со строками, содержащими конкретные элементы справочника (см. рис. ниже). Определяя различные запросы к регистру можно получать разнообразную информацию – фильтровать данные, агрегировать их и так далее. В регистрах допустимо указывать дополнительные поля с произвольной информацией, отсутствующие изначально в описании элемента конфигурации, на основе которого построен регистр сведений 1с. Эти поля называются реквизитами регистра сведений 1с.

Регистры 1C

Хранение данных в разрезе времени

Очень часто возникает потребность не просто иметь информацию о том или ином объекте на текущую дату, а отслеживать изменение его состояния в прошлом. Например, нас может интересовать не только цена на тот или иной объект номенклатуры предприятия сегодня, но и то какой она была неделю, месяц или даже год назад. Регистры предоставляют пользователю 1С и эту возможность. Для того чтобы ею воспользоваться, необходимо при создании регистра указать периодичность отслеживания изменений объекта прикладного решения. В этом случае, каждый раз по истечении указанного пользователем периода программа будет отслеживать — не изменились ли данные в каждой отдельной записи регистра. В обычной ситуации, т.е. без указания периодичности, изменения в записи регистра не повлекут за собой создание новой записи. В случае же указания периода хранения в регистре останется и старая запись, с данными за предыдущий период, и появится новая запись с текущими значениями объекта прикладного решения. Например, если мы укажем в поле «Периодичность» регистра значение «В пределах дня», то каждый день записи в регистре будут дублироваться, что позволит отслеживать изменение цен на номенклатуру с точностью до дня. (см. рис. ниже)

Регистры сведений 1C

Изменение данных регистра и понятие «регистратора»

Мы уже говорили о реквизитах регистра сведений 1с и о том, что данные в регистре могут быть изменены пользователем. Для осуществления этой процедуры существует две возможные методики: ручное редактирование данных регистра и редактирование с помощью документов. В первом случае оператор непосредственно корректирует записи регистра сведений 1с, а во втором регистр сведений 1с доступен для корректировки лишь через корректирующий его документ, который в этом случае называется «регистратором». Нужно сразу же сказать, что два этих режима корректировки – взаимоисключающи. Режим устанавливается в процессе генерации регистра. В случае использования документов-регистраторов в таблице регистра создается отдельное поле – ссылка на документ-регистратор, совершивший последнее изменение объекта данных. Например, если нам требуется ограничить контроль изменения цен номенклатуры только определенным кругом лиц и выполнять эти изменения в строго определенном формате, то мы можем создать специальный документ «ИзменениеЦеныНоменклатуры», указать для него необходимые параметры и реквизиты и привязать к регистру «ЦеныКомпании». Тогда любые изменения цены можно будет проводить только через этот документ и никак иначе. Разумеется, польза от документов-регистраторов огромная – корректировки одного из элементов данных могут повлечь за собой очень глубокие изменения в системе, — это могут быть бухгалтерские проводки, каскадные изменения в других данных и т.д.

Прямое изменение данных в регистре сведений 1с

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

Резюме. Что могут регистры сведений 1с?

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

Понравилась статья? Поделить с друзьями:
  • Регистр сведений как перезаполнить реквизиты
  • Рейтинг компаний по тендерному сопровождению
  • Рейтинг компаний по установке входных дверей
  • Рейтинг компаний по установке окон на лоджии
  • Регистрационный номер как реквизит документа