1. Главная страница » Компьютеры » 1С регистр сведений ошибка записи

1С регистр сведений ошибка записи

Автор: | 16.12.2019

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

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

Однако в 1С:Предприятии 8 существует возможность изменять записи регистров без участия документа. При этом следует учитывать, что каждая запись регистра всегда подчинена одному и только одному регистратору (документу). Поэтому с точки зрения "времени жизни" записи всегда подчинены конкретным регистраторам. Однако, записи могут изменяться без участия самого документа. Главное, чтобы в них имелась ссылка на документ.

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

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

Таким образом, чтобы изменить записи регистра необходимо:

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

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

//Выберем всех регистраторов регистра
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| УчетНоменклатуры.Регистратор
|ИЗ
| РегистрНакопления.УчетНоменклатуры КАК УчетНоменклатуры";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
//Обойдем регистраторов
Пока Выборка.Следующий() Цикл
Сообщить("Изменение записей по регистратору: " + Выборка.Регистратор);
//Для каждого регистратора выполним изменение набора записей
НаборЗаписей = РегистрыНакопления.УчетНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Значение = Выборка.Регистратор;
НаборЗаписей.Прочитать();
Для каждого Запись Из НаборЗаписей Цикл
Запись.Реквизит1 = "Тест";
КонецЦикла;
НаборЗаписей.Записать();
КонецЦикла;

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

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

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

Часто ошибки возникают при обновлении конфигурации, — особенно если обновление «перескакивает» через несколько релизов. Рассмотрим причину появления и как исправить ошибку 1С «Записи регистра сведений стали неуникальными».

Отображение ошибки

Подобная ошибка может иметь два идентичных отображения от системы 1С:

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

Программные требования к регистрам

Мы знаем, что регистр (register, англ.) сведений формируется для хранения в виде записей (строк). Каждая из них характеризуется видами измерений (профилями) и ресурсов.

Читайте также:  Insomnia the ark на краю бездны

Измерения характеризуют разрезы (типы), в которых хранятся данные. А ресурсы— непосредственно содержат их значения.

Например, register сведений «Цены товаров» имеет структуру, состоящую из двух видов профилей («Товар», «ВидЦен») и одного ресурса («Цена»):

Структура товаров в 1С

Таким образом, строки регистра в базе данных будут выглядеть так:

Строки регистра в реестре

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

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

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

Рассмотрим другой пример.

В одно время разработчиком был создан регистр «ОтветственныеЛицаПоСкладам» структурно состоящий из двух измерений («Склад» и «Помещение») и одного ресурса («Ответственный»).

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

И теперь обновлённый register имеет только единственный профиль и ресурс:

Структура его изменилась. Но строки остались!

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

Поэтому появляется ошибка 1С:«записи регистра сведений стали неуникальными». Может быть такая — имеются записи с одинаковыми измерениями.

Ручное исправление

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

Несколько записей с одним значением

В этом случае нужно удалить те, которые соответствуют теперь уже ненужным профилям.

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

Пропущенный релиз

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

Метод сравнения

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

Для решения такой задачи нужно войти в режим «Конфигурация» и выполнить команду «Сравнить конфигурации»:

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

При небольшом их количестве это несложно сделать вручную.

Автоудаление 1

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

Программное удаление дублей

  • Сначала скачать и открыть обработку;
  • Открыть register сведений с неуникальными строчками;
  • Отметить те из измерений, которые нужно удалить в результате обновления;
  • Дать команду нажатием «Свернуть дубли».

Дубли строк будут найдены обработкой и свёрнуты в одну.

После проведения обработки обновление конфигурации будет проведено корректно.

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

Проверка на наличие дублей

Автоудаление 2

Другая обработка для той же цели предложена другим специалистом в этой области — Павлом Чистовым (для мобильного варианта не поддерживается).

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

Комментируйте наши публикации. Описывайте свой опыт в решении проблемных вопросов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Hdmi arc что это такое в телевизоре

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если Вы еще не являетесь подписчиком системы БухЭксперт8:

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

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

Похожие публикации

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

Карточка публикации

Разделы: Законодательство (ЗУП), Зарплата (ЗУП), Кадры (ЗУП), Настройки (ЗУП)
Рубрика: Ошибки в 1С
Объекты / Виды начислений:
Последнее изменение: 13.04.2019

>ID, ‘post_tag’ ); // так как функция вернула массив, то логично будет прокрутить его через foreach() foreach( $termini as $termin )< echo » . $termin->name . »; > /* * Также вы можете использовать: * $termin->ID — понятное дело, ID элемента * $termin->slug — ярлык элемента * $termin->term_group — значение term group * $termin->term_taxonomy_id — ID самой таксономии * $termin->taxonomy — название таксономии * $termin->description — описание элемента * $termin->parent — ID родительского элемента * $termin->count — количество содержащихся в нем постов */ —>

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

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

Вы можете задать еще вопросов

Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8.
Оформить заявку от имени Юр. или Физ. лица вы можете здесь >>

Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *