Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 11:51

Люди добрые!помогите загрузить из дбв справочник номенклатура!

Автор Лейсан, 22 ноя 2011, 16:29

0 Пользователей и 1 гость просматривают эту тему.

Лейсан

пишу обработку выгрузки из дбф в 1с номенклатуры!!вылетает с ошибкой.пишет что владелец заполнен не правильно.помогите пожалуйста исправить ошибку!вот код!
   
           ДБФ = Новый XBase;
      ДБФ.ОткрытьФайл(ПутьКФайлу);
      //Проверка на наличие записей
   Если ДБФ.КоличествоЗаписей() = 0 Тогда
      Сообщить("Файл данных пуст");
      ДБФ.ЗакрытьФайл();
      //Возврат   
   КонецЕсли;
    ДБФ.Первая();

Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
            //Номенклатура.Записать();
            Номенклатура.Наименование = СокрЛП(ДБФ.NAME);
            Номенклатура.Артикул = СокрЛП(ДБФ.ART);
                        
         //Если ЗначениеЗаполнено(ДБФ.ED) Тогда
            Ед = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СокрЛП(ДБФ.ED),истина,Номенклатура.Ссылка);
            Если Ед.Пустая() Тогда
               Ед = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
               Ед.Владелец = Номенклатура.Ссылка;
               Ед.Наименование = СокрЛП(ДБФ.ED);
               Ед.Коэффициент = 1;            
               Ед.Записать();
               Номенклатура.Записать();
            КонецЕсли;

DinamoYA

По логике пока Номенклатура не записана на неё не может быть ссылки.
У вас запись номенклатуры до присвовения в Ед - закомментирована
//Номенклатура.Записать();

Dethmontt

ДБФ = Новый XBase;
      ДБФ.ОткрытьФайл(ПутьКФайлу);
      //Проверка на наличие записей
   Если ДБФ.КоличествоЗаписей() = 0 Тогда
      Сообщить("Файл данных пуст");
      ДБФ.ЗакрытьФайл();
      //Возврат   
   КонецЕсли;
    ДБФ.Первая();

Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
            Номенклатура.Наименование = СокрЛП(ДБФ.NAME);
            Номенклатура.Артикул = СокрЛП(ДБФ.ART);
             Номенклатура.Записать();           
         //Если ЗначениеЗаполнено(ДБФ.ED) Тогда
            Ед = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СокрЛП(ДБФ.ED),истина,Номенклатура.Ссылка);
            Если Ед.Пустая() Тогда
               Ед = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
               Ед.Владелец = Номенклатура.Ссылка;
               Ед.Наименование = СокрЛП(ДБФ.ED);
               Ед.Коэффициент = 1;           
               Ед.Записать();
               Номенклатура.Записать();
            КонецЕсли;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Лейсан

 Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
            Номенклатура.Наименование = СокрЛП(ДБФ.NAME);
            Номенклатура.Артикул = СокрЛП(ДБФ.ART);
             Номенклатура.Записать();           
         
         //Ед = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СокрЛП(ДБФ.ED),истина,Номенклатура.Ссылка);
      Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
      


               Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
            
            Номенклатура.Наименование = СокрЛП(ДБФ.NAME);
            Номенклатура.Артикул = СокрЛП(ДБФ.ART);
             Номенклатура.Записать();            
               Номенклатура.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию(СокрЛП(ДБФ.VID),,);
               Номенклатура.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(СокрЛП(ДБФ.ED),истина,Номенклатура.Ссылка);
            Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
               Если  Номенклатура.БазоваяЕдиницаИзмерения.Пустая() Тогда
               Номенклатура.БазоваяЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();   
               Номенклатура.БазоваяЕдиницаИзмерения.Владелец = Номенклатура.Ссылка;
               Номенклатура.БазоваяЕдиницаИзмерения.Наименование = СокрЛП(ДБФ.ED);
               Номенклатура.БазоваяЕдиницаИзмерения.Коэффициент = 1;            
               Номенклатура.БазоваяЕдиницаИзмерения.Записать();
               Номенклатура.Записать();
                КонецЕсли;

Лейсан

ДБФ = Новый XBase;
      ДБФ.ОткрытьФайл(ПутьКФайлу);
      //Проверка на наличие записей
   Если ДБФ.КоличествоЗаписей() = 0 Тогда
      Сообщить("Файл данных пуст");
      ДБФ.ЗакрытьФайл();
      //Возврат   
   КонецЕсли;

Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
                    Номенклатура.Наименование = СокрЛП(ДБФ.NAME);
                  Номенклатура.Артикул = СокрЛП(ДБФ.ART);
                    Номенклатура.Записать();           
                   Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
               Номенклатура.Наименование = СокрЛП(ДБФ.NAME);
               Номенклатура.Артикул = СокрЛП(ДБФ.ART);
                Номенклатура.Записать();            
               Номенклатура.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию(СокрЛП(ДБФ.VID),,);
               Номенклатура.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(СокрЛП(ДБФ.ED),истина,Номенклатура.Ссылка);
               Если  Номенклатура.БазоваяЕдиницаИзмерения.Пустая() Тогда
               Номенклатура.БазоваяЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();   
               Номенклатура.БазоваяЕдиницаИзмерения.Владелец = Номенклатура.Ссылка;
               Номенклатура.БазоваяЕдиницаИзмерения.Наименование = СокрЛП(ДБФ.ED);
               Номенклатура.БазоваяЕдиницаИзмерения.Коэффициент = 1;            
               Номенклатура.БазоваяЕдиницаИзмерения.Записать();
               Номенклатура.Записать();
                КонецЕсли;
Делаю вот так.все равно ошибку бьет:что не заполнены поля единица измерения и вид!!Где сейчас я не права???

sergejK74

здесь наверное
Номенклатура.БазоваяЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();  
Лучше на несколько строк разбить. В одной создаем единицу, во второй - ... заполняем, затем записываем единицу, затем присваиваем номенклатуре.
Кнопочка Спасибо - слева!

Лейсан


sergejK74

               БазоваяЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();  
              БазоваяЕдиницаИзмерения.Владелец = Номенклатура.Ссылка;
              БазоваяЕдиницаИзмерения.Наименование = СокрЛП(ДБФ.ED);
              БазоваяЕдиницаИзмерения.Коэффициент = 1;            
              БазоваяЕдиницаИзмерения.Записать();
              Номенклатура.БазоваяЕдиницаИзмерения=БазоваяЕдиницаИзмерения.Ссылка;
              Номенклатура.Записать();
Кнопочка Спасибо - слева!

Лейсан


sergejK74

Внутрь условия заходит?              
Номенклатура.Записать(); лучше перенести после КонецЕсли; (иначе присвоится но не запишется)
Кнопочка Спасибо - слева!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск