8.х ОБМЕН Изменить элемент справочника в подключаемой по OLE базе

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем Aswed, 28 авг 2009.

  1. TopicStarter Overlay
    Aswed
    Offline

    Aswed

    Регистрация:
    28 авг 2009
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Нужно производить записть в реквизит элемента справочника в базе подключённой по OLE.
    Делаю так:

    Заказчик = База.Справочники.Контрагенты.НайтиПоКоду(ДокументЗаказа.Заказчик.Code);
    Клиент = Справочники.Клиенты.СоздатьЭлемент();
    ПоследнийНомер = ПолучитьНомерУникальногоИдентификатора(Справочники.Клиенты.ПустаяСсылка());
    НовыйНомер = Число(ПоследнийНомер) + 1;
    УникальныйНомер = "Клиент" + НовыйНомер;
    Клиент.УникальныйИдентификатор = УникальныйНомер;
    Клиент.Наименование = ПереданныйКонтрагент.Наименование;
    ПереданныйКонтрагент.УникальныйИдентификатор = УникальныйНомер;
    ПереданныйКонтрагент.Записать();
    Клиент.Записать();
    Возврат Клиент;

    Рагуется на строку: ПереданныйКонтрагент.УникальныйИдентификатор = УникальныйНомер;

    Пишет: "Ошибка при установке атрибута контекста "УникальныйИдентификатор": Метод не найден"

    Подскажите что не правильно написал?
  2. Senya
    Offline

    Senya Опытный в 1С

    Регистрация:
    6 июн 2006
    Сообщения:
    594
    Симпатии:
    0
    Баллы:
    26
    А есть такой реквизит справочника? Или надо просто установить УИД? Тогда наверное надо так:
    Код:
    Заказчик = База.Справочники.Контрагенты.НайтиПоКоду(ДокументЗаказа.Заказчик.Code);
    //Клиент = Справочники.Клиенты.СоздатьЭлемент();
    ПоследнийНомер = ПолучитьНомерУникальногоИдентификатора(Справочники.Клиенты.ПустаяСсылка());
    НовыйНомер = Число(ПоследнийНомер) + 1;
    УникальныйНомер = "Клиент" + НовыйНомер;
    КлиентСсылка = Справочники.Клиенты.ПолучитьСсылку(УникальныйНомер);
    //Клиент.УникальныйИдентификатор = УникальныйНомер;
    Если КлиентСсылка = Справочники.Клиенты.ПустаяСсылка() Тогда
    Клиент = Справочники.Клиенты.СоздатьЭлемент();
    Клиент.УстановитьСсылкуНового(КлиентСсылка);   
    Иначе
    Клиент = Клиентссылка.ПолучитьОбъект();   
    КонецЕсли;
    Клиент.Наименование = ПереданныйКонтрагент.Наименование;
    ПереданныйКонтрагент.УникальныйИдентификатор = УникальныйНомер;
    ПереданныйКонтрагент.Записать();
    Клиент.Записать();
    Возврат Клиент; 
    
    
    Немного запутался в Ваших справочниках. Но уникальный идентификатор не доступен для записи. поэтому сначала создаётся ссылка, а затем объет, которому и присваевается нужный УИД ч/з УстановитьссылкуНового().
    Вот так как-то. Поэкспериментируйте.

Поделиться этой страницей