Предопределенные элементы справочников 1С 8.3

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

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

   grayshadow

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

   Lopik

cf

   grayshadow

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

   iolxrfsf

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

   Lopik

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

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

   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

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

   Lopik

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

   kostyk92

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

   sh-alex

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

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

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

https://www.youtube.com/watch?v=ytdevru

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

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

{amp}gt; Ближайший франч в 100 км.

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

   Любопытная

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

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

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

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

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

   Amra

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

   Любопытная

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

Получить предопределенный элемент справочника 1С

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

ЭлементКитай = Справочники.Страны.Китай;

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

ЭлементКитай = ПредопределенноеЗначение("Справочник.Страны.Китай");

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

Создать предопределенный элемент справочника 1С

Мы уже научились создавать предопределенные элементы справочника в конфигураторе, но можно ли создать предопределенный элемент программно? И да, и нет.

Мы можем из простого элемента сделать предопределенный, и наоборот предопределенный элемент сделать простым.

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

Предопределенные элементы справочников 1С 8.3

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

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

Если мы этому реквизиту присвоим  какое-нибудь имя (помня об уникальности имен предопределенных элементов в контексте конкретного справочника), то мы программно «создадим» предопределенный элемент, но только в том случае если это имя уже существует в списке предопределенных элементов справочника, которые были заданы в конфигураторе 1С!

Например, тот же элемент «Тунис» справочника «Страны» у нас простой.

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

{amp}amp;НаСервереПроцедура СоздатьНаСервере()
	ЭлТунис = Справочники.Страны.НайтиПоНаименованию("Тунис");
	ОбТунис = ЭлТунис.ПолучитьОбъект();
	ОбТунис.ИмяПредопределенныхДанных ="Тунис";
	ОбТунис.Записать();КонецПроцедуры{amp}amp;НаКлиентеПроцедура Создать(Команда)
	СоздатьНаСервере();КонецПроцедуры

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

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

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

Предопределенные элементы справочников 1С 8.3

Сделаем на обработке две команды. Первая будет снимать предопределенность у элемента справочника с именем «Китай», а вторая устанавливать.

Снимем предопределенность.

{amp}amp;НаСервереПроцедура ОтсоединитьНаСервере()
	ЭлементКитай = Справочники.Страны.Китай;
	ОбЭлКитай = ЭлементКитай.ПолучитьОбъект();
	ОбЭлКитай.ИмяПредопределенныхДанных ="";
	ОбЭлКитай.Записать();КонецПроцедуры{amp}amp;НаКлиентеПроцедура Отсоединить(Команда)
	ОтсоединитьНаСервере();КонецПроцедуры

Теперь обратно установим.

{amp}amp;НаСервереПроцедура ПрисоединитьНаСервере()
	ЭлКитай = Справочники.Страны.НайтиПоНаименованию("Китай");
	ОбЭлКитай = ЭлКитай.ПолучитьОбъект();
	ОбЭлКитай.ИмяПредопределенныхДанных ="Китай";
	ОбЭлКитай.Записать();КонецПроцедуры{amp}amp;НаКлиентеПроцедура Присоединить(Команда)
	ПрисоединитьНаСервере();КонецПроцедуры

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

У нас до снятия элемент «Китай» был предопределенным.

Открыть список предопределенных элементов справочников 1С

А после снятия это стал простой элемент.

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

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

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

https://www.youtube.com/watch?v=ytaboutru

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

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

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

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

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

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

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

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

Список предопределенных элементов справочников 1С

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

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

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

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

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

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

https://www.youtube.com/watch?v=ytcreatorsru

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

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

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

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

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

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

Удалить предопределенный элемент справочника 1С

Начиная с платформы 1С 8.3 предопределенные элементы можно удалять в пользовательском режиме.

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

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

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

Документы в 1С 8.3

Справочники в 1С 8.3

Формы справочников в 1С 8.3

Книга «Программировать в 1С за 11 шагов»

https://www.youtube.com/watch?v=ytcopyrightru

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

Понравилась статья? Поделиться с друзьями:
Юридическая энциклопедия
Adblock detector