|
Изменение реквизита типа УИД отрабатывает не так же, как и других типов. | ☑ | ||
---|---|---|---|---|
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
|
||||
5
ReaLg
07.11.20
✎
21:03
|
(2) Ну, как бы иногда не хочется всем прям говорить, что ты дурак. Но если Вы настаиваете :))
Вызов был вида РезультатС = ПеренестиСтрокуВНовыйЗаказ(Элементы.Заказы.ТекущиеДанные.УИДСтрокиЗаказы, ... Переделал на ТекУИД = Элементы.Заказы.ТекущиеДанные.УИДСтрокиЗаказы; РезультатС = ПеренестиСтрокуВНовыйЗаказ(ТекУИД, ... |
|||
6
ДенисЧ
07.11.20
✎
21:06
|
||||
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) Если во втором варианте добавить передачу параметра по значению, то должно работать. Просто при передаче с клиента на сервер всегда создаются копии параметров, а потом едут обратно на клиента. Вот старый УИД и приезжал обратно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |