|
Изменение реквизита типа УИД отрабатывает не так же, как и других типов. |
☑ |
0
ReaLg
07.11.20
✎
18:01
|
Что-то я туплю.
Есть ТЧ документа.
В ТЧ есть колонка с типом УИД.
Меняю значения строки в серверной функции.
Получаю строку:
---
ОтборС = Новый Структура;
ОтборС.Вставить("УИДСтрокиЗаказы", УИДСтрокиЗаказы);
НС = Объект.Заказы.НайтиСтроки(ОтборС);
Если НС.Количество() < 1 Тогда
РезультатС.Результат = Ложь;
РезультатС.ОписаниеОшибки = "Не найдена строка для переноса.";
Возврат РезультатС;
КонецЕсли;
СтараяСтрокаЗНР = НС[0];
----
Потом меняю:
---
НовыйУИДСтрокиЗаказа = Новый УникальныйИдентификатор;
---
СтараяСтрокаЗНР.Заказ = НовыйЗаказО.Ссылка;
СтараяСтрокаЗНР.УИДСтрокиЗаказы = НовыйУИДСтрокиЗаказа;
СтараяСтрокаЗНР.ДатаОтгрузки = НоваяДатаОтгрузки;
СтараяСтрокаЗНР.Покупатель = НовыйПокупатель;
СтараяСтрокаЗНР.Соглашение = НовоеСоглашение;
---
Все, дальше фиксация изменений и возврат на клиент:
---
ЗафиксироватьТранзакцию();
Возврат РезультатС;
---
При этом все остальные реквизиты, ДатаОтгрузки, например, меняются нормально, а УИДСтрокиЗаказы в момент возвращения
на клиент приобретает старое значение.
Я в отладчике вижу, что на сервере новое значение, при возврате на клиент - старое.
Я сделал костыль конечно, с возвратом нового УИДа на клиент и присвоением там, но хочется понять что происходит :))
|
|
1
ReaLg
07.11.20
✎
18:49
|
Вопрос снят.
Нашел, где туплю.
Вот что Миста животворящая делает :))
|
|
2
ДенисЧ
07.11.20
✎
18:55
|
И самое главное - никому не рассказывай, даже если тебя будут пытать...
|
|
3
Злопчинский
07.11.20
✎
19:24
|
(2) запишите меня в палачи!
|
|
4
ДенисЧ
07.11.20
✎
19:32
|
(3)
|
|
5
ReaLg
07.11.20
✎
21:03
|
(2) Ну, как бы иногда не хочется всем прям говорить, что ты дурак. Но если Вы настаиваете :))
Вызов был вида
РезультатС = ПеренестиСтрокуВНовыйЗаказ(Элементы.Заказы.ТекущиеДанные.УИДСтрокиЗаказы, ...
Переделал на
ТекУИД = Элементы.Заказы.ТекущиеДанные.УИДСтрокиЗаказы;
РезультатС = ПеренестиСтрокуВНовыйЗаказ(ТекУИД, ...
|
|
6
ДенисЧ
07.11.20
✎
21:06
|
(5)
)))
|
|
7
ReaLg
07.11.20
✎
21:11
|
Сделал тестовую базу, Документ, ТЧ, одна кнопка.
&НаКлиенте
Процедура ИзменитьСтроку(Команда)
//Вариант 1
ТекУИД = Элементы.ТабличнаяЧасть1.ТекущиеДанные.УИД;
ИзменитьСтрокуНаСервере(ТекУИД);
//Вариант 2
//ИзменитьСтрокуНаСервере(Элементы.ТабличнаяЧасть1.ТекущиеДанные.УИД);
КонецПроцедуры
&НаСервере
Процедура ИзменитьСтрокуНаСервере(УИД)
Если Объект.ТабличнаяЧасть1.Количество() > 0 Тогда
ТекСтрока = Объект.ТабличнаяЧасть1.Получить(0);
ТекСтрока.РСтрока = "112233";
ТекСтрока.УИД = Новый УникальныйИдентификатор;
КонецЕсли;
КонецПроцедуры
Вариант1 работает, Вариант2 нет.
|
|
8
ДНН
07.11.20
✎
21:15
|
(7) Если во втором варианте добавить передачу параметра по значению, то должно работать. Просто при передаче с клиента на сервер всегда создаются копии параметров, а потом едут обратно на клиента. Вот старый УИД и приезжал обратно
|
|