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

Содержание

Как очистить регистр сведений в программе 1С

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

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

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

  • Амортизационные группы ОКОФ;
  • Аналитика учета затрат;
  • База распределения НДС;
  • Курсы валют;
  • Применяемые тарифы страховых взносов;
  • Расчет амортизации и т.д.

Все регистры в 1С 8.3 можно увидеть в разделе «Все функции» (2), нажав на стрелочку в левом верхнем углу экрана (1).

В окне «Все функции» вы можете увидеть все регистры сведений (3):

Иногда возникает необходимость очистить тот или иной регистр от лишней информации. Очистить регистр сведений в 1С 8.3 можно:

  1. Программным способом;
  2. С помощью специальной обработки.

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

Очистка регистра сведений программным способом

Программная очистка подразумевает ввод программного кода в специальном окне. Для этого зайдите в раздел «Администрирование» (1) программы 1С 8.3 Бухгалтерия  и нажмите на ссылку «Обслуживание» (2).

В открывшемся окне раскройте меню «Корректировка данных» (3) и кликните на ссылку «Групповое изменение реквизитов» (4).

В окне «Групповое изменение реквизитов» зайдите во вкладку «Выполнить произвольный алгоритм» (5) и в окне (6) введите программный код:

НаборЗаписей = РегистрыСведений.[ИмяРегистра].СоздатьНаборЗаписей();

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

Вместо поля [ИмяРегистра] нужно вписать регистр сведений, который вы хотите очистить. В нашем примере очищаем заполненный регистр сведений «Список задач». Вводим алгоритм в окно и нажимаем кнопку «Выполнить» (7).

Гость, для Вас открыт бесплатный доступ к чату с бухгалтером-экспертом

Закажите обратный звонок на подключение или позвоните:
8 (800) 222-18-27 (бесплатно по РФ).

Очистка регистра с помощью обработки

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

В меню «Открытие» кликните на скачанном файле (3) и нажмите кнопку «Открыть» (4). Откроется окно обработки.

В окне обработки напишите название регистра сведений (5) и нажмите кнопку «Очистить регистр» (6). После этого данные из указанного регистра будут удалены.

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

Как найти название регистра сведений

Зайдите в 1С в режиме конфигурации. Далее в разделе «Конфигурация» (1) в пункте меню «Конфигурация базы данных» нажмите на «Открыть конфигурацию БД» (2). Откроется окно с данными конфигурации.

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

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

  1. Независимый;
  2. Подчинение регистратору.

Очистить регистр сведений программным кодом или обработкой получится только в том случае, если режим записи независимый. Если регистр подчинен регистратору, то все данные в регистре можно изменять только в документах-регистраторах. Например, регистр сведений «СпособыОтраженияРасходовПоАренднымПлатежамОСНалоговыйУчет» подчинен следующим регистраторам:

  • ВводНачальныхОстатков;
  • ИзменениеОтраженияРасходовПоЛизинговымПлатежамОС;
  • ОперацияБух;
  • ПринятиеКУчетуОС.

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

Источник: https://www.BuhSoft.ru/article/1863-kak-ochistit-registr-svedeniy-v-programme-1s

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

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

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

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

Информация хранится в разрезе измерений и периода. Регистру сведений, можно задать периодичность:

  • Непериодический
  • по регистратору
  • секунда
  • день
  • неделя
  • месяц
  • квартал
  • год

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

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

Регистраторы

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

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

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

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

Посмотреть движения, которые делает регистратор можно из документа. Для этого нужно зайти в интересующий Вас документ, нажать: Перейти – Движения документа по регистратору.

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

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

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

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

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

Формы

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

Посмотреть записи регистра можно следующим образом: в верхнем меню нажать кнопку «Операции» — «Регистры сведений». В открывшемся окне выберете нужный Вам регистр.

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

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

Добавлять формы нужно в конфигураторе, зайдя в регистр сведений, во вкладке «Формы» и нажать на «лупу» у нужного вида формы. Далее откроется окно, где можно настроить поля будущей формы (расположение, названия и прописать функционал).

Измерения, ресурсы и реквизиты

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

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

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

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

Источник: http://1s-manual.ru/registry-svedenij-1s/

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С Вопросы и ответы 

Источник: http://www.advanter.net/kak-v-1c-8-3-1s-8-2-rabotat-s-registrom-svedenij-registry-svedenij-1c-8-3-1s-8-2/

Регистры сведений 1с набор записей 2 часть

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

В технологических платформах 1С 8 среди предопределенных объектов метаданных имеется в арсенале 4 типа регистров: Регистр накопления, Регистр сведений, Регистр бухгалтерии, Регистр расчета.

В данной статье мы рассмотрим первый тип регистра 1С — это регистр сведений.

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

Сущность регистра сведений – хранение данных (ресурсов) по одному / нескольким разрезам информационных измерений.

В качестве типа данных измерения может быть любой ссылочный тип платформы, типа “СправочникСсылка”, “ДокументСсылка” и т.п, а также любой примитивный тип – число, строка, дата, булево.

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

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

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

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

В качестве ресурсов как правило (но не обязательно) фиксируются данные типа число/строка/булево.

Например, регистр сведений “Контактная информация” в качестве измерения будет иметь поле “Сотрудник” (типа “СправочникСсылка”), а в качестве ресурса поле “Контактный телефон” с типом “Строка”.

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

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

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

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

Вариант периодичности – “по позиции регистратора” подразумевает ввод записи в регистр в результате проведения документа (документ – это и есть регистратор).

Например, в типовой конфигурации 1С Бухгалтерия 8, имеется документ “Изменение состояния ОС”, который при проведении делает движение, формирует новую запись по регистру с фиксацией нового состояния основного средства. Если удаляется документ, то соответствующие записи по регистру сведений с периодичностью “подчинение регистратору” (т.е. в нашем примере – подчинение удаляемому документу) также будут удалены.

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

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

Если в него сначала сохранить запись, указав в качестве даты 5 июня 2012 года (периодичность июнь), то при втором сохранении новой записи на 3 июня 2012 года предыдущая запись перезатрется новой.

Измерений в регистре сведений может быть много, но желательно ими не загружать таблицы информационной базы (не больше 8-ми), т. к. это может привести к быстрому разрастанию размера информационной базы, и как следствие невозможность работать с базой данных в файловом варианте (вы будете вынуждены переходить на серверный вариант работы информационной базы, например СУБД MS SQL 2008).

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

Например, измерение “Организация” с типом “СправочникСсылка”, если из информационной базы удалится конкретная организация, то записи всех регистров (для которых измерение “Организация” является ведущим), в которых выбрана данная организация, тоже автоматически будут удалены.

Функциональность объекта платформы 1С регистр сведений (с точки зрения разработки конфигураций):

  1. Создание записи (метод “Добавить()” объекта РегистрСведенийНаборЗаписей).
  2. Изменение записи — конкретного ресурса или измерения, либо вообще дополнительного реквизита (метод “Прочитать()” объекта РегистрСведенийНаборЗаписей — для считывания данных из таблицы, и, затем необходимая корректировка, т.е. присваивание полю другого значения).
  3. Удаление записи ().
  4. Выбор записей, соответствующих конкретным параметрам (использование свойства “Отбор” объекта РегистрСведенийНаборЗаписей).
  5. Выбор записей на основе конкретного регистратора – документа основания записи.
  6. Получение значения ресурса записи регистра сведений
  7. Наличие виртуальной таблицы “СрезПервых” (“СрезПервых(началоПериода, структураОтбора)” — метод объекта РегистрСведенийМенеджер, получает первые записи регистра).
  8. Наличие виртуальной таблицы “СрезПоследних” (“СрезПоследних(конецПериода, структураОтбора)” — метод объекта РегистрСведенийМенеджер, получает последние записи регистра).

Примеры, с объяснением, как можно сделать запись в регистр сведений 1С

Создание одной записи в регистр сведений 1С

Чтобы сделать запись в регистр сведений 1С необходимо воспользоваться менеджером записи.

Пример:

// Создаем менеджер записиСоздатьКурсыВалют = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();// Устанавливаем измерения, ресурсы и устанавливаем период записиСоздатьКурсыВалют.

Валюта = СсылкаВалюта;СоздатьКурсыВалют.Курс = Курс;СоздатьКурсыВалют.Кратность = 1;СоздатьКурсыВалют.

Период = ТекущаяДата();//Записываем получившуюся запись с замещением (если уже есть такая запись с такими измерениями и периодом)

СоздатьКурсыВалют.Записать(Истина);

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

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

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

Пример:

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

НаборКурсыВалют.Записать();

В процессе выполнения программного кода, в регистре сведений «Курсы валют», будут сделаны записи по таблице «Таблица Курсов» с замещением.

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

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

Пример:

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

НаборКурсыВалют.Записать();

В результате выполнения вы установите новый курс у валюты, которая установлена в отборе.

Автоматическая подстановка цены в документ при выборе номенклатуры

Для этого нужно сделать две вещи:

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

Необходимо данную функцию разместить в общедоступном, для других документов, месте.

Создадим функциюРозничнаяЦена(),которая будет возвращать нам актуальную розничную цену номенклатуры, и поместим ее в общий модуль конфигурации:
Откроем конфигуратор, в ветке Общие > Общиемодули добавим новый объект конфигурации Модуль и назовем его РаботаСоСправочниками.
Установим флажок Вызов сервера для того, чтобы экспортные процедуры и функции этого модуля можно было вызывать с клиента:

Рис. 9.3. Свойства РаботаСоСправочниками

Затем поместим в модуль следующий текст (см. Листинг 1):

Листинг 9.1. Редактируем Общий Модуль РаботаСоСправочниками

Для получения розничной цены мы будем передавать в функцию два параметра:

  • АктуальнаяДата – параметр типа Дата, определяет точку на оси времени, в которой нас интересует значение розничной цены.
  • ЭлементНоменклатуры – ссылка на элемент справочника Номенклатура, для которого мы хотим получить розничную цену.

Теперь эту функцию нужно вызвать в некоторый момент работы документа.

Вызов функции при выборе номенклатуры и заполнение цены в документе

1 – Найдем в конфигураторе документ ОказаниеУслуги и откроем его форму ФормаДокумента.
2 – Дважды щелкнем на элементе формы ПереченьНоменклатурыНоменклатура.

Прокрутим список до конца, найдем событие ПриИзменении, которое возникает после изменения значения поля. 3 – Нажмем кнопку открытия со значком лупы в поле ввода.

Система создаст шаблон процедуры обработчика этого события в модуле нашей формы и откроет закладку Модуль редактора формы. Внесем в него следующий текст (см. Листинг 2):

Листинг 9.2. Модуль редактора формы

Запустим 1С:Предприятие в режиме отладки и откроем регистр сведений Цены. Для элемента таблицы добавим другим числом новую цену.
Теперь откроем документ Оказание услуги № 1. Оставим дату документа без изменения и повторим выбор тран-зистора в колонке Номенклатура табличной части документа. Автоматически установится последнее значение цены товара.

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

Источник: https://warmandcozy.ru/registers-of-information-1c-set-of-records-2-part.html

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

Как добавить или удалить запись в регистре сведений 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.

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

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

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

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

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

Источник: https://pro1c8.ru/programmnaya-rabota-registr-svedenij/

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

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

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

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

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

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

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

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

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

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

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

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

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

Структура

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Форма списка

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

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

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

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

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

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

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

Источник: https://nastroyvse.ru/programs/review/dobavit-zapis-v-registre-svedenij-1s.html

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

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

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