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

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

Для добавления отдельной записи в регистр сведений, не подчиненный регистратору, можно использовать объект РегистрСведенийМенеджерЗаписи. .

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

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

Если требуется добавить несколько записей в регистр сведений, можно использовать объект РегистрСведенийНаборЗаписей. .

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

В результате выполнения этого кода новые записи будут добавлены в регистр, или, если регистр уже содержит записи с указанным значением измерения "Объект" (по которому установлен отбор в наборе записей), — существующие записи будут заменены новыми.

Описание:

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

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

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

Читайте также:  Wifi пишет проверка подлинности

Для разворота этой информации во времени используется поле "Период" регистра. Оно не вносится в качестве измерения, а добавляется системой автоматически при создании периодического регистра.

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

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

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

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

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

Читайте также:  Blizzard authenticator как восстановить

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

Эти два варианта влияют на способ внесения информации, а не на основную логику работы регистра.

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

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

В программных модулях для общих действий над регистром сведений (поиск, выбор и создание записей регистра) служит объект РегистрСведенийМенеджер. . Для чтения, записи и удаления отдельных записей регистра сведений, не управляемого регистраторами, служит объект РегистрСведенийМенеджерЗаписи. . Для считывания и занесения набора записей в базу данных по определенному условию отбора служит объект РегистрСведенийНаборЗаписей. . Для динамического обхода записей регистра служит объект РегистрСведенийВыборка. .

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

Читайте также:  Usb программатор для avr

Изменение существующей записи

Для работы с одной записью используется объект «МенеджерЗаписи».

В данном случае мы создаем менеджер записи и указываем ему поля, необходимые для точной идентификации записи. Затем изменяем одно из поле («Ставка») и записываем изменения.

Если запись не будет найдена по указанным полям, то будет создана новая запись с указанными полями.

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

Удаление существующей записи

Удаление одной записи из независимого регистра сведений происходит практически так же, как и изменение этой записи:

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

Если по указанным полям найдется несколько записей, то никакого удаления также не произойдет.

Удаление группы записей

Если есть необходимость удалить несколько записей, по какому-либо признаку, из независимого регистра сведений, то для этого удобно использовать объект «НаборЗаписей».

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

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

Ссылка на основную публикацию
Adblock detector