Имя: Пароль:
1C
1С v8
Как заполнить программно доп реквизиты документа?
0 AnisaL
 
08.05.19
11:33
Добрый день!
В расширении конфигурации УНФ, есть доп реквизиты у справочника контрагенты, они заполнены. Нужно чтобы, при выборе этого контрагента в форме  документа ЗаказНаряд, эти доп реквизиты вставали в доп реквизиты самого документа?
1 AnisaL
 
08.05.19
11:35
(0) + в процедуре ПриИзменении на поле контрагента написала такой код:
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КонтрагентыДополнительныеРеквизиты.Значение КАК Значение,
        |    КонтрагентыДополнительныеРеквизиты.Свойство КАК Свойство
        |ИЗ
        |    Справочник.Контрагенты.ДополнительныеРеквизиты КАК КонтрагентыДополнительныеРеквизиты
        |ГДЕ
        |    КонтрагентыДополнительныеРеквизиты.Ссылка = &Контрагенты";
        //|    И КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство";
    
    Запрос.УстановитьПараметр("Контрагенты", Контрагент);
//    Запрос.УстановитьПараметр("Свойство", Свойство);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        //Получаем ссылку на доп реквизит
                 ЗапросПВХ = Новый Запрос;
                ЗапросПВХ.Текст =
                    "ВЫБРАТЬ
                    |    ДополнительныеРеквизитыИСведения.Ссылка КАК Ссылка,
                    |    ДополнительныеРеквизитыИСведения.ТипЗначения КАК ТипЗначения
                    |ИЗ
                    |    ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
                    |ГДЕ
                    |    ДополнительныеРеквизитыИСведения.Наименование ПОДОБНО &Наименование";
                
                
                
                ЗапросПВХ.УстановитьПараметр("Наименование", "%" + ВыборкаДетальныеЗаписи.Свойство.Заголовок + "%"+ "Заказ" + "%");
                РезультатЗапросаПВХ = ЗапросПВХ.Выполнить();
                
                ВыборкаДетальныеЗаписиПВХ = РезультатЗапросаПВХ.Выбрать();
                
                Пока ВыборкаДетальныеЗаписиПВХ.Следующий() Цикл
                    
                    ДопРеквизитСсылка = ВыборкаДетальныеЗаписиПВХ.Ссылка;
                    
                КонецЦикла;

                ЕстьСтроки = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ДопРеквизитСсылка));
                
                ДокОбъект = Объект.ПолучитьОбъект();
                Если ЕстьСтроки.Количество() = 0 Тогда
                     СтрокаТЧ = Объект.ДополнительныеРеквизиты.Добавить();
                     СтрокаТЧ.Свойство = ДопРеквизитСсылка;
                    
                Иначе
                     СтрокаТЧ = ЕстьСтроки[0];
                КонецЕсли;
                СтрокаТЧ.Значение = ВыборкаДетальныеЗаписи.Значение;
                Объект.Записать();
2 AnisaL
 
08.05.19
11:36
(1) на эту строку ругается :
{Расширение1 Документ.ЗаказПокупателя.Форма.ФормаЗаказНаряда.Форма(52)}: Метод объекта не обнаружен (ПолучитьОбъект)
                ДокОбъект = Объект.ПолучитьОбъект();
3 AnisaL
 
08.05.19
11:39
(2) как получить документобъект у формы документа заказ-наряд, чтобы записать доп реквизиты?
4 sqr4
 
08.05.19
11:40
зачем док объект? когда надо объект?
5 sqr4
 
08.05.19
11:40
Зачем записывать документ, сразу при изменении
6 Cyberhawk
 
08.05.19
11:42
Или использовать реквизиты формы, где доп. реквизиты временно хранятся, или вклиниться в ПередЗаписьюНаСервере, там объект уже доступен
7 AnisaL
 
08.05.19
11:42
(5) а как надо?
8 AnisaL
 
08.05.19
11:44
(6) а как в реквизиты формы записать?
9 Timon1405
 
08.05.19
11:47
на заметку: В БСП есть функция
УправлениеСвойствами.ЗначениеСвойства(...)
10 Cyberhawk
 
08.05.19
11:55
(8) Для ответа на этот вопрос надо изучить, как организовано хранение данных в этих реквизитах формы
11 AnisaL
 
08.05.19
13:30
(10) Как обратиться к  элементам формы доп реквизитам ?
12 sqr4
 
08.05.19
13:37
https://forum.infostart.ru/forum9/topic207046/ и последний пост как это имя на форме задается
13 Cyberhawk
 
08.05.19
14:15
(11) С уважением
14 Cyberhawk
 
08.05.19
14:18
(12) Ориентироваться на правило именования - такой себе способ, т.к. это могут и поменять.
Тамошний автор не осилил обращаться к реквизиту формы-таблице соответствия, которая хранит соответствие имен реквизитов формы и элементов-полей
15 sqr4
 
08.05.19
15:51
(14) тоже такой себе способ, причины теже)
16 stix2010
 
08.05.19
16:34
(11) можно с запросом обратиться
17 Cyberhawk
 
13.05.19
10:46
(15) Вроде программный интерфейс по добавлению / заполнению доп. реквизитов на форме не записанного в БД объекта уже есть в БСП
18 sqr4
 
13.05.19
10:50
(17) Если есть, то нужно использовать его, а то что я писал выше приравнять к велосипеду.
19 Cyberhawk
 
13.05.19
11:07
(18) Ну вот этот типовой интерфейс БСП как раз и использует таблицу соответствия, хранящуюся в реквизите формы, о чем выше писал ) Просто раньше этого точно не было
20 sqr4
 
13.05.19
11:21
(19) Ну тут наверно сложно судить что дольше проживет, правило именования или эта таблица) Как "конечному" программисту, мне было бы удобнее использовать процедуру в которой все можно сделать и не обращать внимание на то что там внутри нее)
Ошибка? Это не ошибка, это системная функция.