Запись регистра

Вопрос Чем реквизит отличается от измерения — это понятно всем. А вот чем реквизит отличается от ресурса?

Регистр сведений – это вырожденный случай регистров. Поэтому у него «не все так», как у «настоящих» регистров (накопления, бухгалтерии, расчета). И чтобы не путаться дальше будем рассматривать все в несколько в упрощенном виде.

Сначала посмотрим, как работает «настоящий» регистр, регистр накопления.
Регистр простой, два измерения, один ресурс и один реквизит (рис. 1).

Допустим, в регистре есть четыре записи (рис. 2).

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

«Функция» регистра накопления, грубо говоря, заключается в том, чтобы суммировать значения ресурсов. Причем это суммирование выполняется для всех различных значений измерений. То есть, если вы попросите «функцию» этого регистра, то получите следующий результат (рис. 4).

То есть значения ресурсов для записей, содержащих одинаковые значения измерений (в данном случае Значение1 и Значение2) будут просуммированы (9 + 1 = 10).
Понятно, что когда вы получаете функцию, невозможно получить какие-либо реквизиты, потому что, например, непонятно, как можно «сложить» Заметка99 и Заметка1?. Можно только «развернуть функцию», и посмотреть, из каких записей она сложилась, какие у этих записей реквизиты. Но сам результат «функции» не содержит информации о каждой из записей (рис. 5).

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

Теперь посмотрим на регистр сведений. Возьмем периодический регистр сведений с такой же структурой и такими же записями. Его основная таблица будет выглядеть следующим образом (рис. 6).

«Функцией» периодического регистра сведений является получение наиболее ранних или наиболее поздних записей, на некоторую дату по различным сочетаниям значений измерений. Например «функция» этого регистра на 29 число будет выглядеть следующим образом (рис. 7).

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

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

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

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

Измерения регистра описывают параметры этой функции.

Возвращаемое значение (значения) функции описываются ресурсами регистра.

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

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

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

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

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

Код 1C v 8.х // Добавление записей в регистр, подчиненный регистратору (замещение)
НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;
НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
НоваяЗапись.ЛимитПоставщика = 50;
НаборЗаписей.Записать();
По умолчанию запись выполняется с замещением, т. е. существующие записи этого регистратора в регистре сведений будут удалены.
Для того чтобы добавить записи к существующим записям регистратора, необходимо указывать значение Ложь параметра метода Записать() набора записей. При этом необходимо позаботиться о том, чтобы значения измерений добавляемых записей были уникальны для записей данного регистратора в регистре сведений, иначе запись выполнена не будет:
Код 1C v 8.х // Добавление записей в регистр, подчиненный регистратору
НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;
НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
НоваяЗапись.ЛимитПокупателю = 25;
НаборЗаписей.Записать(Ложь);
Информация взята с сайта http://helpf.pro

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

Код 1C v 8.х МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();

МенеджерЗаписи.Объект = ПолеВводаНоменклатура;
МенеджерЗаписи.Свойство = ПолеВводаСвойствоНоменклатуры;
МенеджерЗаписи.Значение = ПолеВводаЗначениеСвойства;
МенеджерЗаписи.Записать();
В результате выполнения этого кода новая запись будет добавлена в регистр, или, если регистр уже содержит запись с выбранными значениями измерений Объект и Свойство, — существующая запись будет заменена новой.
Если требуется добавить несколько записей в регистр сведений, можно использовать объект РегистрСведенийНаборЗаписей.<имя>.
Например, для того, чтобы в тот же самый регистр сведений ЗначенияСвойствОбъектов добавить несколько записей о значениях различных свойств выбранной номенклатуры, можно использовать следующий код (предполагается, что свойства и соответствующие им значения находятся в таблице значений ТаблицаСвойств, сформированной заранее):
Код 1C v 8.х НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Объект.Установить(ПолеВводаНоменклатура);
Для Каждого СтрокаТаблицы Из ТаблицаСвойств Цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Объект = ПолеВводаНоменклатура;
НоваяЗапись.Свойство = СтрокаТаблицы.Свойство;
НоваяЗапись.Значение = СтрокаТаблицы.ЗначениеСвойства;
КонецЦикла;
НаборЗаписей.Записать();
В результате выполнения этого кода новые записи будут добавлены в регистр, или, если регистр уже содержит записи с указанным значением измерения Объект (по которому установлен отбор в наборе записей), — существующие записи будут заменены новыми.

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

Обработка предназначена для разработчиков и администраторов данных.

Внешняя обработка ГрупповоеИзменениеРеквизитов.epf для запуска в «1С:Предприятии» версии 8.3 находится в каталоге EXE/EXTREPS/UNIREPS83/BatchObjectsChange

Если в конфигурации используется Библиотека стандартных подсистем, то эти операции можно выполнить в подсистеме «Групповое изменение объектов».

Универсальный подбор и обработка объектов 1С 8.3

Скачать универсальную обработку объектов 1С 8.3.

В обычном приложении версии платформы 1С 8.2 и 8.1 (на обычных формах) была такая замечательная обработка, как «Универсальный подбор и обработка объектов». Она значительно упрощала жизнь программистам и администраторам программы.

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

Поиск и отбор объектов

После скачивания обработки, мы можем запустить ее как внешнюю. Кто не знает, это делается через меню «Файл» – «Открыть». Появится окно обработки:

На первой закладке мы должны выбрать объект, с которым собираемся работать. И так, в поле «Объект поиска» уже выбран документ «Реализация (акты, накладные)». Это потому, что до этого уже выбирали данный объект. Обработка умеет запоминать.

По кнопке «Настройка отбора», мы можем установить отбор практически по любому полю объекта:

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

После всех настроек объекты нужно отобрать. Нажмем на кнопку «Найти объекты» и смотрим результат отбора:

Обработка элементов

Перейдем на закладку «Обработки»:

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

Произвольный алгоритм

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

Установка реквизитов

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

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

Перенумерация объектов

Обработка «Перенумерация объектов» соответственно позволяет перенумеровать документы, либо изменить коды справочников. Обработка предоставляет богатый набор действий. Например, вы решили поменять префикс у документов, которые отобрали:

Нажимаем «Сохранить настройки» и закрываем окно.

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

Теперь мы можем последовательно выполнить выбранные настройки, нажав кнопку «Выполнить».

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

  • Функционал обработки
  • Возможности отбора
  • Скачать обработку
Функционал обработки

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

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

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

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

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

Мы рекомендуем изменять записи с включенной опцией «При изменении данных использовать транзакцию» — таким образом, при возникновении ошибки, изменения не будут зафиксированы и база данных останется в исходном состоянии.

Возможности отбора

В обработке широчайшие возможности задания отбора. При этом отбор сразу применяется к списку записей регистра сведений (нижняя таблица в форме обработки) а при изменении данных — к запросу получения данных. Доступные виды сравнения (список видов сравнения определяется типом колонки):

  1. Больше — сравниваемое значение больше заданного в условии.
  2. Больше или равно — сравниваемое значение больше или равно заданному в условии.
  3. Меньше — сравниваемое значение меньше заданного в условии.
  4. Меньше или равно — сравниваемое значение меньше или равно заданному в условии.
  5. В группе — проверка того, что сравниваемое значение принадлежит иерархии заданного значения. Имеет смысл при сравнении для иерархических объектов.
  6. Не в группе — проверка на то, что значение не находится в указанной группе.
  7. В списке — проверка того, что сравниваемое значение входит в список.
  8. Не в списке — проверка на то, что значение не находится в указанном списке.
  9. В группе из списка — проверка того, что сравниваемое значение входит в список с учетом иерархии.
  10. Не в группе из списка — проверка на то, что значение не находится в указанном списке с учетом иерархии.
  11. Заполнено— осуществляет проверку поля на то, что его значение отличается от значения данного поля по умолчанию.
  12. Не заполнено — обратная операция к виду сравнения «Заполнено».
  13. Равно — проверка на равенство.
  14. Не равно — проверка на неравенство. Для строковых значений регистр символов не учитывается.
  15. Содержит — сравниваемое значение содержит подстроку, заданную в условии сравнения.
  16. Не содержит — проверка на то, что строка не содержит указанную подстроку.
  17. Подобно — сравниваемое значение удовлетворяет маске, заданной в условии сравнения:

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

Причины возникновения ошибки

Связано это может быть с несколькими причинами:

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

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

Ключевые параметры регистра сведений называются Измерениями, а значения по измерениям указываются в Ресурсах. PDF По правилам записи в регистры сведений ключевые параметры определяют значение ОДНОЗНАЧНО.

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

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

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

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

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

Исправление ошибки «Записи регистра сведений стали неуникальными»

Последовательное обновление конфигурации без «пропусков»

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

При возникновении ошибки обновите текущую конфигурацию, например, Бухгалтерия предприятия 3.0.67.54 не сразу на релиз 3.0.67.72, а последовательно на:

  • 0.67.63;
  • 0.67.67;
  • 0.67.70;
  • 0.67.72.

Если это не помогло, используйте следующие рекомендации.

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

Настройка автоматического обновления

Настройте автоматическое обновление 1С: раздел Администрирование — Настройки программы — Интернет-поддержка и сервисы — Обновление версии программы.

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

Для автоматического обновления программы 1С должна быть настроена Интернет-поддержка.

Сравнение конфигураций

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

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

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

Пошаговая инструкция сравнения основной конфигурации и конфигурации базы данных.

Шаг 1. Открытие Конфигуратора.

Войдите в Конфигуратор информационной базы.

Откройте конфигурацию по кнопке Конфигуратор — Открыть конфигурацию. В правом окне откроется список всех объектов 1С.

Выберите команду Сравнить конфигурации.

Шаг 2. Настройка сравнения конфигураций.

Установите настройки как показано на рисунке.

Шаг 3. Запуск сравнения конфигураций.

Нажмите на кнопку ОК. Программа 1С выдаст окно сравнения конфигураций, в котором нужно перейти на регистр сведения Цены номенклатуры и раскрыть различия, нажав на «+» справа от объекта.

Шаг 4. Исправление ошибки.

Из таблицы сравнения видно, что в регистре Цены номенклатуры в основной конфигурации отсутствует параметр измерения Тип цен.

Войдите в базу данных и откройте регистр Цены номенклатуры: кнопка Главное меню — Все функции — Регистры сведений — Цены номенклатуры.

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

  • Продажная — 3 670 руб.;
  • Оптовая — 2 090 руб.

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

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

Если причину самостоятельно, используя указанные рекомендации, отыскать не удалось, базу придется передать профессионалам 1С для исправления.

См. также:

  • Ошибка печати в 1С: как исправить
  • Лицензия не обнаружена. Не обнаружен ключ защиты программы 1С: как исправить
  • Не обнаружена установленная версия 1С Предприятия
  • Значение поля номер не уникально 1С 8.3: как исправить

Если Вы еще не являетесь подписчиком:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

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

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно