Работа с регистрами сведений в 1С 8.3 и 8.2
Регистр сведений 1С 8 — объект метаданных, предназначенный для хранения справочной информации в разрезе определенных разработчиком измерений.
Типичный пример использования регистра сведений — хранение информации о курсе валют в разрезе валюты и периода.
Рассмотрим подробнее свойства и настройки регистра сведений.
Содержание
Настройка и свойства регистра сведений 1С 8
Два главных свойства регистра сведения — Периодичность и Режим записи.
Это уникальные свойства регистра сведений, которых больше нет ни у одного объекта метаданных. Рассмотрим их подробнее.
Периодичность регистра сведений 1C
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Данное свойство позволяет добавить к списку измерений дополнительное измерение — Период. С его помощью можно решить большое количество задач: хранение информации в базе данных, учитывая актуальность на определенную дату. Прикладных примеров использования периодов множество: хранение значение валюты на каждый день, хранение цены номенклатуры и т.д.
Периодичность может принимать следующие значения:
- Непериодический
- В пределах секунды
- В пределах дня
- В пределах месяца
- В пределах квартала
- В пределах года
При выборе периодичности, отличной от варианта Непериодический, система будет контролировать уникальность записей в пределах заданного промежутка времени. Если запись не уникальна, система 1C выдаст сообщение Запись с такими ключевыми полями существует! и не даст произвести запись в базу данных.
А одна из главных особенностей периодического регистра сведений — возможность получать готовые значения «Среза первых» и «Среза последних». Эта информация позволяет очень быстро получить из базы данных информацию о последнем (первом) установленном значении на определенную дату.
Режим записи регистра сведений
В 1С 8.2 и 8.3 это свойство может быть либо в значении «Независимый», либо — «Подчинение регистратору». В первом случае записи можно будет произвести как программно, так и из формы списка регистра сведений. Во втором случае обязательно указание документа-регистратора записи. Это накладывает определенные ограничения, но в то же время открывает новые возможности.
Свойства измерения регистра сведений
Также следует обратить внимание на палитру свойств измерений регистра сведений 1С 8.3. Особенно на флаги Ведущее и Основной отбор:
- Ведущее — свойство измерения, подразумевающее под собой информацию о том, что без значения этого измерения запись регистра не имеет смысл. На деле это означает что система при удалении значения из измерения удаляет еще и запись регистра с «Ведущим» измерением. Может быть установлено только одно измерение.
- Основной отбор — если регистр независимый, по этим измерениям будет устанавливаться регистрация изменений для плана обмена. Аналогично использование Основной отбор по периоду включает основной отбор для период для периодических регистров.
О других объектах системы 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. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!
Ирина:
Скажите, пожалуйста, столкнулась вот с чем. Регистр сведений ПокрытиеПотребностей имеет измерение ТипЗаписи, тип которого ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей.
В тексте запроса встречаю такое:
ВЫБОР КОГДА ПокрытиеПотребностей.ТипЗаписи = ЗНАЧЕНИЕ(Перечисление.ТипЗаписиПокрытияПотребностей.План) ТОГДА ПокрытиеПотребностей.Количество ИНАЧЕ 0
КОНЕЦ КАК КоличествоПланЗапланировано
Вопрос: не могли бы Вы пояснить, чем отличается ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей от Перечисление.ТипЗаписиПокрытияПотребностей?
Программист 1С:
Всё очень просто — синтаксисом.
В запросах используется ЗНАЧЕНИЕ(Перечисление.ТипЗаписиПокрытияПотребностей.План), а в объектной методике ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей.
Ирина:
А значение чего возвращает ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей?
Программист 1С:
Покажите в каком контексте вы используете «ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей»?
Ирина:
Вот например:
Регистр сведений ПокрытиеПотребностей имеет измерение ТипЗаписи, тип которого ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей.
Вот можно ли в контексте ЗНАЧЕНИЕ(Перечисление.ТипЗаписиПокрытияПотребностей.План) использовать ЗНАЧЕНИЕ(ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей.План) ?
Я понимаю, что задаю ламмерские вопросы, но мне кажется, это очень важный момент, который нигде в официальной литературе ясно не освещается.
Программист 1С:
Все учатся, не бывает ламмерских/не ламмерских 🙂
По вашему вопросу:
В запросе можно использовать только «ЗНАЧЕНИЕ(Перечисление.ТипЗаписиПокрытияПотребностей.План)», если Вы попробуете использовать вариант с «ПеречислениеСсылка» система выдаст ошибку
Ирина:
Я сейчас топорно выражусь, но правильно ли я понимаю — когда надо вернуть значение реквизита ли, табличной ли части документа или справочника, либо значение значения перечисления, используется такой синтаксис: ИмяДокумента.ИмяРеквизита или ИмяСправочника.ИмяРеквизита. А если не нужно конкретного значения, то используется ИмяДокументаСсылка.ИмяРеквизита или ИмяСправочникаСсылка.ИмяРеквизита?
Программист 1С:
Не совсем понял, давайте вернемся к начальному вопросу.
«ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей» — так «пишется» в самом коде 1С
«Перечисление.ТипЗаписиПокрытияПотребностей» — так пишется в коде запросе 1С (… = Значение(Перечисление.ТипЗаписиПокрытияПотребностей))
Это одно и тоже, мало связано с регистрами сведений 🙂
Ирина:
То есть в коде запроса использовать вот это «ПеречислениеСсылка.ТипЗаписиПокрытияПотребностей» — нельзя?
Программист 1С:
Да, верно
Ирина:
Спасибо!
Марат:
Вот у меня вопрос возник. Допустим, мы заполняем табличную часть одного документа значениями, взятыми из другого документа. При следующем открытии документа нажимаем на кнопку Заполнить/добавить (не важно) — должен выходить список документов Требование накладная, где цветом должны отмечаться уже добавленные документы, белым — не добавленные. Возможно ли хранение такой информации осуществить с помощью регистра сведений?
Кирилл:
Да, конечно, почему бы и нет.
Только что будет если мы заходим добавить в третий раз?
Проще наверное хранить эти данные в реквизитах формы, что бы не забивать базу не нужной информацией.
Марат:
Спасибо. Я просто рассматриваю различные варианты. Лучше знать максимум и выбрать необходимое, чем не узнать, что именно окажется тем необходимым.
Сергей:
«Может быть установлено только одно измерение.»
А вот и не правда
Мария:
с «Ведущим» измерением. Может быть установлено только одно измерение.
Согласна. Поправьте нас либо поправьте статью пожалуйста
Азамат:
«Нету не у одного»
Оригинально 🙂
Кирилл:
Спасибо, орфография не моя сильная сторона 🙂
Анна:
Помогите!Создаю отпуск без сохранения работнику который работает по внутреннему совмещению. по одной из должностей проводится, а по другой пишет не возможно пишет- запись с такими ключевыми полями существует регистр 13
Наталия:
Ключевые поля регистра сведений, как добавить? Почему не все измерения являются ключевыми полями?
Аноним:
Подскажите, пожалуйста … Есть закладка у проведеного документа, гда показаны записи по регистрам. Но не все поля пегистра там по умолчанию показываются. Не видимые поля можно показать через Настройку Списка. А как настроить чтоб все поля выходили видимыми по умолчанию?
Aleksei:
Подскажите пожалуйста, как написать код в РегистреСведнений что бы записывались новые изменения, но и оставались старые (например оценка с начало была 4, документ провели и записали, а потом она стала 5 и оценка тоже записалась) Делаю отчёт который будет показывать изменения в документе
luckyea:
«На деле это означает что система при удалении значения из измерения удаляет еще и запись регистра с «Ведущим» измерением.»
удалил, но запись регистра так и не удалилась
Сергей:
Свойство Ведущее имеет смысл использовать лишь тогда, когда измерение имеет тип ссылки на объект базы данных. Установка свойства Ведущее будет говорить о том, что запись регистра сведений представляет интерес, пока существует тот объект, ссылка на который выбрана в качестве значения этого измерения в этой записи.
При удалении объекта все записи регистра сведений по этому объекту тоже будут автоматически удалены.
Тимофей:
Что означают поля «Порядок» и «ссылка», подчиненные ресурсу регистра сведений (он имеет ссылочный тип)? Эти поля доступны в конструкторе запроса. Так понимаю они являются полями физической таблицы РС.
б:
.
Анатолий:
Добрый день,
Вопрос такой: регистратор в регистре сведений это реквизит или измерение?
В конфигураторе Регистратор виден по кнопке Стандартные реквизиты.
Спасибо
Анатолий:
И еще вопрос:
В регистре сведений мне нужны только регистратор и сумма расчета.
В этом случае я в структуре регистра указываю подчинение регистратору и ресурс Сумма.
Этого достаточно для записи/получение сумм?