|
Можно ли в ПередЗаписью нового объекта узнать будущий УникальныйИдентификатор? | ☑ | ||
---|---|---|---|---|
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
|
(27), я уже один задал. Заходите, если что)
ВнешнийИсточникДанныхТаблицаМенеджер.ПолучитьСсылку(Значение). Что передавать? |
|||
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Значение(ТипЗнч(Ссылка), "" + Новый УникальныйИдентификатор); ОбъектБД.УстановитьСсылкуНового(Ссылка); КонецЕсли; КонецЕсли; Возврат Ссылка; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |