Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Создание подчиненного справочника програмно
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Flexy
Добрый Вечер. ТИС 7.7.

Пишу обработку по загрузке Товаров из Excel.
Все вроде бы нормально.Элемент записываеться.Но в расходную накладную при выборе товара не подтягивается из подчиненного справочника
единица товара ("шт"). Хотя на форме товара реквизит "ЕдиницаПоУмолчанию" заполнен. Если я его в форме выбираю по новой и перезаписываю элемент, то в Расходную все четко подтягиваеться.

Не пойму, в чем дело? Куда Копать?

Заранее Спасибою

Код:

СпрНоменклатура.Новый();
    
    //Реквизиты Номенклатуры///////////////////
    
    СпрНоменклатура.ИспользоватьДату('01.01.1980');
    
    СпрНоменклатура.Наименование = НаименованиеТовара;
    
    СпрНоменклатура.БазоваяЕдиница=Константа.ТипБазовойЕдиницыПоУмолчанию;
        
    
    СпрНоменклатура.Записать();


    
//Подчиеннный - "Единицы"///
    
    ЕдиницыТовара = СоздатьОбъект("Справочник.Единицы");
    ЕдиницыТовара.ИспользоватьВладельца(СпрНоменклатура.ТекущийЭлемент());
    ЕдиницыТовара.ИспользоватьДату('01.01.1980');    
    
    ЕдиницыТовара.ВыбратьЭлементы();
    Пока ЕдиницыТовара.ПолучитьЭлемент() = 1 Цикл
        Если ЕдиницыТовара.Единица = СпрНоменклатура.БазоваяЕдиница Тогда
            // есть базовая, создавать ее не надо
            Базовая = ЕдиницыТовара.ТекущийЭлемент();
        КонецЕсли;
    КонецЦикла;
    
    Если ПустоеЗначение(Базовая) = 1 Тогда
        НоваяБазоваяЕдиница = СоздатьОбъект("Справочник.Единицы");
        НоваяБазоваяЕдиница.ИспользоватьВладельца(СпрНоменклатура.ТекущийЭлемент());
        НоваяБазоваяЕдиница.Новый();
        НоваяБазоваяЕдиница.Наименование = СпрНоменклатура.БазоваяЕдиница.Наименование;
        НоваяБазоваяЕдиница.Единица = СпрНоменклатура.БазоваяЕдиница;
        //НоваяБазоваяЕдиница.Вес = Вес;
        НоваяБазоваяЕдиница.Коэффициент = 1;
        НоваяБазоваяЕдиница.Штрихкод = ШтрихкодТовара;
        
        Попытка
            НоваяБазоваяЕдиница.Записать();
            //Записали базовую
            ЗаписалиБазовую = 1;
        Исключение
            Предупреждение("Невозможно создать единицу измерения.");
            Возврат;
        КонецПопытки;
    
    КонецЕсли;

    // сделаем ее единицей измерения по умолчанию
    Если ПустоеЗначение(СпрНоменклатура.ЕдиницаПоУмолчанию) = 1 Тогда
        Если ПустоеЗначение(Базовая) = 1 Тогда
            ЕдиницаПоУмолчанию = НоваяБазоваяЕдиница.ТекущийЭлемент();
        Иначе
            ЕдиницаПоУмолчанию = Базовая;
        КонецЕсли;    
    КонецЕсли;
vnbsoft
Если ПустоеЗначение(СпрНоменклатура.ЕдиницаПоУмолчанию) = 1 Тогда
        Если ПустоеЗначение(Базовая) = 1 Тогда
            СпрНоменклатура.ЕдиницаПоУмолчанию = НоваяБазоваяЕдиница.ТекущийЭлемент();
        Иначе
            СпрНоменклатура.ЕдиницаПоУмолчанию = Базовая;
        КонецЕсли;    
КонецЕсли;
СпрНоменклатура.Записать();


Может так попробовать?

 i 

Для выделения кода нужно использовать тег, а не цвет
 
Flexy
Цитата(vnbsoft @ 18.10.12, 20:51) необходимо зарегистрироваться для просмотра ссылки
Если ПустоеЗначение(СпрНоменклатура.ЕдиницаПоУмолчанию) = 1 Тогда
        Если ПустоеЗначение(Базовая) = 1 Тогда
            СпрНоменклатура.ЕдиницаПоУмолчанию = НоваяБазоваяЕдиница.ТекущийЭлемент();
        Иначе
            СпрНоменклатура.ЕдиницаПоУмолчанию = Базовая;
        КонецЕсли;    
КонецЕсли;
СпрНоменклатура.Записать();


Может так попробовать?

Та есть там у меня в самом внизу в коде метод Записать(). Но все равно ни фига icon_cuss.gif
vnbsoft
Внимательнее смотрите код. Вы устанавливаете переменную ЕдиницаПоУмолчанию, а надо устанавливать реквизит справочника.
Flexy
Цитата(vnbsoft @ 18.10.12, 21:00) необходимо зарегистрироваться для просмотра ссылки
Внимательнее смотрите код. Вы устанавливаете переменную ЕдиницаПоУмолчанию, а надо устанавливать реквизит справочника.

Ткните носом пожалуйста icon_beer17.gif

Во йо-ма-йо заработался...

Банальная ошибка от переутомления... faceoff.gif

Спасибо, а то код скопипастил с формы спр номенклатуры, но не везде подправил.

Пора на отдых smile.gif) А то шото совсем тупить начал


З.Ы. Ув. Модераторы.ДУмаю темку можно удалить, т.к. она не несет особой смысловой нагрузки smile.gif
vnbsoft
Вы пишите "ЕдиницаПоУмолчанию = ...", а надо "СпрНоменклатура.ЕдиницаПоУмолчанию =..."
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.