|
Работа с ГУИД в чем моя ошибка? | ☑ | ||
---|---|---|---|---|
0
Обработка
09.11.14
✎
13:59
|
Создаю новый документ и присваиваю гуид битой ссылки.
Вываливается ошибка. {Форма.Форма.Форма(29)}: Поле объекта недоступно для записи (УникальныйИдентификатор) UUID = Новый УникальныйИдентификатор(ГУИД); Вот код: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладах.Регистратор |ИЗ | РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах |ГДЕ Регистратор.Ссылка ЕСТЬ NULL И НЕ Регистратор = &ПустаяСсылкаДокумента | И ТоварыНаСкладах.Период МЕЖДУ &Дата1 И &Дата2"; Запрос.УстановитьПараметр("ПустаяСсылкаДокумента",Неопределено); Запрос.УстановитьПараметр("Дата1",Дата(2014, 7, 1, 0, 0, 0) ); Запрос.УстановитьПараметр("Дата2",Дата(2014, 7, 1, 23, 59, 59)); Сп = новый СписокЗначений; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ГУИДУдОбъкта = Строка(Выборка.Регистратор); ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъкта,"<Объект не найден> (",""); ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаСтр,")",""); ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаСтр,"0x",""); ГУИДУдОбъктаСтр = Сред(ГУИДУдОбъктаСтр, Найти(ГУИДУдОбъктаСтр,":")+1, СтрДлина(ГУИДУдОбъктаСтр)); ГУИД = Сред(ГУИДУдОбъктаСтр,25,8)+"-"+Сред(ГУИДУдОбъктаСтр,21,4)+"-"+Сред(ГУИДУдОбъктаСтр,17,4)+"-"+Сред(ГУИДУдОбъктаСтр,1,4)+"-"+Сред(ГУИДУдОбъктаСтр,5,12); //и получаем ГУИД = 05dbe824-a4c6-11dd-bf56-00145e3710ab Если Сп.НайтиПоЗначению(ГУИД) = Неопределено Тогда Сп.Добавить(ГУИД,ГУИД); UUID = Новый УникальныйИдентификатор(ГУИД); НоваяСсылка = Документы.ПеремещениеТМЗ.ПолучитьСсылку(UUID); Док = Документы.ПеремещениеТМЗ.СоздатьДокумент(); Док.УстановитьСсылкуНового(НоваяСсылка); Док.Записать(); Иначе Продолжить; Конецесли; КонецЦикла; |
|||
1
ДенисЧ
09.11.14
✎
14:00
|
возьми другое имя переменной
|
|||
2
Обработка
09.11.14
✎
14:08
|
(1) Спасибо, получилось.
|
|||
3
Обработка
10.11.14
✎
15:07
|
Еще проблема. Не находит нужный тип документа. Где ошибка?
&НаСервере Процедура UIDПриИзмененииНаСервере() ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъкта,"<Объект не найден> (",""); ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаСтр,")",""); ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаСтр,"0x",""); ГУИДУдОбъктаСтр = Сред(ГУИДУдОбъктаСтр, Найти(ГУИДУдОбъктаСтр,":")+1, СтрДлина(ГУИДУдОбъктаСтр)); тт = Сред(ГУИДУдОбъктаСтр,25,8)+"-"+Сред(ГУИДУдОбъктаСтр,21,4)+"-"+Сред(ГУИДУдОбъктаСтр,17,4)+"-"+Сред(ГУИДУдОбъктаСтр,1,4)+"-"+Сред(ГУИДУдОбъктаСтр,5,12); ИД = Новый УникальныйИдентификатор(тт); Если ПолучитьСсылкуНоМенеджеруОбъекта(Документы,ИД) Тогда КонецЕсли; КонецПроцедуры &НаСервере Функция ПолучитьСсылкуНоМенеджеруОбъекта(ОбъектыМенеджер,ИД) Для Каждого Менеджер Из ОбъектыМенеджер Цикл СсылкаНаОбъектГуид = Менеджер.ПолучитьСсылку(ИД); Если СсылкаНаОбъектГуид.ПолучитьОбъект() <> Неопределено Тогда Сообщить(Менеджер); Возврат Истина; Иначе КонецЕсли; КонецЦикла; Возврат Ложь; КонецФункции |
|||
4
Apokalipsec
10.11.14
✎
15:18
|
Какая ошибка? Или ждешь, что сообщить сработает на сервере?
|
|||
5
Fram
10.11.14
✎
15:22
|
(4) а у тебя не работает Сообщить на сервере?
|
|||
6
Обработка
10.11.14
✎
15:23
|
Да фиг с ним с сообщить у меня отладчик там не останавливается.
|
|||
7
Обработка
10.11.14
✎
15:24
|
+ отладчик у меня включен на сервере.
Обход цикла вижу. |
|||
8
Обработка
10.11.14
✎
15:29
|
Выделяю битую ссылку регистратора, скопировав вставляю в поле обработки.
Функция возвращает ложь. |
|||
9
Fram
10.11.14
✎
15:32
|
(8) а что должен вернут?
|
|||
10
Обработка
10.11.14
✎
15:36
|
Я полагаю должен вернуть тип документа.
Или это произойдет если ссылка не битая??? |
|||
11
Обработка
10.11.14
✎
15:37
|
+(10) Ну не тип а "Истина" если по ГУИД ссылка создалась
|
|||
12
Обработка
10.11.14
✎
15:39
|
Или я ступил когда код копипастил из мисты?
В общем мне нужно определить тип документа регистратора по битой ссылке... |
|||
13
Fram
10.11.14
✎
15:40
|
Если нет объекта в базе, каким макаром ты хочешь получить тип этого неизвестного никому объекта?
|
|||
14
Обработка
10.11.14
✎
15:43
|
(13) Блииин ступил! Так и думал что именно по Гуид объекта идет поиск конкртеного объекта или его ссылка.
ЗЫ. как найти тип документа по битой ссылке регистратора регистра накопления?????? |
|||
15
Fram
10.11.14
✎
15:49
|
(14) чего не знаю, того не знаю.. возможно, по части гуида, если все объекта были созданы в этой базе
|
|||
16
hhhh
10.11.14
✎
16:22
|
(14) никак не найдешь.
|
|||
17
Обработка
10.11.14
✎
16:24
|
Да вроде бы не сложная задача периодически берусь потом кидаю не найдя решения.
Точно не помню это было с 1с 77 или 1с 8.х Но я что-то такое давно делал. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |