что произойдет если удалить запись регистра сведений и создать новую с такими же полями
Работа с независимым регистром сведений
Достаточно давно я писал о том, как можно быстро очистить регистр сведений, а сегодня поговорим о более общих способах работы с независимыми (режим записи — независимый) регистрами сведений.
Изменение существующей записи
Для работы с одной записью используется объект «МенеджерЗаписи».
В данном случае мы создаем менеджер записи и указываем ему поля, необходимые для точной идентификации записи. Затем изменяем одно из поле («Ставка») и записываем изменения.
Если запись не будет найдена по указанным полям, то будет создана новая запись с указанными полями.
Если по указанным полям запись нельзя точно идентифицировать (находиться две или больше записи с указанными полями), то будет создана новая запись, в которой поля, использовавшиеся для отбора будут пустыми, а изменяемые поля заполнены соответствующими значениями (при тесте получилось именно так, поправьте если не прав).
Удаление существующей записи
Удаление одной записи из независимого регистра сведений происходит практически так же, как и изменение этой записи:
Если по указанным полям не найдется записи, то, естественно, ничего удаляться не будет.
Если по указанным полям найдется несколько записей, то никакого удаления также не произойдет.
Удаление группы записей
Если есть необходимость удалить несколько записей, по какому-либо признаку, из независимого регистра сведений, то для этого удобно использовать объект «НаборЗаписей».
У данного объекта есть метод «Удалить()», не стоит его бояться, он удаляется записи из набора, а ни в коем случае не из регистра. Все возможные изменения непосредственно в регистре сведений происходят в результате работы метода «Записать()».
После создания набора записей, в него попадают все записи регистра. Для выбора каких-либо определенных записей можно воспользоваться свойством отбор (хотя существует еще множество методов для манипуляции набором записей).
Добавление, изменение, удаление записей регистра сведений
Регистр сведений в 1С Предприятии, предназначен для хранения периодической или не периодической информации в разрезе измерений. Данные в другие типы регистров могут быть записаны только с использованием «Документа регистратора». А в Регистр сведений данные могут быть записаны как с «Регистратором» так и без него.
Выбрать записи из регистра сведений
Используя метод «Выбрать» можно установить отборы и задать период для выбора записей, а также задать сортировку записей.
Добавить, изменить, удалить запись
Менеджер записи позволяет добавлять, изменять, удалять запись регистра сведений не подчиненного регистратору.
Добавить, изменить, удалить набор записей
Через набор записей регистра сведений можно добавить или изменить сразу несколько записей. Набор записей позволяет устанавливать отборы.
Очистить регистр сведений
необходимо запомнить или записать структуру данных и настройки регистра, чтобы потом создать аналогичный.
Если необходимо удалить все записи регистра сведений программно, то можно воспользоваться пустым набором записей.
Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться
Программная работа с регистром сведений в 1С 8.3
Программная запись в регистр сведений
Добавление записей в регистр сведений выполняется с помощью набора записей. Набор записей — это коллекция нескольких записей регистра сведений.
Для добавление новых записей в регистр сведений нужно:
Набор записей с установленным отбором можно назвать гранулой. Запись в регистр сведений выполняется гранулами.
Если при записи не устанавливать отбор, то будет перезаписан весь регистр сведений, все предыдущие записи будут удалены:
Можно установить отбор только по одному измерению и сразу добавить несколько записей:
То есть при записи выполняется добавление новых записей с замещением тех записей, которые удовлетворяют установленному отбору.
Но если в метод Записать набора записей передать параметр Ложь, то запись будет выполнена с добавлением новых записей:
В результате в регистр сведений будет добавлена новая запись, но при этом все предыдущие записи не были удалены.
Если попытаться добавить в регистр сведений записи, которые не совпадают с установленным отбором, то будет выброшено исключение «Запись не верна! Значение поля не соответствует установленному отбору»:
Запись в регистр сведений, подчиненный регистратору может выполняться только с отбором по регистратору. В обработке проведения отбор по регистратору устанавливается автоматически, но если запись выполнять в другом месте, то нужно сделать это вручную:
Отбор записей регистра сведений
Отбор позволяет не только установить гранулу при записи в регистр сведений, но и прочитать нужные записи регистра. Например, можно получить все записи по одному товару:
После установки отбора набора записей, мы прочитали данные из регистра методом Прочитать. Данный метод загрузил в переменную НаборЦен все записи, удовлетворяющие отбору. После этого их можно перебрать в цикле и через точку обращаться к полям записи регистра.
Удаление записей регистра сведений
Чтобы удалить запись из регистра сведений нужно создать набор записей, установить необходимый отбор и записать пустой набор записей:
Чтобы очистить весь регистр сведений можно записать пустой набор записей без отбора:
Если регистр сведений подчинен регистратору, то нужно устанавливать отбор по документу-регистратору:
Если нужно удалить записи с отбором по ресурсу, то можно запросом выбрать необходимые записи, в цикле установить по нужным измерениям отбор и записать пустой набор записей:
В данном примере мы удалили все записи, у которых цена больше или равна 500. Но можно было решить ее от обратного: выбрать все записи, у которых цена меньше 500, создать набор записей и загрузить в него результат запроса. Так как отбор не был установлен, то весь регистр будет перезаписан и в нем останутся только те записи, где цена меньше 500:
Изменение записей регистра сведений
Чтобы изменить существующие записи регистра сведений нужно сначала прочитать их через набор записей, потом перебрать в цикле, изменить и записать набор записей. Например, увеличим все цены по одному типу цен на 10%:
Можно в запросе выбрать все измерения и период (для периодического регистра) и также изменить через набор записей, установив необходимый отбор:
Если регистр сведений подчинен регистратору, то отбор нужно устанавливать по регистратору:
Менеджер записи регистра сведений
Менеджер записи регистра сведений используется при интерактивном редактировании записи регистра сведений. Когда мы открываем форму записи, то чтение выполняется именно через менеджер записи. Когда нажимаем на форме записи кнопку Записать, то запись выполняется через менеджер записи.
Менеджер записи доступен только для регистров сведений с режимом записи Независимый.
Программная работа с регистрами сведений
Регистры сведений в 1С предназначены для хранения произвольных данных в разрезе нескольких измерений и, при необходимости, в разрезе времени. Рассмотрим подробнее работу с этим прикладным объектом.
Предназначение регистра сведений
Регистры сведений в 1С — это прикладные объекты конфигурации для хранения данных в структурированном виде (в разрезе измерений). Например, в регистре сведений можно хранить курсы валют в разрезе валют, цены номенклатуры в разрезе номенклатур, ФИО физических лиц в разрезе физических лиц и т.д.
При проектировании разработчик указывает необходимость хранения данных в разрезе времени и минимальную периодичность, с которой записи будут храниться в регистре:
Регистры сведений, для которых указана периодичность, называются периодическими.
Изменение данных в регистре может осуществляться как вручную, так и при помощи документов. Режим записи в регистр определяет разработчик на этапе проектирования:
Физически регистр сведений представляет собой таблицу, в которой хранятся следующие данные:
Для всех регистров сведений обеспечивается контроль уникальности записей, т.е. в регистре не может быть двух одинаковых записей. Одинаковыми считаются записи, у которых совпадают значения измерений, период (если регистр периодический) и регистратор (если регистр подчинен регистратору).
Добавление записей
Программно добавить записи в регистр сведений можно при помощи:
Общая схема добавления записей в регистр сведений при помощи объекта НаборЗаписей выглядит так:
Общая схема добавления записей в регистр сведений при помощи объекта МенеджерЗаписи выглядит так:
Изменение записей
Общая схема редактирования записей регистров сведений:
Чтение записей
Чтение информации из базы данных рекомендуется выполнять при помощи запросов. Данный способ обеспечивает гибкое применение отборов и группировок, а также возможность выбора записей из нескольких таблиц.
Для периодических регистров сведений есть возможность получить наиболее поздние записи, период которых меньше указанной даты — срез последних, и наиболее ранние записи, период которых больше указанной даты — срез первых. Для получения среза первых и среза последних запросом необходимо использовать одноименные виртуальные таблицы, в параметрах которых сразу можно задать дату среза и отборы. Отборы, если они необходимы, рекомендуется накладывать именно в параметрах виртуальных таблиц, т.к. это позволяет ускорить выполнение запроса.
Кроме чтения запросом возможно использование методов объектной модели.
Для непериодических регистров сведений:
Для периодических регистров сведений:
Удаление записей
Для удаления записи(записей) в независимом регистре сведений необходимо:
Для удаления записей в подчиненном регистре сведений необходимо:
Очистка регистра сведений
Для удаления всех записей в независимом регистре сведений достаточно записать набор записей этого регистра без установки отборов:
Запись в регистр сведений, подчиненный регистратору, возможна только при установке отбора по регистратору, поэтому для очистки таких регистров необходимо:
Запрос = Новый Запрос ( «ВЫБРАТЬ
| ЦеныНоменклатуры.Регистратор
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры» );
Остались вопросы?
Спросите в комментариях к статье.
7 комментариев
Для этого примера интересным решением будет использовать независимый регистр сведений с индексированным реквизитом ДокументДвижение, используя его как аналог Регистратора. В этом случае можно будет получить профит при записи регистра.
Не понятно за счет чего может быть профит при записи набора записей независимого регистра сведений. Можете пояснить?
Работа платформы с регистрами сведений несколько раз менялась. 8.3 стала более оптимальной и как бы мне не хотелось «потыкать палочкой» в 8.1 и в ранние версии 8.2, дабы показать как все было плохо, решил этого не делать. Кому станет любопытно «как было» — получит мотивацию изучить вопрос.
Зачем накладывать Отбор, когда создаётся новый набор записей?
Что произойдет если удалить запись регистра сведений и создать новую с такими же полями
2. Виды регистров сведений
3. Измерения, ресурсы, реквизиты регистра сведений
4. Периодический регистр сведений
5. Свойства регистра и измерений
6. Добавление записи в регистр сведений
7. Изменение значения ресурса записи регистра сведений
8. Удаление выбранных записей в регистре сведений
9. Очистка регистра сведений от записей
10. Получить значение ресурса регистра сведений на дату
Регистр сведений предназначен для хранения показателей состояния в разрезе измерений. В отличии от других регистров, ресурсы регистра сведений могут содержать не только числовые значения, в том числе может быть составным.
2. Виды регистров сведений
Измерения – описывают разрезы, в которых хранится информация.
Ресурсы – содержат хранимую информацию в разрезе измерения.
Тип ресурса сведений может быть как примитивный (число, строка, дата, булево), так и ссылочный (СправочникСсылка, ПеречислениеСсылка и т.д.). В ресурсе можно хранить даже картинки и другие неструктурированные сведения, поскольку можно создать ресурс типа «ХранилищеЗначения». Ресурс может быть составным типом.
4. Периодический регистр сведений
5. Свойства регистра и измерений
6. Добавление записи в регистр сведений
Добавление через МенеджерЗаписи, подойдет для добавления одной записи.
Добавление через НаборЗаписей, подойдет для добавления одной или нескольких записей.
7. Изменение значения ресурса записи регистра сведений
Изменение значение ресурса записи через НаборЗаписей, подойдет для изменения одной или нескольких записей.
8. Удаление выбранных записей в регистре сведений
Удаление записей через НаборЗаписей, подойдет для удаления одной или нескольких записей.
9. Очистка регистра сведений от записей
Очистка регистра от записей через НаборЗаписей.
- что значит топпер для торта
- что делать если призвали в армию