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

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

  • автор:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн

Периодические регистры сведений 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

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

Применение отбора в наборе записей регистра сведений 8.3 (8.2)

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

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

Рассмотрим следующую задачу: в моей конфигурации есть независимый периодический регистр сведений «ЦеныНаТопливо», который имеет следующую структуру.

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

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

МенеджерЦеныНаТопливо = РегистрыСведений.ЦеныНаТопливо; НаборЗаписей = МенеджерЦеныНаТопливо.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ПоставщикТоплива.Установить(Поставщик); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() > 0 Тогда Для Каждого стрНабора из НаборЗаписей Цикл стрНабора.Цена = стрНабора.Цена * Коэффицент; КонецЦикла; НаборЗаписей.Записать(); КонецЕсли; 

В этом коде с помощью свойства Отбор объекта НаборЗаписей сделать так, чтобы в наборе были записи, соответствующие только нужному нам поставщику.

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

Когда мы обращаемся к свойству объекта Отбор посредством названия измерения, то мы получаем объект Элемент отбора, у данного объекта только один метод — Установить. Данный метод устанавливает значение отбора.

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

Имейте в виду, что отбор в регистрах сведений можно устанавливать только на равенство!

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

Как Вы уже знаете, объект Набор записей является коллекцией объектов Запись регистров сведений. Поэтому после того, как мы с помощью метода Количество проверили, есть ли в принципе записи по данному отбору, мы обходим данную коллекцию с помощью цикла: Для каждого…Цикл. Где переменная НормаЗапись является объектом Запись регистров сведений. С помощью этого объекта мы получаем доступ ко всем полям записи регистра сведений и можем их изменять на свое усмотрение. После того, как мы поменяли все нужные нам записи, необходимо записать набор. Обращаю внимание, что записывается именно набор в целом, а не конкретная запись по отдельности.

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

МенеджерЦеныНаТопливо = РегистрыСведений.ЦеныНаТопливо; НаборЗаписей = МенеджерЦеныНаТопливо.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ПоставщикТоплива.Установить(Поставщик); НаборЗаписей.Отбор.ВидТоплива.Установить(ВидТоплива); НаборЗаписей.Отбор.Период.Установить(Период); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() = 0 Тогда НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Период = Период; НоваяЗапись.ПоставщикТоплива = Поставщик; НоваяЗапись.ВидТоплива = ВидТоплива; НоваяЗапись.Цена = Цена; НаборЗаписей.Записать(); КонецЕсли; 

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

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

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

МенеджерЦеныНаТопливо = РегистрыСведений.ЦеныНаТопливо; НаборЗаписей = МенеджерЦеныНаТопливо.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ВидТоплива.Установить(ВидТоплива); НаборЗаписей.Прочитать(); НаборЗаписей.Очистить(); НаборЗаписей.Записать(); 

В этом коде мы получаем данные для определенного набора и очищаем их.

Изучайте основы конфигурирования в 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 не будет опубликован. Обязательные поля помечены *