Основной отбор по периоду регистр сведений что это
Перейти к содержимому

Основной отбор по периоду регистр сведений что это

  • автор:

Основной отбор по периоду регистр сведений что это

(7) В свойствах изменения.

(8) А ты спроси всех. Если никто не ответит, я подумаю.

Крыжик включает измерение в основной отбор регистра сведений.

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

(10) И что это за основной отбор такой, в который входит то, что ты перечислил? Какова его функция, смысл существования?

(10) Непонятно дя чего это. Ведущиее измерение понятно, а это нет.

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

(13) Молодцом! Итого, результат мисты — 35 минут.

(14) спасибо. теперь ссылкой на тему буду всем хвастаться 🙂

хмм. а если бы я вылез в ветку чуть позже или чуть раньше.
лучше уж выбрать веток 20-30 в которых заданы серьезные вопросы и получены серьезные ответы и посчитать среднее время.

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

(16) Почему в (13) не используются измерения у которых «ведущее» стоит + период (для периодических). Какой в этом смысл, я пока недогоняю.
Может пояснишь?

(17) ведущее — это ведущее а гранула обмена для РИБ — это гранула обмена для РИБ. в частном случае они могут совпадать. но могут и быть разными. в зависимости от организации структуры базы данных.
я так понимаю.

(20) Правильно понимаешь.

(20) Типа при переносе исключить измерения нужные в одной базе и ненужные в другой?
Сорри, хочу до конца въехать. Можешь конечно послать к RTFM. 😉

(14) и что это было?
и где еще сравнения по времени?

Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший

Периодические регистры сведений 1С 8.3 (8.2)

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

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

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

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

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

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

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

Основной отбор по регистратору

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

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

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

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

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

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

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

Одинаковые измерения с разной периодичностью

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

Запись с одинаковым периодом

Ошибка при записи с одинаковым периодом

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

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

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

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

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

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

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

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

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


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

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

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

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

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

Регистры сведений служат для отслеживания информации о состоянии показателя любого типа. Регистр может быть периодическим то есть состояние показателей в разный момент может быть разным, например состояние сотрудника: работает, болеет, уволен. В том случае если регистр сведений имеет периодическую структуру, можно указывать с какой периодичностью регистр будет хранить информацию(секунда, день, месяц, год). В том случае, если регистр сведений подчинен регистратору, периодичность можно указать с точностью до регистратора. Для регистра сведений существует понятие ключевого поля. Ключевыми полями у регистра сведений являются измерения, + период если регистр периодический. То есть двух записей с одним и тем же набором измерений существовать не может. Например, для работы с клиентом определяется менеджер, двух менеджеров у клиента в один момент времени быть не может. Следовательно, регистр будет иметь следующую структуру: Измерение – Клиент, Ресурс – Менеджер, периодичность день(если чаще чем раз в день менять менеджера у клиента не планируем).

Измерения

Измерения у регистра сведений дополнительно к стандартным свойствам реквизитов имеют следующие свойства:

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

Основной отбор: это поле влияет на минимальный размер порции данных, при обмене в базе РИБ.

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

Запись в регистр может происходить как с помощью набора записей, так и с помощью Менеджера записи, который подразумевает работу с одной конкретной записью. При работе с набором подразумевается запись в регистр нескольких записей за один раз (хотя разумеется можно внести и одну запись), при таком методе работы используются отборы, по реквизитам, для которых происходит запись. Если отбор не установлен, весь регистр будет замещен добавляемым набором. Избежать подобного эффекта, возможно с помощью, отбора или установив параметр Замещать = Ложь в методе Записать(Ложь) при записи набора в базу данных. Менеджер записи не обладает такими особенностями как набор записей, но и записывать в регистр с его помощью можно только по одной записи.

Пример записи с помощью менеджера записи

РегистрКурсыВалют = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); РегистрКурсыВалют.Период = ДатаКурса; РегистрКурсыВалют.Валюта = Валюта; РегистрКурсыВалют.Курс = 1; РегистрКурсыВалют.Кратность = 1; РегистрКурсыВалют.Записать();

Пример записи набора записей

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

Типы встроенного языка, порождаемые элементом проекта вида «РегистрСведений»

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

  • Цены
  • Цены.КлючЗаписи
  • Цены.Запись
  • Цены.НаборЗаписей
  • Цены.КлючИзмерений
  • Цены.КлючОсновногоФильтра

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

  • имя-регистра-сведений
  • имя-регистра-сведений.КлючЗаписи
  • имя-регистра-сведений.Запись
  • имя-регистра-сведений.НаборЗаписей
  • имя-регистра-сведений.КлючИзмерений
  • имя-регистра-сведений.КлючОсновногоФильтра

Тип «имя-регистра-сведений»

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

Также он позволяет пересчитать разрешения доступа: ПересчитатьРазрешенияДоступа , ПересчитатьРазрешенияДоступаДляОбъектов (подробнее).

Этот тип не имеет конструктора и имеет единственный экземпляр, обращение к которому выполняется по имени типа:

// Получить менеджера регистра «Цены» пер МенеджерРегистра = Цены // Пересчитать разрешения доступа для регистра «Цены» Цены.ПересчитатьРазрешенияДоступа()

Модуль регистра сведений

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

В этом модуле вы можете обработать события вычисления разрешений доступа: ВычислитьРазрешенияДоступа , ВычислитьРазрешенияДоступаДляОбъектов , ВычислитьКлючиДоступаДляЧтения и ВычислитьКлючиДоступаДляИзменения (подробнее).

Совет: В модуле регистра сведений может находиться реализация контракта сервиса.

Тип «имя-регистра-сведений.КлючЗаписи»

Тип имя-регистра-сведений.КлючЗаписи доступен и на клиенте, и на сервере. Он предназначен для указания на какую-то конкретную запись регистра.

Он имеет конструктор новый имя-регистра-сведений.КлючЗаписи() , который позволяет создать новый ключ записи по значениям всех измерений, и метод ЗагрузитьЗапись() , который есть только на сервере и позволяет получить запись ( имя-регистра-сведений.Запись ) из ключа ( имя-регистра-сведений.КлючЗаписи ).

Модуль ключа записи

В проекте модуль, расширяющий тип имя-регистра-сведений.КлючЗаписи , называется . Он исполняется и на клиенте, и на сервере.

Тип «имя-регистра-сведений.КлючОсновногоФильтра»

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

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

Данный тип имеет конструктор новый имя-регистра-сведений.КлючОсновногоФильтра() , который позволяет создать новый ключ основного фильтра по значениям всех измерений, включенных в основной фильтр.

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

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

Тип «имя-регистра-сведений.Запись»

Тип имя-регистра-сведений.Запись доступен на сервере.

Он содержит данные одной записи и предназначен для создания, изменения или удаления одной записи.

Он имеет несколько конструкторов новый имя-регистра-сведений.Запись() , которые позволяют создать новую запись. Заполнив эту запись данными, вы можете затем сохранить ее в базе данных.

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

Модуль записи

В проекте модуль, расширяющий тип имя-регистра-сведений.Запись , называется . Он исполняется на сервере.

Совет: В модуле записи может находиться реализация методов контракта типа.

Тип «имя-регистра-сведений.НаборЗаписей»

Тип имя-регистра-сведений.НаборЗаписей доступен на сервере.

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

Он имеет конструктор новый имя-регистра-сведений.НаборЗаписей() , который позволяет создать пустой набор. Заполнив этот набор записями, вы можете затем сохранить их все в базе данных. Также вы можете прочитать в пустой набор те записи из базы данных, которые соответствуют фильтру, установленному в пустом наборе записей.

Модуль набора записей

В проекте модуль, расширяющий тип имя-регистра-сведений.НаборЗаписей , называется . Он исполняется на сервере.

В нем вы можете обработать такие события как:

  • ПередЗаписью
  • ПослеЗаписи

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

Тип «имя-регистра-сведений.КлючИзмерений»

Тип имя-регистра-сведений.КлючИзмерений существует только у периодических регистров сведений и доступен на сервере.

Он предназначен для указания на группу записей, которые имеют одинаковые значения измерений и отличаются значением поля Период . Такие группы записей нужны в системе прав доступа для установки права Чтение на записи периодического регистра сведений.

Экземпляры этого типа передает в обработчик события ВычислитьКлючиДоступаДляЧтения (подробнее).

Тип «РегистрыСведений»

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

для Регистр из РегистрыСведений Регистр.ПересчитатьРазрешенияДоступа() ;

Этот тип не имеет конструктора и имеет единственный экземпляр, обращение к которому выполняется по имени типа.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *