Имя: Пароль:
1C
1С v8
Как установить доп реквизиты документу, который ещё не создан
, ,
0 MAPATNK2
 
naïve
08.08.23
13:34
День добрый. Заполняю доп.реквизиты документа "Поручение экспедитору", когда создаю документ на основании реализации. В момент открытия формы доп реквизиты должны быть заполнены. Вот код:



Если Параметры.Ключ.Пустая() тогда  
                
        СвойствоДокО =  ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "Отправитель_00d4dbacffc3465a8ed05b51ee241c1e");
        СвойствоДокП =  ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "Получатель_d8f93a3e29564e0cb85c9db2e1a3e688");    
        СвойствоДокПО = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "Плательщик_6dc68921f1f9435891b9e90fdfcb1468");
        
        Если объект.Основания.Количество()>0 тогда    
            
            МассивСтруктур = Новый Массив;
            МассивСтруктур.Добавить(Новый Структура("Свойство, Значение",СвойствоДокО,объект.Основания[0].Основание.Организация));
            МассивСтруктур.Добавить(Новый Структура("Свойство, Значение",СвойствоДокО,объект.Основания[0].Основание.Контрагент));  
            МассивСтруктур.Добавить(Новый Структура("Свойство, Значение",СвойствоДокПО,объект.Основания[0].Основание.Контрагент));
            
            НужнаяСсылка = Объект.Ссылка;
            Если НужнаяСсылка.Пустая() Тогда
                СсылкаНового = Документы.ПоручениеЭкспедитору.ПолучитьСсылку();
                ЭтотОбъект.УстановитьСсылкуНового(СсылкаНового);  
                Ссыл = ЭтотОбъект.ПолучитьСсылкуНового();
            КонецЕсли;
            
            УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НужнаяСсылка, МассивСтруктур);  
            
        КонецЕсли;
        
    КонецЕсли;



Код не пашет на месте установления новой ссылки ещё не созданного документа. Подскажите как решить?
Чтобы установить реквизиты, нужна ссылка, а ссылки ешё нет.
1 Волшебник
 
08.08.23
13:35
Запишите документ, будет ссылка. Установите реквизиты после записи.
2 RomanYS
 
08.08.23
13:38
Ссыл = ЭтотОбъект.ПолучитьСсылкуНового();//НужнаяСсылка?
3 Aleksey
 
08.08.23
13:38
Ну так это разве не табличная часть документа? Ну и заполняй так же как обычную ТЧ
4 RomanYS
 
08.08.23
13:43
(3) допреквизиты - ТЧ, допсвойства - РС.
5 MAPATNK2
 
naïve
08.08.23
13:54
(1) Записывать документ мне не нужно, не факт, что пользователь захочет его записать.
6 MAPATNK2
 
naïve
08.08.23
13:54
(3) (4)  Нет, это не табличная часть документа.
7 MAPATNK2
 
naïve
08.08.23
13:55
(2) Ну чутка перепутал. вместо НужнаяСсылка должно быть Ссыл. В любом случае, на моменте получения ссылки летит ошибка, что Метод "УстановитьСсылкуНового" не обнаружен.
8 RomanYS
 
08.08.23
14:03
(7) и когда ты собирался это озвучить)))?
ЭтотОбъект у тебя это форма и у нее действительно нет такого метода
9 RomanYS
 
08.08.23
14:05
(6) так опеределись допреквизиты или допсвойства.
10 Aleksey
 
08.08.23
14:06
(4) ну в заголовкке и в теме речь идет о "доп реквизиты ", т.е. ТЧ
А автор говорит что это не ТЧ.
Т.е. или кто от вводит в заблуждение, или речь о старой конфе когда допреквизиты были только в справочнике и хранились в РС
11 MAPATNK2
 
naïve
08.08.23
14:32
(10) Почитал, да ТЧ. С управляемыми формами не работал. Но разбираться, как с ТЧ работать доп реквизитов, времени нет. Пытался по примерам из статей сделать, но не понятно куда эту процедуру пихать, почему ошибки валяться при попытке использовать Объект.ДополнительныеРеквизиты.Найти(СвойствоДокО, "Свойство");

Хочу сделать через БСП, нужно понять, как получить ссылку документа, который ещё не создан из модуля формы.
12 MAPATNK2
 
naïve
08.08.23
14:34
Т.е пытался сделать так

                        ДопРек = Объект.ДополнительныеРеквизиты.Найти(СвойствоДокО, "Свойство");  
            Если ДопРек = Неопределено Тогда
                ДопРек = Объект.ДополнительныеРеквизиты.Добавить();
            КонецЕсли;
            ДопРек.Свойство = СвойствоДокО;
            ДопРек.Значение = объект.Основания[0].Основание.Организация;

ошибка на первой же строке "найти".
13 Garykom
 
гуру
08.08.23
14:34
(5) Вот когда пользователь захочет записать тогда и выполняй свой код
14 Garykom
 
гуру
08.08.23
14:34
(12) Может тебе на курсы или просто в менагеры?
15 MAPATNK2
 
naïve
08.08.23
14:35
(13) Не вариант, пользователь должен видеть данные доп реквизиты, после чего принять решение о проведении документа.
16 MAPATNK2
 
naïve
08.08.23
14:35
(14) Возможно, но пока и тут норм.
17 Garykom
 
гуру
08.08.23
14:36
(16) Тебе еще и платят что ли?
18 MAPATNK2
 
naïve
08.08.23
14:36
(14) Тут больше опыт, курсы в данном случае не помогут, проходил десятки))
19 MAPATNK2
 
naïve
08.08.23
14:37
(17) Давай по делу) Не хочешь помочь, беги в другую ветку.
20 Garykom
 
гуру
08.08.23
14:37
(19) Тут уже не поможешь... Сразу в морг
21 Garykom
 
гуру
08.08.23
14:39
Олень зачем тебе Найти если у тебя форма нового документа???

ТЧ ДополнительныеРеквизиты пустая 100%!
22 Garykom
 
гуру
08.08.23
14:41
И ты это пытаешься делать ПриСозданииНаСервере или ПриОткрытии?
23 MAPATNK2
 
naïve
08.08.23
14:41
(21) 1. Откуда мне знать, что она пустая. Доп реквизиты есть. По логике, ТЧ должна быть заполнена доп реквизитами, а вот значения должны быть пустыми.
При заполнении её так же ничего не происходит.

ДопРек = Объект.ДополнительныеРеквизиты.Добавить();
ДопРек.Свойство = СвойствоДокО;
ДопРек.Значение = объект.Основания[0].Основание.Организация;
24 Garykom
 
гуру
08.08.23
14:42
(23) >По логике, ТЧ должна быть заполнена доп реквизитами, а вот значения должны быть пустыми.

По чьей логике?
25 Garykom
 
гуру
08.08.23
14:44
УФ = клиент-сервер
там есть хитрости с этим твоим "Объект"
26 Garykom
 
гуру
08.08.23
14:46
Подумай нахрена вот такой код пишут, для вызова &НаКлиенте

&НаСервере
Процедура ПересчитатьНаСервере()
    // Преобразует реквизит Объект в прикладной объект.
    Документ = РеквизитФормыВЗначение("Объект");
    // Выполняет пересчет методом, определенным в модуле документа.
    Документ.Пересчитать();
    // Преобразует прикладной объект обратно в реквизит.
    ЗначениеВРеквизитФормы(Документ, "Объект");
КонецПроцедуры
27 MAPATNK2
 
naïve
08.08.23
14:52
(22) Пробовал и при открытии и при Создании на Сервере. Ничего не дает. (26) Этот код тоже пихал, ошибка при выполнении "Пересчитать".
28 Garykom
 
гуру
08.08.23
15:22
(27) >ошибка при выполнении "Пересчитать".

Ыыыы
29 MAPATNK2
 
naïve
08.08.23
15:27
В общем, проблема была в том, что я кидал в расширение обработчик события после, а не перед. (28) Документ = РеквизитФормыВЗначение("Объект"); Это вообще нафиг не надо было.
30 MAPATNK2
 
naïve
08.08.23
15:30
(28) Я думал, что эта дичь   Документ.Пересчитать(); форму обновляет, а это просто шлак какой то.
31 Garykom
 
гуру
08.08.23
15:54
(29) эта штука нужна когда ПриОткрытии например делаешь или еще где на клиенте
если в ПриСозданииНаСервере то не надо
Независимо от того, куда вы едете — это в гору и против ветра!