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

Jul 10, 2022 16:51

image Click to view



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

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

НЕПЕРИОДИЧЕСКИЙ РЕГИСТР СВЕДЕНИЙ 1С

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



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

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

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



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



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



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





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

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





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

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

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



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



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





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



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



ПЕРИОДИЧЕСКИЕ РЕГИСТРЫ СВЕДЕНИЙ

Как Вы уже должны знать, основное предназначение регистров сведений в том, что они служат для хранения показателей аналитики объектов учета. Но если раньше наши показатели были статичны, т.е. была цена топлива и все, то в случае периодических регистров сведений эти показатели могут изменяться во времени. Например, цена топлива на 01.03.2018 может быть 33 р, а на 02.03.2018 - 34. Для такого учета мы можем использовать и обычный (непериодический) регистр сведений: просто наша запись с ценой для нужного вида топлива будет каждый раз переписываться для новой цены. Но, если у нас стоит цель знать историю цен и использовать цены старых периодов, то такое решение нам не подходит.

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



После того, как вы установили периодичность регистра сведений стал доступен флаг «Основной отбор по периоду».



Этот флаг необходим, в случае работы распределенной информационной базы, это значит, что при обмене данными отбор будет вестись, в том числе, по периоду.

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



В этом поле необходимо указывать дату, на которую приходится соответствующая запись. Причем эта дата будет кратной той периодичности, которую мы установили в свойстве основной отбор. Например, если у нас периодичность месяц, то нельзя в поле Период установить дату 25.03.2018, платформа сама округлит её до 01.03.2018, а если будет периодичность год, то платформа округлит дату до начала года 01.01.2018.

Мы у нашего регистра сведений «Цены номенклатуры» установим периодичность «В пределах дня».



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



Но, в тоже время период, по сути, становиться измерением, поэтому нельзя сделать запись с одним и тем же набором полей и периодом. Возникнет ошибка. Поле Период это по сути то же измерение.





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

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

Регистры сведений, которые подчинены какому-то документу называют «Подчиненные регистры сведений».

ПОДЧИНЕННЫЕ РЕГИСТРЫ СВЕДЕНИЙ

Теперь сделаем регистр сведений «Цены на топливо» подчиненным. Для этого создадим в конфигураторе 1С документ «Установка цен топлива поставщика», у которого будет один реквизит «Поставщик» с типом СправочникСсылка.ПоставщикТоплива, а так же табличная часть «Список цен» с реквизитами: «Вид топлива» с типом СправочникСсылка.ВидыТоплива и цена с типом Число (10,2), как у ресурса регистра сведений.



На закладке «Движения» конструктора документов свойство Проведение установим разрешить, а Оперативное проведение - запретить (цены можно устанавливать и задним числом).



У регистра сведений режим записи установим «Подчинение регистратору», а периодичность оставим «В пределах дня».



На закладке «Регистраторы» регистра сведений установим документ «Установка цен топлива поставщика».



Осталось «прописать» движения этого документа по регистру сведений. Мы это сделаем при помощи конструктора. Для этого перейдем в редактор документа на закладку «Движения», в котором нажмем на кнопку «Конструктор движения».



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



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



Запустим управляемое приложение 1С: Предприятия, и, если мы создадим документ и запишем в него какие-то данные.



То после его проведения, будут созданы записи в регистре сведений. Причем у регистра сведений появится новое поле Регистратор.



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



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



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



Смотрите также:
Электронный учебник по программированию в 1С
Рекомендации по изучению программирования 1С с нуля
Игра "Кто хочет стать миллионером?" с вопросами на определенную тематику (язык программирования JavaScript, английские, немецкие, французские, испанские, португальские, ни­дер­ландские, итальянские слова, электробезопасность, промышленная безопасность, бокс и т.п.), написанная на 1С
Программирование в 1С 8.3 с нуля - краткий самоучитель
Комплексная подготовка программистов 1С:Предприятие 8.2
Сайты с уроками программирования и со справочниками
Youtube-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки

программирование

Previous post Next post
Up