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

Профессия — 1С

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

рубрики: Регистры | Дата: 12 Февраль, 2017

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

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

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

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

Поздравляю! Мы только что грохнули все записи в регистре сведений. Хотя казалось бы, что при записи пустого набора записей ничего криминального произойти не может. Но если обратиться к синтакс-помощнику, то можно увидеть, что никакого противоречия нет. Если мы записываем набор записей и в методе Записать() в параметрах не указано Ложь (а по умолчанию подставляется Истина), то происходит замещение существующего набора записей тем, который мы записываем, в соответствии с установленным отбором. А поскольку мы отбор не устанавливали, то для замещения выбираются все записи регистра, и успешно замещаются пустым набором записей. И это грабли на которые иной раз наступают разработчики, которые не первый день в 1С. Кстати, если мы умышленно хотим полностью очистить регистр, то как раз именно этим методом и надо пользоваться. Заостряю на этом внимание, потому что достаточно часто встречается код, когда перед удалением набор записей прочитывается, потом очищается и только потом записывается. Хотя чтение и очистка набора записей здесь абсолютно излишни.

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

Период Товар Поставщик Сумма
01.01.2017 Карандаш ООО «Леспром» 10
25.01.2017 Карандаш ООО «Леспром» 15
01.01.2017 Карандаш ПАО «Канцтовары» 27
01.02.2017 Карандаш ПАО «Канцтовары» 31
03.01.2017 Ручка ПАО «Канцтовары» 137
01.02.2017 Ручка ПАО «Канцтовары» 145

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

Хочу также обратить внимание на метод Установить(). В том случае, когда вид сравнения в отборе – Равно этот метод позволяет установить отбор с минимальным количеством кода.
После выполнения этого кода в нашем регистре останутся следующие записи

Период Товар Поставщик Сумма
25.01.2017 0:00:00 Карандаш ООО «Леспром» 15
01.02.2017 0:00:00 Карандаш ПАО «Канцтовары» 31
03.01.2017 0:00:00 Ручка ПАО «Канцтовары» 137
01.02.2017 0:00:00 Ручка ПАО «Канцтовары» 145

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

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

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

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

В методе Записать() параметр отвечающий за замещение существующих записей установлен в Ложь. Это означает, что наш набор записей будет только добавляться к существующему. В первый раз код отрабатывает успешно. Если же мы повторно попытаемся выполнить этот код, то получим окно с сообщением об ошибке, т.к. у нас уже есть записи с таким набором измерений и добавить еще одни такие же невозможно.


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

В случае работы с одной записью вместо набора записей можно использовать менеджер записи.

Программирование в 1С для всех

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

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

Создать менеджер регистра сведений достаточно просто, например

МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;

Хочу заметить, что работать с менеджером регистра сведений можно или в толстом клиенте, или в серверном контексте. В тонком клиенте код, написанный в этой статье работать не будет!

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

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

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

МенеджерЗаписи . Период = ТекущаяДата ();
МенеджерЗаписи . ВидТоплива = ВидТоплива ;
МенеджерЗаписи . ПоставщикТоплива = ПоставщикТоплива ;
МенеджерЗаписи . Цена = Цена ;
МенеджерЗаписи . Записать ();

Объект РегистрСведенийМенеджерЗаписи позволяет управлять записью регистра сведений и применим только для независимых регистров. Доступ к записи обеспечивается путем присвоения значений полям объекта, которые соответствуют измерениям, ресурсам и реквизитам регистра. В Вашем примере это измерения Период, ВидТоплива и Поставщик, а также ресурс Цена.

Переменные, которые присваиваются полям регистра в моем случае это реквизиты управляемой формы 1С.

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

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

Как сделать так, чтобы регистр ЦеныНаТопливо не перезаписывался при одинаковых измерениях и периоде? Для этого нам понадобятся два метода объекта РегистрСведенийМенеджерЗаписи — метод Прочитать и метод Выбран.

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

В этом случае наш код изменится.

МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;
МенеджерЗаписи = МенеджерЦеныНаТопливо . СоздатьМенеджерЗаписи ();
МенеджерЗаписи . Период = ТекущаяДата ();
МенеджерЗаписи . ВидТоплива = ВидТоплива ;
МенеджерЗаписи . ПоставщикТоплива = ПоставщикТоплива ;
МенеджерЗаписи . Прочитать ();

Если Не МенеджерЗаписи . Выбран () Тогда
МенеджерЗаписи . Период = ТекущаяДата ();
МенеджерЗаписи . ВидТоплива = ВидТоплива ;
МенеджерЗаписи . ПоставщикТоплива = ПоставщикТоплива ;
МенеджерЗаписи . Цена = Цена ;
МенеджерЗаписи . Записать ();
КонецЕсли;

В этом случае мы присваиваем значения ключевым полям (измерениям) и периоду. А после применяем метод Прочитать. Данный метод считывает записи с регистра по указанным ключевым полям (измерениям) и периоду. Если есть записи с данным набором полей, то метод Выбран возвращает Истину, иначе – Ложь. В Вашем примере, если метод Выбран вернул значение Ложь (записей нет), то мы присваиваем значения измерениям и ресурсу и записываем.

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

МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;
МенеджерЗаписи = МенеджерЦеныНаТопливо . СоздатьМенеджерЗаписи ();
МенеджерЗаписи . Период = ТекущаяДата ();
МенеджерЗаписи . ВидТоплива = ВидТоплива ;
МенеджерЗаписи . ПоставщикТоплива = ПоставщикТоплива ;
МенеджерЗаписи . Прочитать ();

Если МенеджерЗаписи . Выбран () Тогда
МенеджерЗаписи . Период = ТекущаяДата ();
МенеджерЗаписи . ВидТоплива = ВидТоплива ;
МенеджерЗаписи . ПоставщикТоплива = ПоставщикТоплива ;
МенеджерЗаписи . Удалить ();
КонецЕсли;

Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

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

Сергей Лунев

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

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

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


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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Иногда требуется программно запретить удаление записей регистра сведений 1С. Проблема в том, что у регистра сведений не существует как таковой операции удаления записи. Любое удаление — это просто запись пустого Набора записей. При этом, если у Набора записей заполнен отбор, то удалятся только записи, соответствующие ему. А если отбора нет, то удалятся вообще все записи регистра сведений.

Таким образом, чтобы программно запретить (прервать) удаление, нужно в Модуле набора записей регистра сведений создать процедуру ПередЗаписью и в ней присвоить переменной Отказ значение Истина.

Осталось только определить, в каком случае запись набора является удалением, а в каком — нет. Для этого нужно обратиться к двум функциям Набора записей: Количество() и Модифицированность(). Возможны следующие варианты:

    При добавлении новой записи

Потом записывается новая, при этом, как и при добавлении новой записи

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

Процедура ПередЗаписью ( Отказ , Замещение )

Если ЭтотОбъект . Количество ( ) = 0 И ЭтотОбъект . Модифицированность ( ) = Истина Тогда

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

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

Процедура ПередЗаписью ( Отказ , Замещение )

//Проверим, что это удаление
Если ЭтотОбъект . Количество ( ) = 0 И ЭтотОбъект . Модифицированность ( ) = Истина Тогда

//Создадим менеджер записи регистра сведений
МЗ = РегистрыСведений . НашРегистр . СоздатьМенеджерЗаписи ( ) ;

//Заполним измерения в менеджере записи по данным отбора
Для каждого ЭлементОтбора из ЭтотОбъект . Отбор Цикл
МЗ [ ЭлементОтбора . Имя ] = ЭлементОтбора . Значение ;
КонецЦикла ;

//Получим запись по заполненным измерениям
МЗ . Прочитать ( ) ;

//Дальше можно проверять любые условия. В менеджере записи теперь
//заполнены все измерения, ресурсы и реквизиты
Отказ =? ( МЗ . Ресурс 1 = “Какое-то значение” , Истина , Ложь ) ;

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

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

Описание:

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

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

Регистр сведений, фактически, представляет собой массив данных, необходимый, чтобы реализовать функцию, которая может выдать необходимую информацию по определенному набору аргументов. Аргументы функции называются измерениями, а результат функции – ресурсами. В приведенном выше примере регистр “ЦеныКонкурентов” будет содержать измерения “Конкурент” и “Товар”, и ресурс “Цена”. Ресурсов может быть больше чем один: например, можно хранить оптовую и розничную цены.

Для разворота этой информации во времени используется поле “Период” регистра. Оно не вносится в качестве измерения, а добавляется системой автоматически при создании периодического регистра.

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

Если регистр не периодический, то поле “Период” для него не создается. В приведенном примере регистр “ЦеныКонкурентов” может быть непериодическим, если мы не хотим хранить историю изменения цен, а хотим иметь только актуальные цены. Тогда функция регистра сможет ответить на вопрос “какая сейчас цена у такого-то конкурента на такой-то товар”, но не сможет ответить на вопрос “какая была цена у такого-то конкурента на такой-то товар в начале года”.

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

Действительно, по одному товару по одному конкуренту может быть только одна цена. Если по какой-либо причине мы можем получить несколько цен и хотим занести эту информацию в базу данных, то нам нужно создать еще одно измерение для хранения того значения, по которому эти цены могут различаться. Например, можно завести измерение “ИсточникИнформации”. Тогда можно будет вводить цены конкурентов в разрезе источников.

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

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

Эти два варианта влияют на способ внесения информации, а не на основную логику работы регистра.

Документ, которым вносится запись в регистр сведений, называется регистратором.
Регистры, записываемые независимо, могут свободно редактироваться вручную или средствами встроенного языка. При этом если измерение такого регистра назначено как “ведущее” и значением измерения является ссылка на объект базы данных, то будет считаться, что запись регистра имеет смысл, только пока существует этот объект. Например, если назначить ведущим измерение “Конкурент”, то считается, что запись имеет смысл только как информация по данному конкуренту. Соответственно, при удалении конкурента записи по нему будут удалены автоматически.

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

В программных модулях для общих действий над регистром сведений (поиск, выбор и создание записей регистра) служит объект РегистрСведенийМенеджер. . Для чтения, записи и удаления отдельных записей регистра сведений, не управляемого регистраторами, служит объект РегистрСведенийМенеджерЗаписи. . Для считывания и занесения набора записей в базу данных по определенному условию отбора служит объект РегистрСведенийНаборЗаписей. . Для динамического обхода записей регистра служит объект РегистрСведенийВыборка. .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Регистры сведений в 1c 8.2 — 8.3

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

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

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

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

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

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

    Чтение регистра сведений лучше всего осуществлять с помощью запроса.
    Работа с запросами является отдельной темой и в рамках данной статьи не рассматривается.
    Однако можно читать записи и без запроса с помощью нескольких методов объекта «РегистрСведенийМенеджер».
    Методы «Выбрать» и «ВыбратьПоРегистратору» позволяют получить выборку записей с учетом заданного отбора.
    Метод «Получить» позволяет получить одну запись, для которой в параметрах метода передается отбор по всем ключевым реквизитам.
    Методы «ПолучитьПервое» и «ПолучитьПоследнее» позволяют получить соответственно первую или последнюю запись периодического регистра сведений, удовлетворяющую заданному в параметрах метода отбору.
    Методы «СрезПервых» и «СрезПоследних» позволяют получить соответственно срез первых или последних записей, удовлетворяющих заданному в параметрах метода отбору.
    Кроме этих методов есть еще два метода, «СоздатьМенеджерЗаписи» и «СоздатьНаборЗаписей», с помощью которых можно создать соответсвенно объект «РегистрСведенийМенеджерЗаписи» или «РегистрСведенийНаборЗаписей», после чего задать значения всех или некоторых ключевых реквизитов и с помощью метода объекта «Прочитать» выполнить чтение в объект записей из базы, удовлетворяющих присвоенным значениям ключевых реквизитов.
    В итоге получаем объект, содержащий нужные нам одну или несколько записей.

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

    Как добавить запись в непериодический независимый регистр сведений?

    Руководство 1С

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

    Оглавление

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Особенности

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

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

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

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

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

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

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

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

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

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

    Как очистить регистр сведений?

    Программный вариант полной очистки:

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

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

    В случае, если не установлен отбор по измерениям и не производится начальное считывание методом Прочитать(), то в момент вызова Записать(), сохраняется текущее — пустое состояние.

    Интерактивное удаление записей регистра сведений

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

    Выделяем через shift и все записи командой Ctrl+A и нажимаем «Delete» или через контекстное меню «Удалить»

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

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

    В обычных же формах стандартно можно удалять по одной строке.

    Обработки для удаления записей регистров сведений

    Групповая обработка регистров сведений с произвольным алгоритмом
    • Кроме изменения и удаления записей регистров, добавлена возможность использовать произвольный алгоритм.
    Универсальный редактор регистров сведений. 8.3 УФ
    • Выбор РС из списка, на форме отображается динамический список регистра.
    • Генерирует прямо на форме поля для изменения текущей записи. Можно изменять, добавлять, удалять записи.
    • Для группы записей (выделенные строки динамического списка) можно изменять поля, в том числе измерения. ВАЖНО: Запись идет в режиме перезаписи, так что если итоговая запись уже есть или вы изменили единственное измерение у группы записей — последствия могут быть плачевными. Но, надеюсь, вы понимаете, что собираетесь сделать.
    • При изменении полей — подсвечивается рамка. Вы всегда в курсе, что будет изменяться. Особенно актуально для групп записей.
    • Есть возможность записи в режиме загрузки
    • Есть возможность установить дополнительные свойства записи (иногда очень важно)
    • Использует привилегированный режим.
    Групповая обработка регистров сведений на основе обработки от Gmix
    • Изменение (от одного до всех полей), удаление и копирование (с заменой любого количества полей) записей регистров сведений.

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

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

    Модуль представляет собой обработку, которая позволяет настраивать и сохранять алгоритмы загрузки прайсов от разных поставщиков. Настроив один раз правила загрузки прайса от поставщика, все последующие загрузки будут сведены к нескольким нажатиям кнопки. Модуль работает с любой конфигурацией 1С 8.1, 1С 8.2 и 1С 8.3.

    1. Автоматическое создание и обновление и цен.

    2. Гибкий поиск товара: по коду, наименованию, любому реквизиту товара или по колонке табличной части.

    3. Загрузка из файла любых данных, существующих в карточке товара в 1С установка фиксированных значений.

    4. Загрузка цен товаров и цен поставщиков в любом количестве, с возможностью пересчета цен при импорте.

    Цена: 150$ Подробная информация о модуле

    Главная Программирование Основные функции 2 способа очистки записей регистра сведений
    2 способа очистки записей регистра сведений
    Написал Валецкий Станислав
    Очень часто при отладке, а также во время долгой работы с базой возникает необходимость полной или частичной очистки регистра сведений. Например регистр ценообразования, его актуальность допустим – 1 или 2 года. Больше хранить незачем, тогда – чистим. Другой пример при создании нового регистра и отладке его заполнения.

    Допустим Есть регистр сведений – “ТестовыйРегистр” с измерениями – “измерение1”, “измерение2” и с ресурсом – “ресурс1”.

    Ссылка на основную публикацию