|
Можно ли создать элемент справочника с нужным идентификатором? | ☑ | ||
---|---|---|---|---|
0
Икогнито
16.03.12
✎
12:53
|
Есть GUID "b6b60de1-8b63-11e0-ab89-001e0bdd2030", возможно ли в 1С 8.2 создать элемент справочника Контрагенты с таким ИД?
|
|||
1
Ненавижу 1С
гуру
16.03.12
✎
12:53
|
да
|
|||
2
Икогнито
16.03.12
✎
12:54
|
(1) помоги пожалуйста, как?
|
|||
3
Икогнито
16.03.12
✎
12:54
|
+(2) и к чему может привести нарушение стандартного порядка генерации идентификаторов системой?
|
|||
4
Wobland
16.03.12
✎
12:54
|
Попытка
GUID = Новый УникальныйИдентификатор(СтрокаДляGUID); Отказ = ЛОЖЬ; Исключение Отказ = Истина; Возврат; КонецПопытки; док=Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(GUID); |
|||
5
Живой Ископаемый
16.03.12
✎
12:57
|
2(3) Ни к чему страшному.. при попытке создать элемент с уидом, который уже есть в базе в данной таблице (одинаковые уиды в разных таблицах могут быть) - будет выдано сообщение, что сделать этого нельзя.
|
|||
6
Рэйв
16.03.12
✎
12:57
|
(3)Ты ее не нарушишь.Если подсунешь существующий гуид новому элементу, он просто перезпишет существующий
|
|||
7
Ненавижу 1С
гуру
16.03.12
✎
12:59
|
UIDD=Новый УникальныйИдентификатор("b6b60de1-8b63-11e0-ab89-001e0bdd2030");
Ссылка=Справочника.Контрагенты.ПолучитьСсылку(UIDD); НовыйОбъект=Справочники.Контрагенты.СоздатьЭлемент(); НовыйОбъект.УстановитьСсылкуНового(Ссыл); ... НовыйОбъект.Записать(); |
|||
8
Икогнито
16.03.12
✎
13:08
|
(7) не работает.
Тест: созданный ИД 67e558f3-902f-11e0-8cb5-001e0bdd2030, нужен был ИД 67e558f3-902f-11e0-8cb5-001e0b Код: СтрокаДляGUID = "67e558f3-902f-11e0-8cb5-001e0bdd2030"; Попытка GUID = Новый УникальныйИдентификатор(СтрокаДляGUID); Спр = Справочники.Контрагенты.ПолучитьСсылку(GUID); ОбъектСпр = Справочники.Контрагенты.СоздатьЭлемент(); ОбъектСпр.УстановитьСсылкуНового(Спр); ОбъектСпр.Наименование = "Тест: "; ОбъектСпр.Записать(); СтрокаИД = СокрЛП(ОбъектСпр.Ссылка.УникальныйИдентификатор()); ОбъектСпр.Наименование = ОбъектСпр.Наименование + "созданный ИД "+СтрокаИД+ ", нужен был ИД "+СтрокаДляGUID; ОбъектСпр.Записать(); Исключение ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ОписаниеОшибки()); Возврат; КонецПопытки; |
|||
9
PVV65
16.03.12
✎
13:11
|
(8) Ну ты гонишь.
Тест: созданный ИД 67e558f3-902f-11e0-8cb5-001e0bdd2030 СтрокаДляGUID = "67e558f3-902f-11e0-8cb5-001e0bdd2030"; |
|||
10
Ненавижу 1С
гуру
16.03.12
✎
13:11
|
значит с таким UUID уже есть запись
|
|||
11
Sammo
16.03.12
✎
13:11
|
||||
12
Икогнито
16.03.12
✎
13:11
|
(9) крышняк рвет, почему тогда изменилось значение СтрокаДляGUID
|
|||
13
PVV65
16.03.12
✎
13:12
|
(12) Ты ж написал - не я.
|
|||
14
Sammo
16.03.12
✎
13:13
|
Имхо, или нарушение правил 2 и 5
Или размер (точнее длина) не имеет значения... |
|||
15
PVV65
16.03.12
✎
13:17
|
(13) наверное наименование ограничилось 100 символами.
|
|||
16
Kashemir
16.03.12
✎
13:18
|
(12) СтрокаДляGUID - строковый реквизит небось, с фиксированной длиной.
|
|||
17
Икогнито
16.03.12
✎
13:22
|
(13) Спасибо.
Просто метод меняет значение переменной СтрокаДляGUID |
|||
18
PVV65
16.03.12
✎
13:25
|
(17) см.(15)
|
|||
19
Икогнито
16.03.12
✎
13:28
|
Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдентификаторБПВрем))
1. В случае если есть в БД элемент с таким идентификатором - возвращается ссылка на конкретный элемент. 2. В случае если нет в БД с таким идентификатором - возвращается битая ссылка. Как определить, что она битая? |
|||
20
Живой Ископаемый
16.03.12
✎
13:29
|
Попытка
Справочники.Контрагенты.ПолучитьОбъект() |
|||
21
Рэйв
16.03.12
✎
13:29
|
(19)Обратись в попытке к коду элемента
|
|||
22
Икогнито
16.03.12
✎
13:30
|
(21) Спасибо
|
|||
23
Ненавижу 1С
гуру
16.03.12
✎
13:31
|
(19) запросом
|
|||
24
Живой Ископаемый
16.03.12
✎
13:31
|
тьфу, то есть
Попытка Справочники.Контрагенты.ПолучитьССылку(Новый УникальныйИдентификатор(ИдентификаторБПВрем)).ПолучитьОбъект() |
|||
25
Икогнито
16.03.12
✎
13:32
|
(24) и тебе спасибо :)
|
|||
26
Песец
16.03.12
✎
13:45
|
(24) Если Справочники.Контрагенты.ПолучитьССылку(Новый УникальныйИдентификатор(ИдентификаторБПВрем)).ПолучитьОбъект() = Неопределено Тогда
сообщить("нет с таким идентификатором, можно созадавать"); КонецЕсли; |
|||
27
Песец
16.03.12
✎
13:48
|
или проще и быстрее
... Если Найти(Строка(Справочники.Контрагенты.ПолучитьССылку(Новый УникальныйИдентификатор(ИдентификаторБПВрем))),"Объект не найден")>0 Тогда ... Но тогда надо учитывать, что язык может быть не русский. |
|||
28
Икогнито
16.03.12
✎
14:25
|
(24) Там не Попытка-Исключение нужна, а сравнение с Неопределено
ИдентификаторБПВрем = ИдентификаторБПСтрока; //найдем в БД, существует ли КонтрагентОбъект = Справочники.Контрагенты.ПолучитьССылку(Новый УникальныйИдентификатор(ИдентификаторБПВрем)).ПолучитьОбъект(); Если КонтрагентОбъект = Неопределено Тогда Если ЭтоГруппа Тогда НовыйКонтрагентОбъект = Справочники.Контрагенты.СоздатьГруппу(); Иначе НовыйКонтрагентОбъект = Справочники.Контрагенты.СоздатьЭлемент(); КонецЕсли; НовыйКонтрагентОбъект.УстановитьСсылкуНового(Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдентификаторБПСтрока))); КонтрагентОбъект = НовыйКонтрагентОбъект; Иначе КонтрагентОбъект = Справочники.Контрагенты.ПолучитьССылку(Новый УникальныйИдентификатор(ИдентификаторБПСтрока)); КонецЕсли; Возврат КонтрагентОбъект; |
|||
29
Икогнито
16.03.12
✎
14:26
|
(27) ага, еще создадут элемент с таким наименованием - получишь нехилый гембель :)
|
|||
30
Живой Ископаемый
16.03.12
✎
14:34
|
м... да, наверное.
|
|||
31
Песец
16.03.12
✎
14:39
|
(29) Можно сначала проверить есть ли контрагент с таким названием, получить битую ссылку и запомнить что вней написано.
Через ПолучитьОбъект имхо надежнее и универсальнее, если быстродействие не критично лучше его и использовать. |
|||
32
Икогнито
16.03.12
✎
19:04
|
пасаны, спасибо вам огромное еще раз, так клево
|
|||
33
Икогнито
16.03.12
✎
19:05
|
+(32) только почему-то это дольше работает, чем получение идентификатора в регистре соответствий
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |