|   |   | 
| 
 | Изменение реквизита типа УИД отрабатывает не так же, как и других типов. | ☑ | ||
|---|---|---|---|---|
| 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) Если во втором варианте добавить передачу параметра по значению, то должно работать. Просто при передаче с клиента на сервер всегда создаются копии параметров, а потом едут обратно на клиента. Вот старый УИД и приезжал обратно     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |