Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Работа с регистрами сведений в 1С 8.3 и 8.2

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

Список регистров в 1С 8.2

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

Рассмотрим подробнее свойства и настройки регистра сведений.

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

Два главных свойства регистра сведения — Периодичность и Режим записи.

Основные атрибуты регистров

Это уникальные свойства регистра сведений, которых больше нет ни у одного объекта метаданных. Рассмотрим их подробнее.

Периодичность регистра сведений 1C

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

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

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

Периодичность может принимать следующие значения:

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

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

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

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

В 1С 8.2 и 8.3 это свойство может быть либо в значении «Независимый», либо — «Подчинение регистратору». В первом случае записи можно будет произвести как программно, так и из формы списка регистра сведений. Во втором случае обязательно указание документа-регистратора записи. Это накладывает определенные ограничения, но в то же время открывает новые возможности.

Свойства измерения регистра сведений

Также следует обратить внимание на палитру свойств измерений регистра сведений 1С 8.3.  Особенно на флаги Ведущее и Основной отбор:

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

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

О других объектах системы 1С можно прочитать в разделе конфигурирование 1С.

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

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

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

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

Использование набора записей регистра сведений 1С:

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

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

Видеолекция по регистрам сведений в 1С для начинающих:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 28 на “Работа с регистрами сведений в 1С 8.3 и 8.2
  1. Скажите, пожалуйста, столкнулась вот с чем. Регистр сведений ПокрытиеПотребностей имеет измерение ТипЗаписи, тип которого ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей.
    В тексте запроса встречаю такое:
    ВЫБОР КОГДА ПокрытиеПотребностей.ТипЗаписи = ЗНАЧЕНИЕ(Перечисление.ТипЗаписиПокрытияПотребностей.План) ТОГДА ПокрытиеПотребностей.Количество ИНАЧЕ 0
    КОНЕЦ КАК КоличествоПланЗапланировано
    Вопрос: не могли бы Вы пояснить, чем отличается ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей от Перечисление.ТипЗаписиПокрытияПотребностей?

    Ответить

    • Всё очень просто — синтаксисом.
      В запросах используется ЗНАЧЕНИЕ(Перечисление.ТипЗаписиПокрытияПотребностей.План), а в объектной методике ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей.

      Ответить

      • А значение чего возвращает ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей?

        Ответить

        • Покажите в каком контексте вы используете «ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей»?

          Ответить

          • Вот например:
            Регистр сведений ПокрытиеПотребностей имеет измерение ТипЗаписи, тип которого ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей.
            Вот можно ли в контексте ЗНАЧЕНИЕ(Перечисление.ТипЗаписиПокрытияПотребностей.План) использовать ЗНАЧЕНИЕ(ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей.План) ?
            Я понимаю, что задаю ламмерские вопросы, но мне кажется, это очень важный момент, который нигде в официальной литературе ясно не освещается.

            Ответить

        • Все учатся, не бывает ламмерских/не ламмерских 🙂

          По вашему вопросу:

          В запросе можно использовать только «ЗНАЧЕНИЕ(Перечисление.ТипЗаписиПокрытияПотребностей.План)», если Вы попробуете использовать вариант с «ПеречислениеСсылка» система выдаст ошибку

          Ответить

          • Я сейчас топорно выражусь, но правильно ли я понимаю — когда надо вернуть значение реквизита ли, табличной ли части документа или справочника, либо значение значения перечисления, используется такой синтаксис: ИмяДокумента.ИмяРеквизита или ИмяСправочника.ИмяРеквизита. А если не нужно конкретного значения, то используется ИмяДокументаСсылка.ИмяРеквизита или ИмяСправочникаСсылка.ИмяРеквизита?

            Ответить

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

          «ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей» — так «пишется» в самом коде 1С

          «Перечисление.ТипЗаписиПокрытияПотребностей» — так пишется в коде запросе 1С (… = Значение(Перечисление.ТипЗаписиПокрытияПотребностей))

          Это одно и тоже, мало связано с регистрами сведений 🙂

          Ответить

  2. То есть в коде запроса использовать вот это «ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей» — нельзя?

    Ответить

  3. Вот у меня вопрос возник. Допустим, мы заполняем табличную часть одного документа значениями, взятыми из другого документа. При следующем открытии документа нажимаем на кнопку Заполнить/добавить (не важно) — должен выходить список документов Требование накладная, где цветом должны отмечаться уже добавленные документы, белым — не добавленные. Возможно ли хранение такой информации осуществить с помощью регистра сведений?

    Ответить

    • Да, конечно, почему бы и нет.

      Только что будет если мы заходим добавить в третий раз?
      Проще наверное хранить эти данные в реквизитах формы, что бы не забивать базу не нужной информацией.

      Ответить

  4. Спасибо. Я просто рассматриваю различные варианты. Лучше знать максимум и выбрать необходимое, чем не узнать, что именно окажется тем необходимым.

    Ответить

  5. «Может быть установлено только одно измерение.»
    А вот и не правда

    Ответить

    • с «Ведущим» измерением. Может быть установлено только одно измерение.
      Согласна. Поправьте нас либо поправьте статью пожалуйста

      Ответить

  6. «Нету не у одного»
    Оригинально 🙂

    Ответить

    • Спасибо, орфография не моя сильная сторона 🙂

      Ответить

  7. Помогите!Создаю отпуск без сохранения работнику который работает по внутреннему совмещению. по одной из должностей проводится, а по другой пишет не возможно пишет- запись с такими ключевыми полями существует регистр 13

    Ответить

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

    Ответить

  9. Подскажите, пожалуйста … Есть закладка у проведеного документа, гда показаны записи по регистрам. Но не все поля пегистра там по умолчанию показываются. Не видимые поля можно показать через Настройку Списка. А как настроить чтоб все поля выходили видимыми по умолчанию?

    Ответить

  10. Подскажите пожалуйста, как написать код в РегистреСведнений что бы записывались новые изменения, но и оставались старые (например оценка с начало была 4, документ провели и записали, а потом она стала 5 и оценка тоже записалась) Делаю отчёт который будет показывать изменения в документе

    Ответить

  11. «На деле это означает что система при удалении значения из измерения удаляет еще и запись регистра с «Ведущим» измерением.»

    удалил, но запись регистра так и не удалилась

    Ответить

    • Свойство Ведущее имеет смысл использовать лишь тогда, когда измерение имеет тип ссылки на объект базы данных. Установка свойства Ведущее будет говорить о том, что запись регистра сведений представляет интерес, пока существует тот объект, ссылка на который выбрана в качестве значения этого измерения в этой записи.
      При удалении объекта все записи регистра сведений по этому объекту тоже будут автоматически удалены.

      Ответить

  12. Что означают поля «Порядок» и «ссылка», подчиненные ресурсу регистра сведений (он имеет ссылочный тип)? Эти поля доступны в конструкторе запроса. Так понимаю они являются полями физической таблицы РС.

    Ответить

  13. Добрый день,
    Вопрос такой: регистратор в регистре сведений это реквизит или измерение?
    В конфигураторе Регистратор виден по кнопке Стандартные реквизиты.

    Спасибо

    Ответить

  14. И еще вопрос:
    В регистре сведений мне нужны только регистратор и сумма расчета.
    В этом случае я в структуре регистра указываю подчинение регистратору и ресурс Сумма.
    Этого достаточно для записи/получение сумм?

    Ответить

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

Ваш адрес email не будет опубликован.