Имя: Пароль:
1C
 
Можно ли в ПередЗаписью нового объекта узнать будущий УникальныйИдентификатор?
,
0 SeiOkami
 
06.04.16
07:49
Здравия

Задача - хранить уникальный идентификатор как реквизит справочника.
Можно ли в ПередЗаписью нового объекта узнать будущий УникальныйИдентификатор? Чтобы не делать повторную запись объекта в ПриЗаписи.
1 Dmitry1c
 
06.04.16
07:52
можно ли сгенерировать случайное число, предварительно его зная?
2 Записьдампа
 
06.04.16
07:52
Узнать нельзя, установить можно.
3 Михаил 1С
 
06.04.16
07:53
(0) Можно узнать ссылку, которая будет присвоена. Что-то вроде ЭтотОбъект.ПолучитьСсылкуНового() - поищи в справке что-то похожее на это. А там и до УникИдентификатора недалеко.
//ищи в СправочникОбъект или в ДокументОбъект
4 Dmitry1c
 
06.04.16
07:53
(0) ты можешь сгенерить уид, а потом его подсунуть новому элементу. Только так.
5 SeiOkami
 
06.04.16
07:59
(3), (4), да, но так делать нельзя, если ссылка грузится обменом с другой базой
6 SeiOkami
 
06.04.16
08:00
(1), а если идентификатор уже предварительно установлен?
7 Рэйв
 
06.04.16
08:02
(5)Если ссылка грузится обменом, то у нее уже в ПриЗаписи есть УИД
8 George Wheels
 
06.04.16
08:02
(5) А из другой базы УИД приходит?
9 Рэйв
 
06.04.16
08:04
в *ПередЗаписью то есть
10 Записьдампа
 
06.04.16
08:04
(8) Как настроишь.
11 Рэйв
 
06.04.16
08:06
(8)В стандартном случае уиды в риб должны быть равны, поэтому ссылка и уид устанавливается сразу до записи
12 George Wheels
 
06.04.16
08:07
(10) Я о том, что если у него синхронизация не по УИД, то почему нельзя создать новый.
13 Записьдампа
 
06.04.16
08:08
(0) А зачем тебе его хранить, если он в точности эквивалентен ссылке? Отдавать другим системам - так пусть ходят через нужное апи и получают результат.
Я это к чему - ты неявно вешаешь на себя еще и задачу по контролю соответствия ссылки идентификатору. Зачем?
14 SeiOkami
 
06.04.16
08:13
(9), сейчас проверю, но вроде уже когда-то натыкался на это и уникальный идентификатор был пустым пока объект не запишется
15 SeiOkami
 
06.04.16
08:14
(9), проверил. Уникальный идентификтаор не заполняется до того момента, пока не произойдет запись в базу
16 Записьдампа
 
06.04.16
08:14
(12) Ссылочная целостность и начальное сопоставление по  реквизитам - немного разные вещи.
17 SeiOkami
 
06.04.16
08:15
(13), в запросе можно получить УИД из ссылки?
18 SeiOkami
 
06.04.16
08:16
(13), перед записью значение реквизита будет всегда сравнииваться с реальным идентифкатором. Если различаются - заменяем значение в реквизите
19 Записьдампа
 
06.04.16
08:16
(15) Удивительно, со времен 7.5 ничего не поменялось!
20 Записьдампа
 
06.04.16
08:17
(17) в запросе можно получить ссылку. Я и спрашиваю - что ты будешь делать с полученным?
21 SeiOkami
 
06.04.16
08:18
(20), это уже другая тема - стыковка с данными ВИД по УИДу
22 mishaPH
 
модератор
06.04.16
08:21
(0) автор. ты противоречишь сам себе и главное логике.

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

И зачем весь этот гемор? записал в базу. получил ИД, записал еще раз.
23 Записьдампа
 
06.04.16
08:21
(21) А, мьсье через внешние источники работает с другой базой 1С как с sql источником... =)
Ну удачи, вам в использовании двух источников данных в одном запросе.
24 SeiOkami
 
06.04.16
08:22
(23), я же сказал - это другая тема.
25 mishaPH
 
модератор
06.04.16
08:22
+ 22 теоретически можно сделать скуль запрос к табличке и получить последний ид, прибавить 1 и .. будет работать если в базе более никого нет.
26 George Wheels
 
06.04.16
08:23
Всё таки что за обмен? РИБ, Внешние источники (23) или ...
27 Записьдампа
 
06.04.16
08:25
(24) Реклама будущих вопросов, понимаю. Оставайтесь с нами =)
28 SeiOkami
 
06.04.16
08:25
(22), мой вопрос по типу: "вдруг я просто чего не знаю"
29 SeiOkami
 
06.04.16
08:26
Если по делу (0):
Нет никаких способов. Верно?
30 George Wheels
 
06.04.16
08:27
(28) Тогда ответ не нельзя. Но есть НО. ПередЗаписью можно установить какой хочешь.
31 Записьдампа
 
06.04.16
08:29
(30) Причем коварно так, из подписки на событие, отрабатывющей после обработчиков объекта.
32 SeiOkami
 
06.04.16
08:29
33 Тролль главный
 
06.04.16
08:31
зачем хранить УИД как реквизит, если он есть в ссылке?
34 SeiOkami
 
06.04.16
08:31
(33), ответ в (17)
35 Записьдампа
 
06.04.16
08:35
(32) Не, я пока не пойму, что у тебя за шапито с понями, с попкорном посижу.
36 Записьдампа
 
06.04.16
08:50
(35)+
А когда окажется, что все это затевается ради отказа от цикла по таблице значений из пары тысяч элементов (причем без обращения к базе, влияющего на производительность чуть больше никак), то открою вторую пачку =)
37 Fedor-1971
 
06.04.16
08:52
(35) По ходу, ТС, для каких-то целей, нужен ИД из Ссылки именно в запросе, а Ссылка.УникальныйИдентификатор() доступны только из кода.

(29) В запросе получить ИД из ссылки стандартными средствами не получится (даже выразить ссылку как строку и выкусить из неё ИД), пробуй опереться именно на ссылку.
38 Fedor-1971
 
06.04.16
08:56
(36) больше похоже на попытку использовать условия в запросе ДС по ИД из ссылки. И вот не получается, "Абыдно, да?".
39 Cyberhawk
 
13.04.16
19:04
Дарю:

//Если ссылка не назначена, то назначает
Функция ПолучитьУстановитьСсылкуОбъекта(ОбъектБД) Экспорт

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

КонецФункции