|
Изменить элемент справочника через COM | ☑ | ||
---|---|---|---|---|
0
al_zzz
14.03.13
✎
13:13
|
Подскажите, хочу изменить элемент справочника другой базы:
{1c}ГУИДСТРОКОЙ = Соединение.Справочники[Структура.Вид].НайтиПоНаименованию(Наименование).УникальныйИдентификатор(); УдаленноеФЛ = Соединение.Справочники[Структура.Вид].ПолучитьСсылку(Соединение.NewObject("УникальныйИдентификатор",ГУИДСТРОКОЙ)); УдаленноеФЛ = УдаленноеФЛ.ПолучитьОбъект(); УдаленноеФЛ.Наименование = Name1; УдаленноеФЛ.Записать(); {/1c} Пишет "Произошла исключительная ситуация: Код не уникален!" ЧЯДНТ? |
|||
1
Волшебник
14.03.13
✎
13:14
|
вызови УдаленноеФЛ.УстановитьНовыйКод()
|
|||
2
al_zzz
14.03.13
✎
13:15
|
(1) Выходит, нельзя через ком записать существующий элемент с тем же кодом?
|
|||
3
Галахад
гуру
14.03.13
✎
13:16
|
"существующий элемент" ссылка-ото новая.
|
|||
4
Волшебник
14.03.13
✎
13:16
|
(2) Можно, но у тебя там дубли кодов в справочнике.
И не путай GUID с кодом. Если дубли разрешаешь, то сделай ещё УдаленноеФЛ.ОбменДанными.Загрузка = Истина; |
|||
5
ptiz
14.03.13
✎
13:22
|
(0) Странный алгоритм.
Ищем на наименованию элемент, из него берем ГУИД, потом по ГУИД находим этот же элемент. Нафейхоа еще по ГУИДу искать? |
|||
6
Torquader
14.03.13
✎
13:24
|
Я бы ещё сказал, что строка идентификатора из другой базы получается через Соединение.String(Соединение.Справочники[Структура.Вид].НайтиПоНаименованию(Наименование).УникальныйИдентификатор()),
а то есть вероятность, что идентификатор получается неправильный. Второй вопрос - зачем сначала найти ссылку (в удалённой базе), потом преобразовать её в иднетификатор и строку (в удалённой базе), а потом опять получать ссылку из идентификатора и создавать объект. СсылкаТам=Соединение.правочники[Структура.Вид].НайтиПоНаименованию(Наименование); Если СсылкаТам=НЕПРЕДЕЛЕНО Тогда Сообщить("Там его нет"); Иначе ОбъектТам=СсылкаТам.ПолучитьОбъект(); ОбъектТам.Наименование=НашеИмя; ОбъектТам.Записать(); КонецЕсли; Есть подозрение, что у вас создаётся новый GUID, так как вы его неправильно передали - а новый GUID - это новый объект. (Хотя в этом случае ПолучитьОбъект() возвращает НЕОПРЕДЕЛЕНО) |
|||
7
Рэйв
14.03.13
✎
13:26
|
Соединение.Справочники[Структура.Вид].НайтиПоНаименованию(Наименование)
уже дает тебе искомую ссылку, нафиг еще мудритшь с гуидом? |
|||
8
Галахад
гуру
14.03.13
✎
13:29
|
Похоже ссылки восстанавливает. Из копии.
|
|||
9
al_zzz
14.03.13
✎
13:29
|
(7) Уже попробовал использовать просто:
{1c}УдаленноеФЛ = Соединение.Справочники[Структура.Вид].НайтиПоНаименованию(Наименование);{/1c} - всё равно ругается на уникальность кода |
|||
10
Рэйв
14.03.13
✎
13:31
|
(9)Уникальность - это уже другая песня..Тебе ж сказали сделать
.УстановитьНовыйКод() перед записью |
|||
11
Рэйв
14.03.13
✎
13:33
|
Причем после найтиПоНаименованию недурно было бы написать
//--- Если УдаленноеФЛ.Пустая() Тогда Сообщить("Не нашли по "+Наименование); Возврат; КонецЕсли; |
|||
12
al_zzz
14.03.13
✎
13:37
|
А как сделать, чтоб код у данного элемента не менялся при перезаписи? Или никак?
|
|||
13
ptiz
14.03.13
✎
13:46
|
(12) уже сказали: .ОбменДанными.Загрузка=Истина
|
|||
14
Рэйв
14.03.13
✎
13:46
|
(12)А он при перезаписи и не будет менятья если ты его специально не поменяешь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |