Как добавить или удалить запись в регистре сведений 1С

Содержание

Как добавить или удалить запись в регистре сведений 1С

Как добавить или удалить запись в регистре сведений 1С

Формирование информации (данных) в 1С осуществляется в образе массива записываемых функций. Они должны соответствовать принятым в платформе параметрам (видам измерений). Где и как происходит их хранение, а также как добавить или удалить запись в регистре сведений 1С?

Что собой представляют сведения

В основном программа 1С используется предприятиями в решении конкретных типовых задач. Реализация этого программно основана на использовании объектов конфигурации.

Базовой доктриной программы 1С является её объектное ориентирование. Объектно-ориентированные приложения используют в себе не алгоритмы, а логические построения. А каждый объект представляет собой сущность определённого класса.

В общем случае, для получения результата работы программы 1С, доработчик (разработчик) должен выбрать необходимые объекты и описать алгоритм их поведения (функционирования). Это и означает — программировать в 1С.

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

Графический интерфейс 1С

Состав объектов, используемых разработчиком, жёстко привязан к самой платформе и недоступен для изменения. Также недоступно создание своих объектов, — можно оперировать только набором, уже имеющимся в платформе.

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

К стандартным объектам конфигурации относится и регистр (register, англ.) сведений. Функция его состоит в хранении любых произвольных данных в разрезе измерений.

Например, курсы валют — в разрезе валют, цены — в разрезе видов цен или в соответствии с номенклатурной, пр.

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

Например, регистр «Цены товаров» может включать в себя измерения (разрезы) «Товар» и «Вид Цен», а ресурсы включают в себя значение «Цена». Таким образом, складывается его структура:

Регистр Цены товаров

А сами записи Цены товаров будут иметь вид:

Цены товаров и услуг

Для хранения дополнительной информации о каждой registration служат «Реквизиты».

Периодичность

Чтобы изменение статических данных можно было отслеживать во времени, registration обладает полем «Период». Это является и дополнительным разрезом для анализа. Значение периодичности можно выбирать:

Выбор значения Периодичности

Подчинение регистратору

Запись в регистр сведений в 1С (их изменения) можно вносить вручную. Также они изменяются автоматически при создании документов.

В последнем случае каждая registration обновляется спецполем для фиксации такого формирующего документа.

Существует возможность выбора режима. Например, режим «Подчинение регистратору» вызовет жёсткую привязку к формирующим документам.

Например, для изменения цен нужно будет обязательно создавать специальный документ — «Изменение цен».

Подчинение регистратору

Уникальность записей

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

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

Редактирование

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

Форма списка

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

Для входа и работы с отдельной записью существует форма и для её представления:

Редактирование курса валюты в 1С

Возможности, делегируемые разработчику этими формами:

  • Удалить, изменить, добавить запись в регистр в 1С;
  • Многосторонняя разноплановая сортировка по измерениям во временных интервалах и по регистраторам.

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

Оставляйте комментарии, делитесь с друзьями.

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

Как добавить или удалить запись в регистре сведений 1С

Задача хранения многомерных данных является типичной для большинства серьезных учетных и ERP-систем. В программном комплексе «1С Предприятие» эта задача решается с помощью инструментария получившего название «регистр сведений 1с».

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

По сути, — это многомерный куб, данные которого можно представить в разрезе нескольких, наперед указанных, измерений. Элементы хранения регистра сведений 1с называются «объектами прикладного решения».

Объекты прикладного решения – это элементы метаданных отображающие те или иные бизнес процессы на предприятии и объединенные в группы по признаку принадлежности к тому или иному конкретному прикладному решению.

О структуре регистра сведений

В своей простейшей форме регистр сведений 1с представляет собой плоское табличное представление одного из объектов метаданных. Каждый экземпляр объекта метаданных представлен отдельной записью регистра сведений 1с.

Например, если мы рассмотрим справочник «ЦеныКомпании», то его представление в виде регистра сведений 1с будет выглядеть как обычная таблица, со столбцами, соответствующими реквизитам справочника (Номенклатура, ТипЦен и т.д.) и со строками, содержащими конкретные элементы справочника (см. рис.

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

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

Хранение данных в разрезе времени

Очень часто возникает потребность не просто иметь информацию о том или ином объекте на текущую дату, а отслеживать изменение его состояния в прошлом.

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

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

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

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

Изменение данных регистра и понятие «регистратора»

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

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

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

Например, если нам требуется ограничить контроль изменения цен номенклатуры только определенным кругом лиц и выполнять эти изменения в строго определенном формате, то мы можем создать специальный документ «ИзменениеЦеныНоменклатуры», указать для него необходимые параметры и реквизиты и привязать к регистру «ЦеныКомпании».

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

Прямое изменение данных в регистре сведений 1с

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

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

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

Резюме. Что могут регистры сведений 1с?

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

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

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

1С:Вопросы и ответы » Как в 1C 8.3, 1С 8.2 работать с регистром сведений. Регистры сведений 1C 8.3, 1С 8.2

Как добавить или удалить запись в регистре сведений 1С

Регистр сведений хранит данные в виде записей. Запись регистра сведений содержит значения ресурсов и измерений.

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

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

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

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

Опция Подчинение регистратору

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

Уникальность

Объект конфигурации «Регистр сведений» обязательно контролирует уникальность записей. Т.е. ключ каждой записи создается неповторимым. Этот ключ зависит от вида регистра сведений и собственно сведений содержащихся в записи.

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

Теперь рассмотрим самые распространенные операции, которые могут быть востребованы при программировании применительно к регистрам сведений.

Чтение записей из регистра сведений

Процедура ЧтениеЗаписейРегистраСведений() Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура, | ШтрихкодыНоменклатуры.Штрихкод |ИЗ | РегистрСведений.

ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры |УПОРЯДОЧИТЬ ПО | Номенклатура УБЫВ»; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить( Строка(ВыборкаДетальныеЗаписи.

Номенклатура) + » » + ВыборкаДетальныеЗаписи.Штрихкод ); КонецЦикла; КонецПроцедуры

12345678910111213141516171819Процедура ЧтениеЗаписейРегистраСведений()    Запрос = Новый Запрос;    Запрос.Текст =        «ВЫБРАТЬ        |   ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура,        |   ШтрихкодыНоменклатуры.Штрихкод        |ИЗ        |   РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры        |УПОРЯДОЧИТЬ ПО        |   Номенклатура УБЫВ»;    РезультатЗапроса = Запрос.Выполнить();    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл           Сообщить(            Строка(ВыборкаДетальныеЗаписи.Номенклатура) + » » +            ВыборкаДетальныеЗаписи.Штрихкод            );    КонецЦикла;КонецПроцедуры

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

Процедура ДобавитьЗаписьРегистраСведений() Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); Запись.Период = ТекущаяДата(); Запись.Курс = 50; Запись.Кратность = 1.0; Запись.Валюта = СсылкаНаВалюту; //Запись.Записать(); // закомментировано для безопасности КонецПроцедуры

Процедура ДобавитьЗаписьРегистраСведений()    Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();    Запись.Период = ТекущаяДата();    Запись.Курс = 50;    Запись.Кратность = 1.0;    Запись.Валюта = СсылкаНаВалюту;    //Запись.Записать(); // закомментировано для безопасностиКонецПроцедуры

Изменение записи регистра сведений

Процедура ИзменитьЗаписьРегистраСведений1() НаборЗаписей = РегистрыСведений.ХарактеристикиФизлиц.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Период.Установить(Период); НаборЗаписей.Отбор.ФизическоеЛицо.Установить(ФизическоеЛицо); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() = 0 Тогда Запись= РегистрыСведений.ХарактеристикиФизлиц.

СоздатьМенеджерЗаписи(); Запись.Период = ТекущаяДата(); Запись.Измерение = ЗначениеИзмерения; Запись.Ресурс = ЗначениеРесурса; //Запись.Записать(); // закомментировано для безопасности ИначеЕсли НаборЗаписей.Количество() >= 1 Тогда Запись= НаборЗаписей[0]; Запись.Ресурс = ЗначениеРесурса; //НаборЗаписей.

Записать(); // закомментировано для безопасности КонецЕсли; КонецПроцедуры Процедура ИзменитьЗаписьРегистраСведений2() Выборка = РегистрыСведений.КурсыВалют.Выбрать('20151004','20161004'); Пока Выборка.Следующий() Цикл МенеджерЗаписи = Выборка.ПолучитьМенеджерЗаписи(); МенеджерЗаписи.Прочитать(); МенеджерЗаписи.Курс = 25; // МенеджерЗаписи.

Записать(); //закомментировано для безопасности КонецЦикла; КонецПроцедуры

12345678910111213141516171819202122232425262728Процедура ИзменитьЗаписьРегистраСведений1()    НаборЗаписей = РегистрыСведений.ХарактеристикиФизлиц.СоздатьНаборЗаписей();    НаборЗаписей.Отбор.Период.Установить(Период);    НаборЗаписей.Отбор.ФизическоеЛицо.Установить(ФизическоеЛицо);    НаборЗаписей.Прочитать();    Если НаборЗаписей.Количество() = 0 Тогда        Запись= РегистрыСведений.ХарактеристикиФизлиц.СоздатьМенеджерЗаписи();        Запись.Период = ТекущаяДата();        Запись.Измерение = ЗначениеИзмерения;        Запись.Ресурс = ЗначениеРесурса;        //Запись.Записать(); // закомментировано для безопасности    ИначеЕсли НаборЗаписей.Количество() >= 1 Тогда        Запись= НаборЗаписей[0];        Запись.Ресурс = ЗначениеРесурса;        //НаборЗаписей.Записать(); // закомментировано для безопасности    КонецЕсли;КонецПроцедурыПроцедура ИзменитьЗаписьРегистраСведений2()    Выборка = РегистрыСведений.КурсыВалют.Выбрать('20151004','20161004');    Пока Выборка.Следующий() Цикл        МенеджерЗаписи = Выборка.ПолучитьМенеджерЗаписи();        МенеджерЗаписи.Прочитать();        МенеджерЗаписи.Курс = 25;        // МенеджерЗаписи.Записать(); //закомментировано для безопасности    КонецЦикла;КонецПроцедуры

Добавить запись в периодический регистр сведений

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

Установить(ТекущаяДата); Запись = Записи.Добавить(); Запись.Валюта = ТекущаяВалюта; Запись.Период = ТекущаяДата; Запись.Курс = ТекущийКурс; Запись.Кратность = ТекущаяКратность; //Записи.

Записать(); //закомментировано для безопасности КонецПроцедуры;

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

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

Процедура УдалитьЗаписьРегистраСведений() Выборка = РегистрыСведений.КурсыВалют.Выбрать('20151004','20161004'); Пока Выборка.Следующий() Цикл МенеджерЗаписи = Выборка.ПолучитьМенеджерЗаписи(); //Выборка.ПолучитьМенеджерЗаписи().Удалить(); //закомментировано для безопасности КонецЦикла; КонецПроцедуры

Процедура УдалитьЗаписьРегистраСведений()    Выборка = РегистрыСведений.КурсыВалют.Выбрать('20151004','20161004');    Пока Выборка.Следующий() Цикл        МенеджерЗаписи = Выборка.ПолучитьМенеджерЗаписи();        //Выборка.ПолучитьМенеджерЗаписи().Удалить(); //закомментировано для безопасности    КонецЦикла;КонецПроцедуры

Отбор данных по регистратору

Процедура ОтборДанныхПоРегистратору() Документ = Документы.УстановкаЦенНоменклатуры.Выбрать(); Если Документ.Следующий() Тогда Регистр = РегистрыСведений.ЦеныНоменклатуры.ВыбратьПоРегистратору( СсылкаНаДокумент); Пока Регистр.Следующий() Цикл Сообщить(Регистр.Номенклатура.Наименование + » » + Регистр.Цена); КонецЦикла; КонецЕсли; КонецПроцедуры

Процедура ОтборДанныхПоРегистратору()    Документ = Документы.УстановкаЦенНоменклатуры.Выбрать();    Если Документ.Следующий() Тогда        Регистр = РегистрыСведений.ЦеныНоменклатуры.ВыбратьПоРегистратору(            СсылкаНаДокумент);        Пока Регистр.Следующий() Цикл            Сообщить(Регистр.Номенклатура.Наименование + » » + Регистр.Цена);        КонецЦикла;    КонецЕсли;КонецПроцедуры

Если у Вас появились вопросы по статье или остались нерешенные проблемы обсудить их Вы можете на Форуме 1С Вопросы и ответы 

Программная работа с регистрами сведений

Как добавить или удалить запись в регистре сведений 1С

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

Предназначение регистра сведений
Добавление записей
Изменение записей
Чтение записей
Удаление записей
Очистка регистра сведений

Предназначение регистра сведений

Регистры сведений в 1С — это прикладные объекты конфигурации для хранения данных в структурированном виде (в разрезе измерений). Например, в регистре сведений можно хранить курсы валют в разрезе валют, цены номенклатуры в разрезе номенклатур, ФИО физических лиц в разрезе физических лиц и т.д.

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

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

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

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

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

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

Добавление записей

Программно добавить записи в регистр сведений можно при помощи:

  • объекта НаборЗаписей;
  • объекта МенеджерЗаписи.

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

Общая схема добавления записей в регистр сведений при помощи объекта НаборЗаписей выглядит так:

  1. создание объекта НаборЗаписей;
  2. наложение отборов на измерения, период (если регистр периодический) и регистратора (если регистр подчинен регистратору);
  3. добавление и заполнение значений полей записей;
  4. запись набора записей.

// Добавление записи в независимый непериодический регистр сведений
НаборЗаписей = РегистрыСведений.ВерсииПодсистем.СоздатьНаборЗаписей(); // Этап 1
НаборЗаписей.Отбор.ИмяПодсистемы.

Установить(ИмяПодсистемы); // Этап 2
// Этап 3
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.ИмяПодсистемы = ИмяПодсистемы;
НоваяЗапись.Версия = НомерВерсии;
НаборЗаписей.

Записать(); // Этап 4

// Добавление записи в независимый периодический регистр сведений
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); // Этап 1
// Этап 2
НаборЗаписей.Отбор.Валюта.Установить(Доллар);
НаборЗаписей.Отбор.Период.

Установить(НачалоДня(ТекущаяДата()));
// Этап3
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ТекущаяДата();
НоваяЗапись.Валюта = Доллар;
НоваяЗапись.Курс = 57.92;
НоваяЗапись.Кратность = 1;
НаборЗаписей.

Записать(); // Этап 4

Общая схема добавления записей в регистр сведений при помощи объекта МенеджерЗаписи выглядит так:

  1. создание объекта МенеджерЗаписи;
  2. заполнение значений полей записи;
  3. запись записи.

// Добавление записи в независимый непериодический регистр сведений
Запись = РегистрыСведений.ВерсииПодсистем.СоздатьМенеджерЗаписи(); // Этап 1

// Этап 2
Запись.ИмяПодсистемы = ИмяПодсистемы;
Запись.Версия = НомерВерсии;

Запись.Записать(); // Этап 3

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

// Этап 2
Запись.Период = ТекущаяДата();
Запись.Валюта = Доллар;
Запись.Курс = 57.92;
Запись.Кратность = 1;

Запись.Записать(); // Этап 3

Изменение записей

Изменять существующие записи регистров сведений возможно при помощи объектов НаборЗаписей и МенеджерЗаписи. Ограничения объекта МенеджерЗаписи были описаны в разделе Добавление записей.

Общая схема редактирования записей регистров сведений:

  1. создание объекта НаборЗаписей или МенеджерЗаписи;
  2. наложение отборов;
  3. чтение записей базы данных, соответствующих наложенным отборам;
  4. редактирование прочитанных записей;
  5. запись отредактированных записей.

// Редактирование записей с использованием объекта НаборЗаписей
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); // Этап 1
// Этап 2
НаборЗаписей.Отбор.Период.

Установить(ДатаКурса);
НаборЗаписей.Отбор.Валюта.Установить(Доллар);
НаборЗаписей.Прочитать(); // Этап 3
Для Каждого Запись Из НаборЗаписей Цикл
     Запись.Курс = 57.

84; // Этап 4
КонецЦикла;
НаборЗаписей.Записать(); // Этап 5

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

Валюта = Доллар;
Запись.Прочитать(); // Этап 3
Если Запись.Выбран() Тогда // Проверка, что запись существует
     Запись.Курс = 57.92; // Этап 4
     Запись.

Записать(); // Этап 5
КонецЕсли;

Чтение записей

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

Запрос = Новый Запрос;
Запрос.Текст =«ВЫБРАТЬ|    КурсыВалют.Период,|    КурсыВалют.Валюта,|    КурсыВалют.Курс|ИЗ

|    РегистрСведений.КурсыВалют КАК КурсыВалют»;

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// обход результата выполнения запроса
КонецЦикла;

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

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

это позволяет ускорить выполнение запроса.

// Получение записи, у которой валюта равна значению из переменной «ВыбраннаяВалюта» и период МЕНЬШЕ или равен значению из переменной «ВыбраннаяДата»
Запрос = Новый Запрос;
Запрос.

Текст =
«ВЫБРАТЬ
|    КурсыВалютСрезПоследних.Период,
|    КурсыВалютСрезПоследних.Валюта,
|    КурсыВалютСрезПоследних.Курс
|ИЗ
|    РегистрСведений.КурсыВалют.

СрезПоследних(&Период, Валюта = &Валюта) КАК КурсыВалютСрезПоследних»;

Запрос.УстановитьПараметр(«Валюта», ВыбраннаяВалюта);
Запрос.УстановитьПараметр(«Период», ВыбраннаяДата);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    // обход результата выполнения запроса
КонецЦикла;

// Получение записи, у которой валюта равна значению из переменной «ВыбраннаяВалюта» и период БОЛЬШЕ или равен значению из переменной «ВыбраннаяДата»
Запрос = Новый Запрос;
Запрос.

Текст =
«ВЫБРАТЬ
|    КурсыВалютСрезПервых.Период,
|    КурсыВалютСрезПервых.Валюта,
|    КурсыВалютСрезПервых.Курс
|ИЗ
|    РегистрСведений.КурсыВалют.

СрезПервых(&Период, Валюта = &Валюта) КАК КурсыВалютСрезПервых»;

Запрос.УстановитьПараметр(«Валюта», ВыбраннаяВалюта);
Запрос.УстановитьПараметр(«Период», ВыбраннаяДата);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// обход результата выполнения запроса
КонецЦикла;

Кроме чтения запросом возможно использование методов объектной модели.

Для непериодических регистров сведений:

  • Выбрать(, ) — выбирает записи с указанным отбором;
  • ВыбратьПоРегистратору() — выбирает все записи указанного регистратора;
  • Получить() — получает ресурсы записи с отбором по всем измерениям.

Для периодических регистров сведений:

  • Выбрать(, , , ) — выбирает записи с указанным отбором, у которых период находится между и ;
  • ВыбратьПоРегистратору() — выбирает все записи указанного регистратора;
  • Получить(, ) — получает ресурсы записи с отбором по всем измерениям и периоду;
  • ПолучитьПервое(, ) — получает ресурсы наиболее ранней записи, соответствующей указанным периоду и отбору;
  • ПолучитьПоследнее(, ) — получает ресурсы наиболее поздней записи, соответствующей указанным периоду и отбору;
  • СрезПервых(, ) — получает таблицу наиболее ранних записей, соответствующую указанным периоду и отбору;
  • СрезПоследних(, ) — получает таблицу наиболее поздних записей, соответствующую указанным периоду и отбору.

Удаление записей

Для удаления записи(записей) в независимом регистре сведений необходимо:

  1. создать набор записей;
  2. наложить требуемые отборы на измерения и период (если регистр периодический);
  3. записать набор записей без предварительного чтения.

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

НаборЗаписей.Отбор.Валюта.Установить(Доллар);
НаборЗаписей.Отбор.Период.Установить(НачалоДня(ТекущаяДата()));

НаборЗаписей.Записать();

Для удаления записей в подчиненном регистре сведений необходимо:

  1. создать набор записей;
  2. наложить отбор на регистратора;
  3. записать набор записей без предварительного чтения.

НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаДокументРегистратор);
НаборЗаписей.Записать();

Очистка регистра сведений

Для удаления всех записей в независимом регистре сведений достаточно записать набор записей этого регистра без установки отборов:

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

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

  1. получить перечень ссылок всех регистраторов регистра сведений;
  2. последовательно записать пустой набор записей с отбором по регистраторам из пункта 1.

Запрос = Новый Запрос(«ВЫБРАТЬ
| ЦеныНоменклатуры.Регистратор
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры»);

Выборка = Запрос.Выполнить().Выбрать();

НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
     НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
     НаборЗаписей.Записать();
КонецЦикла;

Смотри также:

Программная работа со справочниками
Программная работа с массивом
Получение числа прописью

Поделиться:
Нет комментариев

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

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.