https://cvvsite.su 1с упп поиск в регистре сведений. Поиск и чтение в регистре сведений

1с упп поиск в регистре сведений. Поиск и чтение в регистре сведений

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

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

  • Наименование
  • Производитель
  • Упаковка
  • Цена закупки

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

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

Настройка в 1С 8.3 регистров сведений

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

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

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

Записи в регистрах являются следствием проведения операций в различных частях программы. Но есть возможность сделать непосредственные изменения. Для этого предусмотрена возможность записи в регистр сведений 1С 8.3 программно (пусть примером служит аналитика колебаний валютных курсов):

  • Воспользуемся Менеджером Записи чтобы выполнить одно действие:

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

НоваяЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию(«UA»);

НоваяЗапись.Период = Дата(30,07,2018);

НоваяЗапись.Курс = 50;

НоваяЗапись.Кратность = 1;

НоваяЗапись.Записать();

  • Возьмем Набор Записей для нескольких введений:

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

//Внимание! Здесь важно указать критерии отбора. В противном случае все сделанные прежде записи исчезнут.

НовыйНаборЗаписей.Отбор.Валюта.Установить(Гривна, Истина);

НовыйНаборЗаписей.Отбор.Период.Установить(Дата(30,07,2018), Истина);

//Теперь можно приступить к записыванию самого набора

НоваяЗаписьНабора = НовыйНаборЗаписей.Добавить();

НоваяЗаписьНабора.Валюта = Справочники.Валюты.НайтиПоНаименованию(«UA»);

НоваяЗаписьНабора.Период = Дата(30,07,2018);

НоваяЗаписьНабора.Курс = 50;

НоваяЗаписьНабора.Кратность = 1;

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

Как удалить регистр сведений в 1с 8.3

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

Выполняем такие действия:

  • Код 1C v 8.х
  • НаборЗаписей = РегистрыСведений.ОбъектыСтроительстваОрганизаций.СоздатьНаборЗаписей();
  • НаборЗаписей.Отбор.Организация.Установить(УдаляемаяОрганизация);
  • НаборЗаписей.Записать();

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

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

Существует несколько видов регистров в 1С:

  • Накопления, хранящие остатки или обороты в числовом виде;
  • Расчета, хранящие виды расчетов и сами расчеты, обычно используются для расчета зарплаты;
  • Бухгалтерии с данными о бухгалтерских расчетах в виде Дт-Кт;
  • Регистры сведений.

На последних мы остановимся поподробнее, поскольку они позволяют компилировать данные из БД по разрезам измерений. Например, в «Ценыноменклатуры» хранятся данные для конкретной номенклатуры и характеристики по определенному виду цен.

Рис.1 Регистр «Ценыноменклатуры»

Характеристики

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


Рис.2 Периодичность и режим записи

Если попытаться создать две записи в пределах одного периода, программа выдаст ошибку «Запись с такими ключевыми полями существует!» и не даст произвести запись в базу данных.

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


Рис.3 Режимы записи

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

Запись в регистр сведений 1С

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

Чтобы добавить запись в регистр используются или менеджер записей, или набор записей. Если у записей в регистре имеется общий ключ, то необходимо использовать НаборЗаписей. А для записи одной единственной записи, если в регистре все записи уникальны, необходимо использовать МенеджерЗаписи.

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

Использование менеджера записи:

НоваяЗапись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); НоваяЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию(«USD»); НоваяЗапись.Период = Дата(31,12,2016); НоваяЗапись.Курс = 100; НоваяЗапись.Кратность = 1; НоваяЗапись.Записать();

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

Если записать без отбора данные в подчиненны регистр, возникнет ошибка.

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

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

Пример записи через менеджер записи:

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

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

Чтобы найти в регистре сведений запись и прочитать ее, нужна помощь запросов. Например, нам надо получить цены, внесенные определенным регистратором:

ВЫБРАТЬ ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.Цена ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ГДЕ ЦеныНоменклатуры.Регистратор = &Регистратор

Изменение и удаление записей

Чтобы удалить запись регистра сведений, например, все курсы валюты EUR, воспользуйтесь следующим кодом:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Формы

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

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

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


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

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

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

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

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

С регистром сведений можно производить следующие действия:

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

Особенности

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

— Записи регистра сведений могут быть как периодические, так и нет.

— Регистр сведений может быть зависимым и независимым от регистратора.

— Есть возможность сделать срез первых и последних записей на нужную дату. Это реализовано виртуальными таблицами: «СрезПервых» и «СрезПоследних». Для использования этих таблиц можно воспользоваться как отбором, так и запросом (в конструкторе запросов вы уведите эти виртуальные таблицы и сможете сделать по ним запрос). Эти таблицы будут доступны, если регистр сведений периодический.

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

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

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

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

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

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

Очевидно, что такой подход к формированию отчетов, был бы неэффективен. Поэтому на практике и существует такое понятие как проведение документа . При проведении документа (в отличие от его простой записи в базу 1С) на основании заполненной пользователем формы 1С Бухгалтерия формирует так называемые проводки , то есть вносит одну или более записей в один или более регистров .

Регистры 1С — это просто таблицы, содержащие колонки и строки. Принцип тот же самый, что и у таблиц Excel или обычных "бумажных " таблиц.

Движение документа по регистрам — это записи, вносимые документом в регистры при проведении, называются.

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

Тут была важная часть статьи, но без JavaScript её не видно!

Виды регистров 1С Бухгалтерии

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

  • Регистры сведений
  • Регистры накопления
  • Регистры расчета
  • Регистры бухгалтерии

Последний тип регистра как раз и хранит бухгалтерские проводки документов. Чем отличаются все эти друг от друга и почему, я рассказываю в читаемом мной курсе Бухгалтерии Предприятия 8 . Здесь же приведу ещё раз список существующих регистров 1С, только в виде скриншота (на примере 1С Бухгалтерии 8.2).


А вот то же самое на примере 1С:Бухгалтерии 8.3:

сайт_

Просмотр регистров 1С Бухгалтерии

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

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

сайт_

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

Внесение изменений в регистры

Если вы еще раз взглянете на фрагмент содержимого регистра бухгалтерии 1С Предприятие на рисунке выше, то обратите внимание на отсутствие кнопки Добавить . Дело в том, что не во все регистры можно вносить записи напрямую , т.е. открыть его и добавить элементы (строки) вручную, как это можно сделать с документами или справочниками.

Вопрос на засыпку: знаете ли вы, что в некоторые справочники также нельзя вносить данные через всеми любимую кнопку "Добавить". Как думаете, почему?

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

сайт_

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

Подведём итоги

В регистрах 1С Бухгалтерии хранятся данные, не менее важные, чем записаны в формах документов. Очень важно уметь правильно работать с различными регистрами — это помогает понимать, все ли правильно делает программа (в соответствии с вашими потребностями). Также все это помогает исправлять ошибки в учете.

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

Вверх