Имя: Пароль:
1C
1С v8
ПолучитьСсылку/УстановитьСсылкуНового Не совпадают ГУИДы
0 miner
 
26.01.12
15:01
Здравствуйте!
У меня такая проблема.
В подписке на некоторые объекты делаю следующее


[CODE]
Процедура ОБработкаЗаполненияСохранитьСсылку(ОбъектИсточника,Ссылка)

Сообщение = Новый СообщениеПользователю;

Менеджер = ПолучитьМенеджер(ОбъектИсточника); // Здесь получаем менеджера объектов
СсылкаНаНовыйОбъект = Менеджер.ПолучитьСсылку();
ОбъектИсточника.УстановитьСсылкуНового(СсылкаНаНовыйОбъект); //установили ссылку нового


Сообщение.Текст = "СсылкаНового= "+Строка(СсылкаНаНовыйОбъект);
Сообщение.Сообщить();
Сообщение.Текст = "УИДСсылки= "+Строка(СсылкаНаНовыйОбъект.УникальныйИдентификатор());
Сообщение.Сообщить();

....................
КонецПроцедуры
[/CODE]
Далее в подписке на события при записи делаю так


[CODE]

Процедура ОбъектовПриЗаписи(Источник, Отказ) Экспорт

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "СсылкаНового= "+Строка(Источник.Ссылка);
Сообщение.Сообщить();
Сообщение.Текст = "УИДСсылки= "+Строка(Источник.Ссылка.УникальныйИдентификатор());
Сообщение.Сообщить();

КонецПроцедуры
[/CODE]

На выходе

УИДСсылки= da388689-4805-11e1-bf41-00192186fa8e //При Обработке заполнения
УИДСсылки= da38868a-4805-11e1-bf41-00192186fa8e //При Записи


Непонятное поведение.
В доках УстановитьСсылку нового написано
Ссылка, которая будет назначена при записи нового объекта.
Однако ссылка поменялась. Я что-то упустил?
1 Широкий
 
26.01.12
15:25
Тип объектов точно совпадают?
2 miner
 
26.01.12
15:36
точнее не бывает!
3 Широкий
 
26.01.12
15:44
Почему бы в обработке заполнения не добавить:
Сообщение.Текст = "УИДСсылкиОбъекта= "+Строка(ОбъектИсточника.Ссылка.УникальныйИдентификатор());
4 H A D G E H O G s
 
26.01.12
15:45
Добрый дедушка Мороз, подари нам новый Мозг!

Потому что УФ.
Поэтому устанавливай в ПередЗаписью()
5 miner
 
26.01.12
15:50
Не, передЗаписью не катит!
Суть такова, что нужно в еще не сохраненный объект передать переменную и использовать ее только при записи (когда уже объект записан и получил ссылку).
6 Serg_1960
 
26.01.12
15:51
В алгоритме "Менеджер = ПолучитьМенеджер(ОбъектИсточника);", мне так кажется, "не тот" менеджер юзается.
7 miner
 
26.01.12
15:52
2, Как это поменяет что-то? Насколько мне известно, Объекты могут и сами нормально в строку приводиться.
8 H A D G E H O G s
 
26.01.12
15:52
(6) Нет.
9 H A D G E H O G s
 
26.01.12
15:53
(6) Нет повести печальнее на свете, чем повесть о Тонком клиенте.

Вот, прмиерно похожая тема
v8: Передать значение с сервера на (внезапно) сервер!
10 Mort
 
26.01.12
15:53
(5) Заполняется один объект, а записывается другой. Вот перед записью в форме и назначь то чем заполнял.
11 miner
 
26.01.12
15:53
6, менеджер тот. Уже все протестировано в отладчике
12 Mort
 
26.01.12
15:54
+(10) Т.е. ссылку нового нужно будет два раза назначить если надо.
13 Mort
 
26.01.12
15:55
Хотя я скорее всего гоню.
14 H A D G E H O G s
 
26.01.12
15:55
(10) ПередЗаписьюНаСервере, либо в подписке на событие ПередЗаписью.
15 H A D G E H O G s
 
26.01.12
15:55
(13) Нет, ты прав.
16 miner
 
26.01.12
15:55
10., Этого не может быть! Записывается именно тот самй объект.
17 H A D G E H O G s
 
26.01.12
15:56
(16) Объект тот же, экземпляр объекта - другой.
18 H A D G E H O G s
 
26.01.12
15:57
(16) Все заполненные реквизиты, таб.части остаются нетронутыми, а вот переменные модуля, ДополнительныеСвойсва и новые ссылки - трутся между серверными вызовами.
19 Mort
 
26.01.12
15:58
Вот то что ссылки трутся меня смутило.
20 miner
 
26.01.12
15:58
17 какими чудесами? Конфа тестовая нерабочая. Создал пустой справочник,подписки итд
Если это и происходит, то это не из-за того что я не отслеживаю объект который в обработке заполнения создается. Это я сделаю потом. Сейчас мне нужно добиться чтобы было все просто - как я написал.
21 miner
 
26.01.12
15:59
17, А  вот это информативно! Спасибо! Значит Нужно искать путь другой.
22 H A D G E H O G s
 
26.01.12
16:00
(20) **facepalm.

Сделай УстановитьСсылкуНового() в ПередЗаписью().
Устанавливаемую ссылку сохрани во ВременномХранилище, адрес временного - в параметре сеанса.
23 H A D G E H O G s
 
26.01.12
16:01
(22) Это если не хочешь трогать конфу, иначе
идем в форму справочника, в процедуре ПриЧтенииНаСервере() получаем ссылку нового, сохраняем е в реквизиты формы, а в ПередЗаписьюНаСервере() снова устанавливаем.
24 Serg_1960
 
26.01.12
16:02
ТС... мелочь,но... тебя не затруднит писать ссылки на номера постов в скобочках? :)
25 miner
 
26.01.12
16:04
23, Стыд позорный?
26 miner
 
26.01.12
16:06
(24), Нет, совсем немного(шифт сломан)
(23), Проблема в том что то что нужно передать при/перед записью доступно именно в обработке заполнения.
27 Mort
 
26.01.12
16:08
(26) Ну за 5 минут я думаю ты не успел задать ссылку в обработке заполнения, сделать в форме события из (23) и посмотреть какие параметры у этих событий.
28 miner
 
26.01.12
16:11
(27), Я бы не парился если бы я мог, в форме что-то сделать. НЕЛЬЗЯ трогать форму и его события, а так же реквизиты объекта! :(
29 Рыцарь
 
26.01.12
16:13
А почему бы не поместить переменную в ПередЗаписью() в ДополнительныеСвойства и в ПриЗаписи использовать?
30 Mort
 
26.01.12
16:15
А почему именно обработка заполнения?
31 miner
 
26.01.12
16:19
(29) Дохлый номер, см. (18). Проверено!
32 Mort
 
26.01.12
16:19
Но если очень надо.

Напиши в обработке заполнения

ДанныеЗаполнения.Вставить("Ссылка", Документы.ФункциональноеТребование.ПолучитьСсылку());

В при создании на сервере эту структуру можно поймать в параметрах (ЗначенияЗаполнения). Хранишь в реквизите формы вплоть до ПередЗаписьюнаСервере

Profit!
33 Mort
 
26.01.12
16:21
Собсно ключ структуры "ссылка" не обязателен - можно "х*й" написать.
34 miner
 
26.01.12
16:22
(32) Не подходит - подписка обработки заполнения вызывается уже после выполнения обработки заполнения объекта. Опять же нельзя трогать мне ничего на форме и изменять объект тоже нельзя.
Я в аду! Уже неделю мучаюсь.
35 Mort
 
26.01.12
16:22
А как в (28) только через Ж.
36 Mort
 
26.01.12
16:23
А зачем ссылка в обработке заполнения? Просто интересно.
37 miner
 
26.01.12
16:23
(35) Мне бы хотя бы через этот проход! Я с самого начала это знал! Поэтому направился сразу туда.
38 H A D G E H O G s
 
26.01.12
16:24
39 H A D G E H O G s
 
26.01.12
16:24
Вот там все есть
40 miner
 
26.01.12
16:24
(36) Это мега секретная фича, которую хотят клиенты - ну встало у них на это!
41 Mort
 
26.01.12
16:27
(40) Ну примерно хотя бы о чем. Или клиенты шарят в подписках?
(38) Если две формы нового объекта открыть будет фэйл(
42 H A D G E H O G s
 
26.01.12
16:29
(41) А ты попробуй сделать это в тонком :-)

Ну а так - да, косяк, и как его исправить - хз.
43 Mort
 
26.01.12
16:31
(42) Да пытаюсь) Ещё пытаюсь понять нафига такое может понадобится.
44 Mort
 
26.01.12
16:31
Не изменяя форму пока не получается. С формой (32) работает, проверял.
45 H A D G E H O G s
 
26.01.12
16:32
just for lulz
46 miner
 
26.01.12
16:33
(43)Ну что ты мучишься? Я б с радостью забил бы и нафиг! Но если клиенты хотят, то нужно попробовать им это дать.
В общем чтоб тебе с такими проблемами не столкнуться.
47 miner
 
26.01.12
16:34
(45) Ты волшебник, наверно, спасибо! Вроде работает,но нужно еще обдумать о нюансах Параметра сеанса.
48 H A D G E H O G s
 
26.01.12
16:36
(47) А также то, что через 20 минут они превращаются в тыкву.
49 Mort
 
26.01.12
16:40
(46) Имеется подозрение что то, что хотят клиенты решается логическим нормальным путем. А подобные задачи возникают при ошибках проектирования и решаются действительно just for lulz.
50 miner
 
26.01.12
16:50
(49) лулз не лулз, а у клиента торчит. Нужно дать!
51 Mort
 
26.01.12
16:52
(50) Клиент так и выразил пожелание "хочу чтобы ссылка устанавливалась в обработке заполнения?".
52 miner
 
26.01.12
16:55
(51) Нет, но поверь, здесь не идиоты работают. И знают толк в проектировании. Все возможные варианты были рассмотрены.
53 miner
 
26.01.12
16:55
Точнее говоря это не первый продукт который входит.