Имя: Пароль:
1C
1С v8
Когда генерируется UUID предопределенных элементов при обновлении из .cfu?
0 Vladal
 
20.07.16
16:51
Есть типовые объекты с предопределенными элементами, например, справочники, ПВХ, ПВР, планы счетов...

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

Вычислил, вычистил, частично сделал замену ссылок старых на новые и удалил освободившиеся.

Но картина была бы неполной, если бы я для себя не выяснил такой вопрос:
правильно ли я понимаю, что уникальный идентификатор предопределенного элемента приходит в мою конфигурацию из обновления от поставщика? То есть он сгенерировался в базе поставщика и ушел оттуда вместе со своим UUID в файле .cfu?
Или генерируется в момент первого обновления поставки уже локально в моей базе?

Ой, в какие дебри я полез...
1 МихаилМ
 
20.07.16
17:17
uid находится в конфигурации (метаданных). и не генерится произвольно.
2 Vladal
 
20.07.16
17:20
(1) Значит UID предопределенного приходит при обновлении  вместе с .cfu, и "такое по всей стране"?
Просто я ограничен в возможностях проверить и воспроизвести ситуацию в различных базах.
3 Господин ПЖ
 
20.07.16
17:22
ну если у вас база еще и с распределенкой - то вы попали
4 Господин ПЖ
 
20.07.16
17:22
в центральной как я понимаю вы ссылки поменяли, а в периферийках кто это делать будет? тут апдейт должен был быть в два этапа
5 Господин ПЖ
 
20.07.16
17:23
два релиза
1. переименовать старые + перенести ссылки
2. удалить старые
6 Карупян
 
20.07.16
17:26
(1) Ты отстал от жизни в 8.3 все не так
7 Карупян
 
20.07.16
17:27
в рибах предопределенные задваиваются только в путь
8 Vladal
 
20.07.16
17:27
(3) нет. нет распределенки и обменов нет.
9 Vladal
 
20.07.16
17:28
(4) апдейт в два этапа я и сделал - в первый раз переименовал дубли, во второй итерации уже удалил замененные предопределенные и потом ужадил их окончательно в режиме Предприятия
10 Vladal
 
20.07.16
17:28
*ужадил = удалил
11 Vladal
 
20.07.16
17:32
(5) Мало переименовать. У них есть уникальные идентификаторы.
12 Карупян
 
20.07.16
17:35
удалить старые в конфигураторе, в предприятие поменять ссылки
13 Vladal
 
20.07.16
17:35
(6) Если не ошибаюсь, в 8.3.6. поменялся способ хранения предопределенных на уровне таблиц БД.
Прежде было два реквизита, теперь один (в SQL) - PrefefinedID
14 Карупян
 
20.07.16
17:35
хотя ссылки можно не менять, просто назначить имена предопределенных
15 Vladal
 
20.07.16
17:36
(12) Я так и сделал, суть, хочу докопаться до корня.
16 Господин ПЖ
 
20.07.16
17:41
(15) докапываться то до чего? с точки зрения поставщика у тебя 2 элемента - один "-" у него "чужой" id, второй "+" у него правильный id. с точки зрения рабочей базы побарабану какой id у элемента пока у него имя и тип нужные для работы
17 Vladal
 
20.07.16
17:48
(16) Нет, ей не по барабану.
И раньше жили эти дубли предопределенных, но после перехода с платформы 8.2 на 8.3 получили сообщение о дублях имен предопределенных элементов.

Этот ID пришел ко мне из базы САМОГО поставщика?
Получив обновление той же УПП, все получат те же самые ID предопределенных элементов? По всей стране где в УПП есть предопределенный ПВР с именем "ПоОкладу" будет иметь один и тот же UUID {1656faa9-ae02-4836-9234-c70eba00be50}?
18 Vladal
 
20.07.16
17:55
(16) >> с точки зрения рабочей базы побарабану какой id у элемента пока у него имя и тип нужные для работы

нет, не так. По барабану программному модулю, когда я обращаюсь к элементу по имени:
Справочник.СпособыОтраженияЗарплатыВреглУчете.ОтражениеУдержанийПоЗаймам
А в базе у меня два таких предопределенных с таким именем.
И каждый раз я играю "в рулетку", какой из них мне соизволит выдать скуль.

Сравни:

СпрСсылка = Справочник.СпособыОтраженияЗарплатыВреглУчете.ОтражениеУдержанийПоЗаймам;
Пока Истина Цикл
    Сообщить(СпрСсылка.УникальныйИдентификатор());
КонецЦикла;

и

Пока Истина Цикл
    СпрСсылка = Справочник.СпособыОтраженияЗарплатыВреглУчете.ОтражениеУдержанийПоЗаймам;
    Сообщить(СпрСсылка.УникальныйИдентификатор());
КонецЦикла;

В какой-то момент выдаются оба идентификатора, но потом, видимо, срабатывает кэш на стороен SQL и в дальнейшем получаю одну и ту же ссылку.
19 Господин ПЖ
 
20.07.16
18:02
>А в базе у меня два таких предопределенных с таким именем.

там контроль стоит? не может быть два предопределенных элемента с одинаковым именем
20 Vladal
 
20.07.16
18:18
(19) легко!
Сохрани конфу во внешний файл. Условно это "обновление релиза".
Удали предопределенный элемент в любом объекте.
Создай новый такой же - это или неверно обновили из конфы поставщика или вручную добавили не зная о последствиях.
Обнови конфигурацию в режиме объединения, приоритет "из базы" или "из файла" - не важен.
Сохрани конфигурацию. При сохранении получится сообщение "Справочник такой-то. Не уникальное имя предопределенного элемента!".
21 Vladal
 
20.07.16
18:21
У меня в ПВР.ОсновныеНачисленияОрганизаций задвоены были СтажВДнях и СтажВЧасах. По истории хранилища одна пара добавлен в 2013 году, вторая пара добавлена недавно мной.
22 Vladal
 
20.07.16
18:24
и еще один обычны йэлемент "Стаж в днях", на который есть ссылки на документы с 2011 по 2013 годы.
23 Господин ПЖ
 
20.07.16
18:25
>Сохрани конфигурацию. При сохранении получится сообщение "Справочник такой-то. Не уникальное имя предопределенного элемента!

вообще-то это повод задуматься... всем... кроме рукож.пов
24 Vladal
 
20.07.16
18:45
(23) Я об этом и написал - сообщения появились после перехода на платформу 8.3. До этого бы никто и не знал, наверно, если бы при сохранении конфигуратор не писал о не уникальных именах.
Проблему уже разрулил, в базе навел порядок.
25 Vladal
 
20.07.16
18:47
На инфостарте уже есть обработка по переназначению предопределенных, но это для включенного режима совместимости с 8.3., а у нас такого еще не делал.
http://catalog.mista.ru/public/305892/