Имя: Пароль:
1C
1С v8
Изменить идентификатор объекта
0 elian_hunter
 
31.08.12
16:59
А можно каким-то образом изменить идентификатор объекта? Конкретно мне надо - документа! Вообще где он? как его прочитать? и поменять... ))
1 vmv
 
31.08.12
17:00
нет
2 H A D G E H O G s
 
31.08.12
17:01
Можно.
3 H A D G E H O G s
 
31.08.12
17:01
Но не нужно
4 andrewks
 
31.08.12
17:02
(1)(2)(3) +1 :)
5 ptiz
 
31.08.12
17:03
(0) Идентификатор = Объект
Замена идентификатора = Поиск и замена значений
6 elian_hunter
 
31.08.12
17:15
нет... идентификатор не равно объект... мне нужно прочитать гуид объекта... неужели нет способа??
7 ptiz
 
31.08.12
17:17
(6) Опиши задачу целиком.
8 vmv
 
31.08.12
17:18
гуид - загугли тут или в любой типовой
9 Heckfy
 
31.08.12
17:20
ДокументСсылка.<Имя документа>.УникальныйИдентификатор (DocumentRef.<Имя документа>.UUID)
ДокументСсылка.<Имя документа> (DocumentRef.<Имя документа>)
УникальныйИдентификатор (UUID)
Синтаксис:

УникальныйИдентификатор()
Возвращаемое значение:

Тип: УникальныйИдентификатор.

Описание:

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

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
См. также:

ДокументМенеджер, метод ПолучитьСсылку
10 elian_hunter
 
31.08.12
17:21
(7) при загрузке данных из ЗУП в БП, а именно документа "Отражение зарплаты в регл. учете" документ за август  создается, а за февраль удаляется. я попробовал изменить гуид в хмл-е и сработало! видимо каким-то образом совпали гуиды документов за февраль и август (не пойму каким) хочу убедиться что я прав... для этого мне надо прочитать гуиды этих докумнетов
11 elian_hunter
 
31.08.12
17:21
(9) ООО! спасибо!
12 ptiz
 
31.08.12
17:32
(10) Значит, что кто-то сильно умный в ЗУПе взял февральский документ и изменил ему период на август.
13 Mikhail Volkov
 
31.08.12
17:38
(0) Можно, создать другой объект с нужным гуид, затем обработкой Поиск и замена дублирующихся элементов справочников объединить их.
Вот только с предопределенными объектами это не проходит... Кто знает как это сделать средствами 1С? (менять в скуле рискованно)
14 elian_hunter
 
31.08.12
17:40
(12) теоретически, возможно... но, если честно, не совсем понимаю, как это могло произойти...
15 andrewks
 
31.08.12
17:42
(14) заходишь в документ, меняешь, записываешь
16 elian_hunter
 
31.08.12
17:45
(15) да не... не в том дело... просто как бы какой смысл им так делать?...
17 hhhh
 
31.08.12
17:55
(16) у нас пару раз в месяц такое происходит.
    Бухи поняли, что гораздо быстрее вводить документ, если скопировать старый и в нем поменять всего несколько полей.
    Теперь внимание: если бух случайно вместо кнопки "копировать" нажмет кнопку "открыть", (а это ему как два пальца об асфальт) получается твоя ситуация.

Ответ он всегда на поверхности.
18 vmv
 
31.08.12
18:01
(17) а че вы дали тьокам права на вольности с доками прошлого, отчаянные финские парни? При хорошей организации прав такие финты можно делать только в текущем дне, все что было вчера, а тем более в прошлом месяце - извините прочти кучу сообщений о запретах, последствиях, ответься 10 раз - "Да, я не дура и вполне адекватна, сохранить" и только потом позволить изменить что-то в "старом доке"
19 hhhh
 
31.08.12
18:05
(18) эти доки не старые. Может даже сегодняшние.
20 hhhh
 
31.08.12
18:08
(18) и в принципе, если например типовая 1С-ка у клиента, вы за свои деньги будете ему эти запреты вставлять?
21 acsent
 
31.08.12
18:10
поиск и замена дублей
22 Mikhail Volkov
 
31.08.12
20:47
(21) А с предопределенными объектами как?
23 Sammo
 
31.08.12
20:56
(22) Никак. Гуид предопределенного элемента прописан внутри конфигурации и его не изменить. Проводил эксперимент - в скуле менял гуид предопределенного элемента. В результате после очередного сохранения конфигурации был создан еще 1 предопределенный элемент с таким же гуидом.
24 Rie
 
31.08.12
21:00
(23) Ключевое слово - "предопределённый"?
25 Mikhail Volkov
 
31.08.12
22:06
(23) "В результате после очередного сохранения конфигурации был создан еще 1 предопределенный элемент с таким же гуидом" - шалишь? Я еще допускаю одинаковый гуид для разных типов объектов, но в пределах одного типа это невозможно - гуид это ключ!
У меня при обмене баз, когда стоит синхронизация по гуид, такая хрень получается:
Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4795)}: Ошибка записи объекта

           ТипОбъекта             =  Виды контактной информации

           Объект                 =  Телефон физ.лица служебный

           ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Ошибка при попытке вставки записи с неуникальным значением ссылки.

Microsoft OLE DB Provider for SQL Server: Нарушено "PK___Referen__AC8ED0C40F7C1D9B" ограничения PRIMARY KEY. Не удается вставить повторяющийся ключ в объект "dbo._Reference49". Повторяющееся значение ключа: (0xb9493d07ec2909514bd24a29a071e1b7).

HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2627, line=1

"Гуид предопределенного элемента прописан внутри конфигурации" - если сам не пропишешь, типа:

Процедура ЗаполнитьПредопределенныхПартнеров() Экспорт
   
//    СправочникОбъект = Справочники.Партнеры.НашеПредприятие.ПолучитьОбъект();    // возмем из базы Кайрос.    10.01.2012 МВ.
   СправочникСсылка = Справочники.Партнеры.ПолучитьСсылку(Новый УникальныйИдентификатор("97403c2a-4260-481c-8835-1ea87e51a4aa"));
   СправочникОбъект = СправочникСсылка.ПолучитьОбъект();
   Если СправочникОбъект = Неопределено Тогда
       СправочникОбъект = Справочники.Партнеры.НашеПредприятие.СоздатьЭлемент();
       СправочникОбъект.УстановитьСсылкуНового(СправочникСсылка);
   КонецЕсли;
   СправочникОбъект.ДатаРегистрации = Дата(1980, 1, 1);
   Попытка
       СправочникОбъект.Записать();
   Исключение
       Сообщить("Не удалось записать партнера НашеПредприятие" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
   КонецПопытки;

И то, это помогает для вновь создаваемой базы. Если предопределенный объект пришел с обновлением, то задать ему нужный гуид таким методом не получается. Может кто-то как-то исхитрился менять на нужный гуид?
26 Torquader
 
01.09.12
22:20
Я чего-то не очень понимаю, зачем менять GUID у объекта ?
Ведь он используется для определения ссылок на сам объект. То есть замена GUID приведёт к созданию другого объекта, но с такими же данными внутри. То есть будет равносильно DELETE+CREATE.
Или вы и все ссылки на ваш объект хотите поменять ?
27 sda553
 
02.09.12
00:01
(26) Необходимости менять гуид нет никогда. Желание его поменять возникает у тех кто ищет простой способ все исправить и не искать истинных причин инцидента.
(22) Почти то же самое, в конфиге создается второй предопределенный элемент, с первого все ссылки в базе перешиватся все на второй, первый предопределнный элемент уничтожается в конфиге. Второй переименовывается в то же имя что было у первого
28 Torquader
 
02.09.12
00:31
(27) Не - один раз возникала необходимость подмены GUID из-за того, что в двух разных базах нужно было сделать один и тот же объект, когда там было уже два объекта - пришлось просто делать замену GUID во всех ссылках.
29 sda553
 
02.09.12
00:46
(28) ну так то да, но сшивание двух баз это все таки не то чтобы подмена гуидов, а наполнение одной базы объектами другой и потом замена ссылок по базе.
А тут не замена одного объекта на другой, а именно смена гуида как цель
30 Torquader
 
02.09.12
00:58
(29) Если в SQL, то как раз просто замена GUID-а, но так обычно не делают.
31 Mikhail Volkov
 
03.09.12
09:04
(27) Будет время, попробую этот метод.
(30) Если это справочник Виды контактной информации (как в моем примере (25))большого риска нет это сделать SQL, а если это например, Управленческая организация, которая используется в документах большого периода... у кого есть опыт замены GUID-а прямо в SQL?
32 ptiz
 
03.09.12
09:30
(31) Теоретически, ничего сложного: через метаданные получить таблицы, где могут быть ссылки на элемент, получить имена этих таблиц в SQL и сделать замену.
На инфостарте есть пример.
33 Serg_1960
 
03.09.12
09:35
Сорри, а какой смысл работы в SQL "напрямую"? Скорость? Но это - нештатная ситуация и алгоритм - "одноразовый". Если замена GUID-ов используется в штатном режиме работы - это бред.
34 Mikhail Volkov
 
03.09.12
12:39
(33) Для предопределенных объектов штатный режим не подходит. Если только предложенный (27), но тоже далеко не штатный.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан