|
ТипЗнч(ОбъектФорма.Ссылка.Скопировать()) - как-то не очень ↓ (Волшебник 24.03.2024 23:55) |
☑ | ||
---|---|---|---|---|
0
RomaH
24.03.24
✎
13:06
|
&ИзменениеИКонтроль("УстановитьНомерЧекаДокументаВФорме") Процедура МИ_УстановитьНомерЧекаДокументаВФорме(ОбъектФорма, НомерЧека, ИмяРеквизита) Если ТипЗнч(ОбъектФорма) = Тип("ФормаКлиентскогоПриложения") Тогда ДокументОбъект = ОбъектФорма.РеквизитФормыВЗначение("Объект"); Иначе #Удаление ДокументОбъект = ДанныеФормыВЗначение(ОбъектФорма, ТипЗнч(ОбъектФорма.Ссылка.Скопировать())); #КонецУдаления #Вставка //ДокументОбъект = ДанныеФормыВЗначение(ОбъектФорма, ТипЗнч(ОбъектФорма.Ссылка.Скопировать())); ДокументОбъект = ДанныеФормыВЗначение(ОбъектФорма, ТипЗнч(ОбъектФорма.Ссылка.ПолучитьОбъект())); #КонецВставки КонецЕсли; ДокументОбъект[ИмяРеквизита] = НомерЧека; ДокументОбъект.ОбменДанными.Загрузка = Истина; ДокументОбъект.Записать(); Если ТипЗнч(ОбъектФорма) = Тип("ФормаКлиентскогоПриложения") Тогда ОбъектФорма.ЗначениеВРеквизитФормы(ДокументОбъект,"Объект"); КонецЕсли; КонецПроцедуры заменил "Скопировать" на "ПолучитьОбъект" дабы не отрабатывал алгоритм "ПриКопировании" но наверняка есть более правильный способ? |
|||
1
Волшебник
24.03.24
✎
13:09
|
Объясните, что вообще Вы делаете, какова цель?
|
|||
2
RomaH
24.03.24
✎
13:11
|
ДанныеФормыВЗначение приводят
код "типовой" при отладке поймал непонятное выполнение - создание нового документа создается ОбъектФорма.Ссылка.Скопировать() хотя надо всего лишь получить тип ДокументОбъект делаю оптимизацию, так сказать |
|||
3
RomaH
24.03.24
✎
13:12
|
ОбъектФорма - может быть разным документом
|
|||
4
RomaH
24.03.24
✎
13:18
|
может строку найти заменить?
сто-то типа: СтрЗаменить(ТипЗнч(ОбъектФорма.Ссылка),"ДокументСсылка",ДокументОбъект") ? |
|||
5
Garykom
24.03.24
✎
15:23
|
(2) Типовой код не обязательно всегда правильный и без ошибок
Имхо ДокументОбъект = ДанныеФормыВЗначение(ОбъектФорма, ТипЗнч(ОбъектФорма.Ссылка.Скопировать())); это какой то ахтунг и непонятно зачем он там Интересно внутри ДанныеФормыВЗначение что происходит? |
|||
6
Garykom
24.03.24
✎
13:51
|
(4) Тип(СтрЗаменить(Строка(ТипЗнч(ОбъектФорма.Ссылка)),"Ссылка.",Объект."))
|
|||
7
Garykom
24.03.24
✎
13:51
|
(6)+ :)
|
|||
8
Garykom
24.03.24
✎
15:25
|
(5)+ Что внутри ДанныеФормыВЗначение подразумевал а найдет ли оно по данным формы существующий в базе объект (Документ или Справочник)
Или всегда будет новый .Записать(); |
|||
9
RomaH
24.03.24
✎
16:06
|
ну до сих пор находило
|
|||
10
Волшебник
24.03.24
✎
17:11
|
а, понятно... Дурдомите
|
|||
11
youalex
24.03.24
✎
17:48
|
(5) судя по МИ_ это не совсем типовое
|
|||
12
youalex
24.03.24
✎
17:50
|
(11) а это префикс расширения, ок
|
|||
13
Сергиус
24.03.24
✎
19:32
|
(0)[заменил "Скопировать" на "ПолучитьОбъект" дабы не отрабатывал алгоритм "ПриКопировании"]
В чём проблема вообще? |
|||
14
AlvlSpb
24.03.24
✎
19:46
|
ДанныеФормыВЗначение(ОбъектФорма.Объект, Тип("ДокументСсылка.ТвойДокумент")
|
|||
15
Garykom
24.03.24
✎
19:47
|
(13) Вероятно скорость работы чтобы просто по типу Ссылка получить связанный тип Объект
не выполнять бесполезное Объект = Ссылка.Скопировать() |
|||
16
RomanYS
24.03.24
✎
23:49
|
(15) вряд ли дело в скорости. Цикла нет, а на одном элементе разницу между получением объекта и копированием не поймаешь (если она вообще есть). Если конечно нет навороченного обработчика ПриКопировании
|
|||
17
Garykom
25.03.24
✎
00:24
|
(16) А он запросто может быть навороченный
И может быть вызов этой процедуры в цикле (чисто теоретически ибо форма объекта вроде как) Так что типовой код не оптимальный и ТС правильно хочет Но лично не понимаю что произойдет с ДанныеФормыВЗначение и затем Записать(), надо проверять практически что с УИД |
|||
18
DrZombi
25.03.24
✎
06:22
|
(2) Скопировать делает новый.
ДокументСсылка.<Имя документа> (DocumentRef.<Document name>) Скопировать (Copy) Синтаксис: Скопировать() Возвращаемое значение: Тип: ДокументОбъект.<Имя документа>. Описание: Создает новый документ копированием существующего. + Не очень удачно отыгрывает табличные части. (но может быть это связано с релизом, и у вас все отыграет) |
|||
19
Ненавижу 1С
25.03.24
✎
08:07
|
(0)
наверное что-то типа такого: ТипОбъекта = Тип("ДокументОбъект."+ОбъектФорма.Ссылка.Метаданные().Имя); ДокументОбъект = ДанныеФормыВЗначение(ОбъектФорма, ТипОбъекта); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |