Предопределенный элемент не уникален

Ошибка при обновлении базы

Я
   Lopik Прошу помощи.
Пытался обновить базу Бухгалтерии с 3.0.40.36 на 3.0.40.42 Появилась ошибка — Справочник.ВидыОтправляемыхДокументов: Имя предопределенного элемента не уникально (‘БухОтчетностьМП’) -\- (‘БухОтчетностьСОНКО’) -\- (‘ФинансовыйРезультатИнвестиционногоТоварищества’) -\- (‘СведенияСЗВ64’) -\- (‘ОтходыСубъектовМСП’) Посмотрел через Поиск и удаление дублей — все эти элементы не используются.

Включил возможность изменения конфигурации. Удалил перечисленные предопределенные элементы справочника в конфигураторе (и основные и дублирующие). Нажал кнопку "Обновить конфигурацию базы данных".

Загружаю 1С в режиме отладки, удаляю помеченные объекты.

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

И эти элементы снова появляются в справочнике! ЧЯДНТ?

Обновление БП 3.0 — ошибка "Имя предопределенного элемента не уникально"

Неужели файл поставки конфигурации из 1С идёт с дублями? Как же всё-таки обновиться?
 
 

   grayshadow

файл поставки цф или цфу?

   Lopik

cf

   grayshadow

откройте его как внешний, посмотрите чего там с предопределенными

   iolxrfsf

> Неужели файл поставки конфигурации из 1С идёт с дублями?
    Да.
> Как же всё-таки обновиться?
    Обновиться с помощью старой версии платформы до новой версии конфигурации, где дубли убраны.

   Lopik

Создал новую базу, загрузил в неё из файла *.cf Дубли появились. Я очень зол.

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

   grayshadow

(на будущее: в конфигураторе файл — открыть — выбираем цф-ник)
+1 мне тоже интересно чем поможет старая платформа, если дубли в самом цф…
я бы натянула цф-ник, потом (не обновляя саму базу) разрешила изменять этот долбанный справочник и покосила дубли… но вот хз что будет при следующем обновлении…

   ibreiter

(5) Вам в (3) уже советовали, сначала проверьте, чего вообще внутри там находится..

   ibreiter

Ну и на поддержку ставится загрузкой конфигурации

   grayshadow

(8) тут утверждают что в ТИПОВОМ 3.0.40.42.cf содержатся дубли:)

   vittany

У меня проблема решилась обновлением на последний,не косячный редиз. Обновлялась с 3.0.37.57 на 3.0.41.64. Обновлялась через Поддержка,с указанием нужного мне цф.Так, чтобы конфа поставщика обновилась на нормальный релиз сразу

 
 

   Stim

Дубли где появляются — в конфигураторе или в предприятии?

   Artful Den на партнерском написано, чтоОшибка исправлена в релизах 3.0.41.64 и 3.0.42.31, в том числе и в базовой версии.    Stim

(12) 42 только завтра выйдет

   iolxrfsf

> +1 мне тоже интересно чем поможет старая платформа, если дубли в самом цф…
проверка на эти дубли появилась только в платформе 8.3.6.2332. Платформа 8.3.6.2299, например, их игнорирует.

   Lopik

iolxrfsf!
Спасибо, выручили!

   kostyk92

Хм… столкнулся в точности такой же проблемой… вечно эти 1сники все через одно место выпустят толком не проверив… всем спасибо за помощь

   sh-alex

А я открыл предопределенные элементы и удалил дубли.
И конфигурация обновилась.

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

интересно можно ли быть уверенным что к этим элементам обращаются только по имени а не по коду ?

TurboConf 5 — расширение возможностей Конфигуратора 1С

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

"Имя предопределенного элемента не уникально" на пустой базе ЗУП3 после обновл.

Я
   Провинциальный 1сник Создаю ИБ из .cf, в предприятие не захожу — база пустая. Пытаюсь накатить последовательные обновления с целью получить актуальный cf. Куча обновлений накатываются нормально. Но после применения обновления 3.0.22.223 на 3.0.22.204, получаю в окне сообщений такие ошибки:

Справочник.ВидыОтправляемыхДокументов: Имя предопределенного элемента не уникально: БухОтчетностьМП
Справочник.ВидыОтправляемыхДокументов: Имя предопределенного элемента не уникально: БухОтчетностьСОНКО
Справочник.ВидыОтправляемыхДокументов: Имя предопределенного элемента не уникально: ФинансовыйРезультатИнвестиционногоТоварищества Справочник.ВидыОтправляемыхДокументов: Имя предопределенного элемента не уникально: СведенияСЗВ64Справочник.ВидыОтправляемыхДокументов: Имя предопределенного элемента не уникально: ОтходыСубъектовМСП

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

Что делаю не так? Как провести нормальное обновление и получить .cf без ошибок?
 
     CepeLLlka

(0)Из CF создавать базу для работы, не кошерно..

   CepeLLlka

К примеру если создать базу БП2.0 из CF, при первом входе в базу не заполнится РС — ПараметрыУчетаНоменклатуры, и т.д.

   Провинциальный 1сник

Установил старую платформу 8.3.6.1977 — получилось обновиться нормально. В 8.3.7, 8.3.8 — те же ошибки. Отсюда вывод — "восьмерка еще сырая", но приходится грызть кактус(

   Провинциальный 1сник

+(3) Получается, надо обновляться в старой версии платформы, а работать — в новой.

   Любопытная

(1) а мз чего ж тогда базы для работы создавать, если не из cf?

   kumena

(5) ставить сетап с партнерского диска, а он распаковывает dt чистой базы с заполненной разработчиками базой.

   Любопытная

(3) Ну так для 3.0.22.204 актуальным был релиз платформы 8.3.5. С тех пор утекло куча воды, в платформу внесли до хрена изменений, в том числе и по работе с предопределенными.
И вообще, нынче вроде как ЗУП 3.1 актуален, чего вы фигней занимаетесь?

   kumena

+6 когда ты говоришь в диалоге базы — "установить чистую базу" — это просто копирование того самого dt

   Любопытная

(6) Мож я уже что-то забыла, но помнится мне, что в шаблонах лежит cf для пустой базы и dt демо базы.

   kumena

(9) ой, наверное ты права.

 
 

   Провинциальный 1сник

(7) Так вот и хочу получить 3.1 последний, путем накатки обновлений на единственный имеющийся cf 3.0)

   kumena

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

   Любопытная

(10) Из любопытства сходила посмотреть — в новых конфигурациях делают dt для рабочих баз) У меня тоже информация устаревшая)

   Любопытная

(12) Она при первом старте заполняется.
(11) А конфигурацию посвежее найти не судьба?

   Провинциальный 1сник

(14) Где?

Франчам челом бить и просить на флешку записать? Ближайший франч в 100 км.

   kumena

> Она при первом старте заполняется.
там далеко не все что нужно прописывается, забывают.
видимо поэтому поменяли методику.

> Ближайший франч в 100 км.

а до хорошего интернета тоже 100 км? ))

   Любопытная

(15) В наше время скоростного интернета 100 км не расстояние)

   Провинциальный 1сник

(17) Интернет хороший есть. Кстати вопрос. А франчи обязаны вообще выкладывать для скачивания актуальный cf, если продукт зарегистрирован и есть ИТС? Или это на их усмотрение?

   Провинциальный 1сник (16) "там далеко не все что нужно прописывается, забывают.
видимо поэтому поменяли методику. " Это катастрофически печально(    Мойдодыр

удалить задвоенные предопределенные

   Amra

(18) Выкладывать куда?) Юзерс это 1сный ресурс, не франча. Посему — не должны, но у нормальных франчей под рукой есть более-менее свежий сфник, который они готовы прислать

   Любопытная

(18) Подозреваю, что на их усмотрение. Но вам же кто-то подписку на ИТС оформляет, обычно эти люди бывают лояльны к своим клиентам.

   Провинциальный 1сник

(21) Да пофиг куда.. главное чтобы скачать можно было. Не по е-майлу же его посылать — там сотни мегабайт.

   Amra

(23) Ну позвони в свой франч, мне присылали как то на почту линк на яндекс.диск)

   DOSS_S Попробуйте "обойти" 3.0.22.223 Вместо 3.0.22.204 -> 3.0.22.223 использовать путь 3.0.22.204 -> 3.0.22.219 -> 3.0.22.230 и тд.Проще скачать с рутрейкера последний релиз.    Провинциальный 1сник

(25) Проблема решилась использованием для обновления старого релиза платформы (8.3.6).

Наведи порядок в своей работе используя конфигурацию 1C "Управление IT-отделом 8"

ВНИМАНИЕ!

Ошибка при обновлении базы

Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Особенности предопределенных элементов объектов метаданных при работе с отключенным режимом совместимости

Для некоторых объектов метаданных в платформе "1С:Предприятие 8" есть возможность задавать в конфигурации предопределенные элементы, для которых в информационной базе будут автоматически создаваться объекты с заданными значениями. В данной статье рассматриваются некоторые особенности их реализации и работы с ними.

Общие сведения

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

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

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

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

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

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

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

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

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

Копировать в буфер обменаПланыСчетов.ПланСчетовПример.А.ПолучитьОбъект().Удалить(); Ссылка = ПланыСчетов.ПланСчетовПример.НайтиПоКоду("А");ЕслиНЕ Ссылка.Пустая()Тогда Объект = Ссылка.ПолучитьОбъект(); Объект.ИмяПредопределенныхДанных ="А"; Объект.Записать();КонецЕсли;

В результате при обращении к предопределенному элементу А будет возвращен существовавший ранее объект данных А.

Свойство ИмяПредопределенныхДанных доступно в запросах (поле выбора и в условиях), в формах, таблицах и др. Данное свойство обладает особенностями сортировки: сортировка выполняется по внутреннему ключу, а не по строке.

Работа с разделителями

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

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

Вариант 1. Общий реквизит разделяет информационную базу в режиме Независимо. При получении ссылки на предопределенный элемент выполняется запрос к данным таблицы.

Предопределенный элемент отсутствует в данных.

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

  • Предопределенные элементы уже были созданы (проинициализированы) ранее.
  • Отключено автоматическое обновление предопределенных данных.

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

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

  • Предопределенные элементы уже были созданы (проинициализированы) ранее.
  • Отключено автоматическое обновление предопределенных данных.

Внутренний идентификатор

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

Связь предопределенного элемента с метаданными осуществляется через свойство ИмяПредопределенныхДанных.

Обновление конфигурации базы данных

При отключении режима совместимости 8.3.2 или ниже:

  • Изменяется структура таблиц. Добавляются новые служебные таблицы. Это требует монопольного доступа к информационной базе
  • Существующие предопределенные элементы модифицируются, внутренние идентификаторы не изменяются. Такие элементы могут безболезненно возвращены к режиму совместимости 8.3.2 или ниже.
  • Включаются новые возможности по работе с предопределенными элементами.

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

  • Создаются новые предопределенные элементы, которые были добавлены по отношению к конфигурации базы данных. Например: Если в конфигурации базы данных есть предопределенный элемент с именем А и добавили предопределенный элемент с именем Б в конфигурации будет создан предопределенный элемент с именем Б. Предопределенный элемент с именем А не будет создан, даже если он был удален пользователем из данных. Предопределенные элементы создаются только в тех областях, которые были проинициализированы: либо пользователь уже обращался к предопределенным данным из этой области, либо с помощью специального метода языка ИнициализироватьПредопределенныеДанные().
  • Удаленные по отношению к конфигурации базы данных предопределенные элементы помечаются на удаление и у них сбрасывается признак предопределенного. Например: в конфигурации базы данных имеются элементы А и Б и в конфигурации удален элемент Б. в данных при реструктуризации объекты данных, связанные с элементом Б (если они есть) будут помечены на удаление и у него будет сброшен признак предопределенного. Свойство ИмяПредопределенныхДанных будет пустым.
  • Модифицированные в конфигурации предопределенные элементы, модифицируются в данных, если они не редактировались пользователем.

При включении режима совместимости:

  • Изменяется структура таблиц. Удаляются служебные таблицы. Это требует монопольного доступа к ИБ
  • Существующие предопределенные элементы проверяются на возможность возврата к режиму совместимости 8.3.2 или ниже. Если возврат невозможен – в конфигураторе выводится соответствующее предупреждение. Несовместимые предопределенные элементы будут помечены на удаление и будет сброшен признак предопределенного элемента. Недостающие предопределенные элементы будут созданы.
  • Выключаются новые возможности по работе с предопределенными элементами.

Поведение идентификаторов предопределенных элементов при копировании и объединении конфигураций

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

Теперь рассмотрим, как описанные принципы влияют на поведение предопределенных элементов в различных механизмах платформы "1С:Предприятие 8".

Объединение конфигураций

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

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

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

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

Если ссылок много, а дальнейшие объединения с другой конфигурацией не предполагаются (в описываемом сценарии это не так, но, может, вы просто хотите однократно добавить в конфигурацию некоторые объекты из другой), можно поступить иначе. При объединении для предопределенных данных установить правило Объединять с приоритетом… (приоритет будет влиять на порядок и место в иерархии предопределенных элементов с одинаковым идентификатором). После выполнения объединения в конфигурации будут присутствовать оба элемента, и старый и новый. Новый можно удалить (до выполнения обновления конфигурации базы данных). Главное, только их не перепутать. Для этого перед сравнением / объединением можно в основной конфигурации временно переименовать элемент, а потом вернуть обратно. При таком алгоритме, предопределенные элементы конфигурации из файла, которые не имеют аналогов, будут добавлены, а "конфликтные" нет.

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

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

Режимы обновления предопределенных данных

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

Режим обновления можно задать:

  • В метаданных, с помощью свойства ОбновлениеПредопределенныхДанных.
  • В данных, с помощью метода УстановитьОбновлениеПредопределенныхДанных.

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

  • Сначала значения Авто в метаданных и в данных подменяются ОбновлятьАвтоматически в центральном узле и в НеОбновлятьАвтоматически в периферийных узлах.
  • Затем по условию <Значение в данных> И <Значение в метаданных> определяется необходимость обновлять предопределенные.

Пример 1:

Конфигурация центрального узла:

Значение в метаданных – ОбновлятьАвтоматически.

Значение в данных – Авто.

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

ОбновлятьАвтоматически ИОбновлятьАвтоматически = ОбновлятьАвтоматически.

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

Пример 2:

Конфигурация периферийного узла:

Значение в метаданных – Авто.

Значение в данных – ОбновлятьАвтоматически.

Значение в метаданных подменяется на НеОбновлятьАвтоматически.

НеОбновлятьАвтоматически И ОбновлятьАвтоматически = НеОбновлятьАвтоматически.

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

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

Если итоговый режим равен ОбновлятьАвтоматически:

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

Если итоговый режим равен НеОбновлятьАвтоматически:

  • Предопределенные элементы не обрабатываются при реструктуризации
  • Предопределенные элементы не создаются при первом обращении к таблице.
  • Предопределенные элементы не создаются при вызове метода ИнициализироватьПредопределенныеДанные.

Обмен данными

Предопределенные объекты данных передаются по аналогии с другими объектами данных.

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

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

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