|   |   | 
| 
 | ТипЗнч(ОбъектФорма.Ссылка.Скопировать()) - как-то не очень ↓ (Волшебник 24.03.2024 23:55) | ☑ | ||
|---|---|---|---|---|
| 0
    
        RomaH naïve 24.03.24✎ 13:06 | 
&ИзменениеИКонтроль("УстановитьНомерЧекаДокументаВФорме")
Процедура МИ_УстановитьНомерЧекаДокументаВФорме(ОбъектФорма, НомерЧека, ИмяРеквизита)
	Если ТипЗнч(ОбъектФорма) = Тип("ФормаКлиентскогоПриложения") Тогда
		ДокументОбъект = ОбъектФорма.РеквизитФормыВЗначение("Объект");
	Иначе
		#Удаление
		ДокументОбъект = ДанныеФормыВЗначение(ОбъектФорма, ТипЗнч(ОбъектФорма.Ссылка.Скопировать()));
		#КонецУдаления
		#Вставка
		//ДокументОбъект = ДанныеФормыВЗначение(ОбъектФорма, ТипЗнч(ОбъектФорма.Ссылка.Скопировать()));
		ДокументОбъект = ДанныеФормыВЗначение(ОбъектФорма, ТипЗнч(ОбъектФорма.Ссылка.ПолучитьОбъект()));
		#КонецВставки
	КонецЕсли;
	ДокументОбъект[ИмяРеквизита] = НомерЧека;
	ДокументОбъект.ОбменДанными.Загрузка = Истина;
	ДокументОбъект.Записать();
	Если ТипЗнч(ОбъектФорма) = Тип("ФормаКлиентскогоПриложения") Тогда
		ОбъектФорма.ЗначениеВРеквизитФормы(ДокументОбъект,"Объект");
	КонецЕсли;
КонецПроцедуры
заменил "Скопировать" на "ПолучитьОбъект" дабы не отрабатывал алгоритм "ПриКопировании" но наверняка есть более правильный способ? | |||
| 1
    
        Волшебник 24.03.24✎ 13:09 | 
        Объясните, что вообще Вы делаете, какова цель?     | |||
| 2
    
        RomaH naïve 24.03.24✎ 13:11 | 
        ДанныеФормыВЗначение приводят 
 код "типовой" при отладке поймал непонятное выполнение - создание нового документа создается ОбъектФорма.Ссылка.Скопировать() хотя надо всего лишь получить тип ДокументОбъект делаю оптимизацию, так сказать | |||
| 3
    
        RomaH naïve 24.03.24✎ 13:12 | 
        ОбъектФорма - может быть разным документом     | |||
| 4
    
        RomaH naïve 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 naïve 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 naïve 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) 
 наверное что-то типа такого: ТипОбъекта = Тип("ДокументОбъект."+ОбъектФорма.Ссылка.Метаданные().Имя); ДокументОбъект = ДанныеФормыВЗначение(ОбъектФорма, ТипОбъекта); | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |