|
|
|
ТипЗнч(ОбъектФорма.Ссылка.Скопировать()) - как-то не очень ↓ (Волшебник 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)
наверное что-то типа такого: ТипОбъекта = Тип("ДокументОбъект."+ОбъектФорма.Ссылка.Метаданные().Имя); ДокументОбъект = ДанныеФормыВЗначение(ОбъектФорма, ТипОбъекта); |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |