Внесение информации в справочники

Версия для печатиPDF-версия

Платформа:

Здравствуйте, только начал осваивать 1С, помогите пожалуйста разобраться.

Есть 2 справочника: УчетРемонтов и ТипыУстройств

Кроме стандартных Код и Наименование у справочника УчетРемонтов есть реквизит ТипУстройства у которого тип данных СправочникСсылка.ТипыУстройств

Пишу процедуру для заполнения этих справочников.

Возникла проблемма с заполнением реквизита ТипУстройства. Как правильно сделать ссылку на другой справочник?

Код такой:

//Кнопка ТЕСТ
&НаСервере
Процедура ТестНаСервере()
   
    //ДОБАВЛЕНИЕ В СПРАВОЧНИК ТИПЫ УСТРОЙСТВ
    ТипыУстройствНоваяЗапись = Справочники.ТипыУстройств.СоздатьЭлемент();
    ТипыУстройствНоваяЗапись.Наименование = "Тип устройства 1";
    ТипыУстройствНоваяЗапись.Записать();
        
    //ДОБАВЛЕНИЕ В СПРАВОЧНИК УЧЕТ РЕМОНТОВ
    УчетРемонтовНоваяЗапись = Справочники.УчетРемонтов.СоздатьЭлемент();
    УчетРемонтовНоваяЗапись.Наименование = "Номер ремонта 1";
    УчетРемонтовНоваяЗапись.ТипУстройства = "???" ; //Сюда нужно добавить ссылку на справочник ТипыУстройств    
    УчетРемонтовНоваяЗапись.Записать();
    
    Элементы.Список.Обновить();
    
КонецПроцедуры
 

 

 

УчетРемонтовНоваяЗапись.ТипУстройства = ТипыУстройствНоваяЗапись.Ссылка;

Большое Спасибо. Работает.

До того как обратился с вопросом, пытался сделать вот так:

УчетРемонтовНоваяЗапись.ТипУстройства  = ТипыУстройствНоваяЗапись.Ссылка.Наименование;

Т.е на конкретный реквизит справочника. Не работало.

Хотелось бы до конца разобраться с вопросом.

Допустим у меня в справочнике ТипыУстройств есть реквизит Бренд (понятно, что так справочники неправильно делать, исключительно для примера).

В справочнике УчетРемонтов так же есть реквизит Бренд.

Как его добавить?

Код

//ДОБАВЛЕНИЕ В СПРАВОЧНИК ТИПЫ УСТРОЙСТВ
    ТипыУстройствНоваяЗапись = Справочники.ТипыУстройств.СоздатьЭлемент();
    ТипыУстройствНоваяЗапись.Наименование = "Тип устройства 1";
    ТипыУстройствНоваяЗапись.Бренд = "Бренд 1";
    ТипыУстройствНоваяЗапись.Записать();
        
    //ДОБАВЛЕНИЕ В СПРАВОЧНИК УЧЕТ РЕМОНТОВ
    УчетРемонтовНоваяЗапись = Справочники.УчетРемонтов.СоздатьЭлемент();
    УчетРемонтовНоваяЗапись.Наименование = "Номер ремонта 1";
    УчетРемонтовНоваяЗапись.ТипУстройства = ТипыУстройствНоваяЗапись.Ссылка;
    УчетРемонтовНоваяЗапись.Бренд = ???;
    УчетРемонтовНоваяЗапись.Записать();
    
    Элементы.Список.Обновить();
 

 

 

Если у реквизита Бренд тип строка, то просто присваиваете этому реквизиту нужное значение:

УчетРемонтовНоваяЗапись.Бренд = "Бренд 1";

Если реквизит ссылочного типа, то нужно присваивать ссылку на значение (разумеется, сначала нужно создать элемент нужного справочника):

УчетРемонтовНоваяЗапись.Бренд = Справочники.Бренды.НайтиПоНаименованию("Бренд 1", Истина);

Не получается.

По поводу типов переменных.

В справочнике ТипыУстройств у меня есть реквизит Бренд с типом данных Строка

В справочнике УчетРемонтов тоже есть реквизит Бренд с типом данных СправочникСсылка.ТипыУстройств

Делаем сначала новую запись в справочнике ТипыУстройств, там все просто текстом заполняем.

А в справочнике УчетРемонтов уже заносим ссылку на реквизит Бренд справочник ТипыУстройств.

Чтобы при изменении в справочнике ТипыУстройств он менялся также и в справочнике УчетРемонтов

Написал так:

    //ДОБАВЛЕНИЕ В СПРАВОЧНИК ТИПЫ УСТРОЙСТВ
    ТипыУстройствНоваяЗапись = Справочники.ТипыУстройств.СоздатьЭлемент();
    ТипыУстройствНоваяЗапись.Наименование = "Тип устройства 1";
    ТипыУстройствНоваяЗапись.Бренд = "Бренд 1";
    ТипыУстройствНоваяЗапись.Записать();
        
    //ДОБАВЛЕНИЕ В СПРАВОЧНИК УЧЕТ РЕМОНТОВ
    УчетРемонтовНоваяЗапись = Справочники.УчетРемонтов.СоздатьЭлемент();
    УчетРемонтовНоваяЗапись.Наименование = "Номер ремонта 1";
    УчетРемонтовНоваяЗапись.ТипУстройства = ТипыУстройствНоваяЗапись.Ссылка;
    УчетРемонтовНоваяЗапись.Бренд = Справочники.ТипыУстройств.НайтиПоНаименованию(ТипыУстройствНоваяЗапись.Бренд, Истина);
    УчетРемонтовНоваяЗапись.Записать();
    
    Элементы.Список.Обновить();

Не работает.

 

 

Во-первых, зачем дублировать информацию в справочнике Учет ремонтов? У вас будет 2 реквизита с типом Справочник.ТипыУстройств, в которых по сути будет одно и то же значение.

Во-вторых, зачем вообще хранить Бренд в справочнике Учет ремонтов? Его при необходимости можно легко получить из реквизита ТипУстройства и вывести на любую форму или в отчет.

В-третьих, если уж хотите найти элемент справочника не по Наименованию, а по значению произвольного реквизита, то надо использовать метод НайтиПоРеквизиту((<ИмяРеквизита>, <ЗначениеРеквизита>), а не НайтиПоНаименованию.

Да-да. Я что-то придумал какой-то полный БРЕнД. )) Разобрался.

Проблема была в отображении в таблице. Но это я уже настроил.

Еще раз Большое Спасибо.