helpf.pro
Регистрация

v8.2 УП: При создании реквизита программно какой необходимо задать путь к данным ?

Peka
18.03.2015 10:30Прочитано: 2172

Создаю новый реквизит при открытии формы справочника в процедуре ПриСозданииНаСервере.

ДобавляемыеРеквизиты = Новый Массив;

НовыйРеквизит = Новый РеквизитФормы("КонтактноеЛицо", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"), <Путь>, "Контактное лицо:");

ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);

ИзменитьРеквизиты(ДобавляемыеРеквизиты); 

У объекта нет реквизита КонтактноеЛицо, а на форме нужно вывести значение.

Как это сделать ?

Yandex
Возможно, вас также заинтересует
Реклама на портале
Obscurus
18.03.2015 13:31Ответ № 1

Ни разу не использовал, но исходя из описания:

Описание:

Тип: {}Строка{}. Содержит путь к реквизиту. Не включает имя реквизита.

Должно быть что-то подобное "Документ.ПриемНаРаботу.Работники"

Peka
18.03.2015 14:07Ответ № 2

Не надо угадывать.

Обычно в управляемых формах <Путь> пишется "Объект.<Имя реквизита>". Но в данном случае реквизит создается программно, а данные находятся в конфигурации: например "Справочник.ФизическиеЛица". Вопрос заключается в том как увязать данные с программно добавленным реквизитом, что бы отобразить их на форме.

Obscurus
18.03.2015 14:23Ответ № 3

реквизиты объектов БД

ИзменитьРеквизиты();

реквизиты формы

ЭтаФорма.ИзменитьРеквизиты();

Obscurus
18.03.2015 14:27Ответ № 4

http://www.forum.mista.ru/topic.php?id=587253

E_Migachev
18.03.2015 15:02Ответ № 5

Из рабочей конфы:

Код 1C v 8.3
 // Реквизиты
ДобавляемыеРеквизиты = Новый Массив;

ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));

Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);




//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);

//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");

//элемент формы
//Родитель                     = Элементы.ГруппаСформированныеДокументы;
Элемент                      = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид                  = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным          = ИмяЭлемента;
Элемент.Гиперссылка          = Истина;
Элемент.ПоложениеЗаголовка   = ПоложениеЗаголовкаЭлементаФормы.Нет;

ЭтаФорма[ИмяЭлемента] = Документ;

//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;
E_Migachev
18.03.2015 15:12Ответ № 6

еще 

Код 1C v 8.2 УП
 &НаСервере
Процедура ДобавитьНаСервере()
        
    ДобавляемыеРеквизиты = Новый Массив;    
    Реквизит1 = Новый РеквизитФормы("Таб", Новый ОписаниеТипов("ТаблицаЗначений"), , "Таблица", Истина);
    ДобавляемыеРеквизиты.Добавить(Реквизит1); 
    ИзменитьРеквизиты(ДобавляемыеРеквизиты);
    
    ДобавляемыеРеквизиты = Новый Массив;    
    Реквизит2 = Новый РеквизитФормы("Кол", Новый ОписаниеТипов("Строка"),"Таб" , "Колонка", Истина);
    ДобавляемыеРеквизиты.Добавить(Реквизит2); 
    ИзменитьРеквизиты(ДобавляемыеРеквизиты);
    
    ТаблицаФормы = ЭтаФорма.Элементы.Добавить("Таблица", Тип("ТаблицаФормы"), ЭтаФорма);    
    ТаблицаФормы.ПутьКДанным = "Таб";       
    
    Колонка = ЭтаФорма.Элементы.Добавить("Колонка", Тип("ПолеФормы"), ТаблицаФормы);    
    Колонка.ПутьКДанным = "Таб.Кол";       
    
КонецПроцедуры
Peka
18.03.2015 15:29Ответ № 7

Пишу по подсказке:

Код 1C v 8.2 УП
 ДобавляемыеРеквизиты = Новый Массив;
НовыйРеквизит = Новый РеквизитФормы("КонтактноеЛицо", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты); 

Элемент = Элементы.Добавить("КонтактноеЛицо", Тип("ПолеФормы"));
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.ПутьКДанным = НовыйРеквизит;

В результате ругается: Ошибка при установке значения атрибута контекста (ПутьКДанным)

Что я делаю не так ?

Peka
18.03.2015 15:40Ответ № 8

Получилось !

Необходимо прописать:

Код 1C v 8.2 УП
 Элемент.ПутьКДанным = "КонтактноеЛицо";   
Peka
18.03.2015 15:40Ответ № 9
Вопрос закрыт!
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.