Имя: Пароль:
1C
1C 7.7
v7: обработка Импорта с Экзеля
0 ZADR
 
26.12.13
10:53
Здравствуйте, проблема вот в чем, в коде есть строка "ТМЦ.Записать();" и 1ска почему то видит там ошибку. Если убираю эту строку то создается документ только в "ПриемкаПередачаФиксированныхАктивов", но мне надо что бы и в "ФиксированныеАктивы" тоже создавался.
Можете подсказать в чем проблема.
Вот код:
Процедура Сформировать()
//Создаем ОЛЕ подключение к Excel
  Excel = СоздатьОбъект("Excel.Application");
//Открываем файл
  Excel.Workbooks.Open("C:\средства");
//Открываем активную книгу
  Книга = Excel.ActiveWorkbook;
//Получааем количество строк в книге
  Строк = Excel.Cells.CurrentRegion.Rows.Count;
//Перебираем строки и обрабатываем данные
Для х = 7 По 50 Цикл

  ТМЦ=СоздатьОбъект("Справочник.ФиксированныеАктивы");

//Для документа
   Док = СоздатьОбъект("Документ.ПриемкаПередачаФиксированныхАктивов");
    Док.Новый();
    Док.НоваяСтрока();                                  
    Док.Наименование=СокрЛП(Строка(Excel.Cells(х, 2).Value));

//!1
  ТМЦ.Новый();
  ТМЦ.Наименование=Док.Наименование;
  ТМЦ.ИспользоватьДату(ТекущаяДата());
  ТМЦ.СпособНачисленияАмортизации  = глЗначениеПоУмолчанию("ОсновнойМетодНачисленияАмортизации");
  ТМЦ.Организация = глОрганизация();
  ТМЦ.ГруппаФА = Перечисление.ГруппыФА.Прочие; //Прочие  ПрограммноеОбеспечение МашиныИОборудование
  ТМЦ.ДатаВвода= ТекущаяДата();
  ТМЦ.НачислятьАмортизацию = 1;
  ТМЦ.СобственныйФА        = 1;
  ТМЦ.ОбъектНалоговогоУчета = 1;

  ГруппаНалоговогоУчета123 = СоздатьОбъект("Справочник.ГруппыНалоговогоУчета");
  ГруппаНалоговогоУчета123.НайтиПоНаименованию("Фиксированные активы не включенные в другие группы",0);
  ТМЦ.ГруппаНалоговогоУчета=ГруппаНалоговогоУчета123.ТекущийЭлемент();

  ТМЦ.СпособНачисленияАмортизации = Перечисление.СпособыНачисленияАмортизацииФА.Линейный;
  ТМЦ.Комплектность        = Перечисление.ТипыКомплектности.ОтдельныйОбъект;
  ТМЦ.ВидАктива     = Перечисление.ВидыФиксированныхАктивов.ОсновноеСредство;
  ТМЦ.УстановитьАтрибут("Состояние", Перечисление.СостоянияФА.В_Запасе);
  ТМЦ.НачальнаяСтоимость=Число(Excel.Cells(х, 5).Value);
     ТМЦ.ЛиквидационнаяСтоимость=Число(Excel.Cells(х, 10).Value);
  ТМЦ.Счет = СчетПоКоду("241.");  //2410 - 241. 2730 - 273 .
  ТМЦ.СчетЗатрат = СчетПоКоду("71.");
  ТМЦ.СпособПоступления = Перечисление.СпособыПоступленияФА.Иной;
  ТМЦ.Код =Число(Excel.Cells(х, 4).Value);
  СпрВидов = СоздатьОбъект("Справочник.ВидыНоменклатуры");
  Если СпрВидов.НайтиПоРеквизиту("ТипНоменклатуры", Перечисление.ТипыНоменклатуры.ФиксированныйАктив, 1) = 1 Тогда
   ТМЦ.ВидНоменклатуры = СпрВидов.ТекущийЭлемент();
  Иначе
   СпрВидов.Новый();
   СпрВидов.Наименование = "Фиксированный актив";
   СпрВидов.Типноменклатуры = Перечисление.ТипыНоменклатуры.ФиксированныйАктив;
   СпрВидов.СчетДоходов = СчетПоКоду("621");
   СпрВидов.СчетСебестоимости = СчетПоКоду("741");
   СпрВидов.Записать();                      
   ТМЦ.ВидНоменклатуры = СпрВидов.ТекущийЭлемент();
  

    КонецЕсли;
  ТМЦ.Записать();

                                                        
//!2
Док.НачальнаяСтоимость=Число(Excel.Cells(х, 5).Value);
Док.Код=Число(Excel.Cells(х, 4).Value);
    Док.ДатаВвода= ТекущаяДата();
    Док.ГруппаФА = Перечисление.ГруппыФА.Прочие;   //Прочие  ПрограммноеОбеспечение  МашиныИОборудование    
Док.СпособНачисленияАмортизации = Перечисление.СпособыНачисленияАмортизацииФА.Линейный;
Док.НачислятьАмортизацию    = 1;
Док.СобственныйФА            = 1;
Док.ТМЦ                         = ТМЦ.ТекущийЭлемент();
Док.ВидОперацииНадОбъектом   = Перечисление.ТипыОперацийПриемкиПередачиФА.ВводНовогоОбъекта;
ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.Аренда;
БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
БухИтоги.ИспользоватьПланСчетов(ВыбранныйПланСчетов());
    ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.ВводОбъектаПослеМонтажаСтроительства;
Док.Счет = СчетПоКоду("241.");//2410 - 241. 2730 - 273 .
Док.СчетЗатрат = СчетПоКоду("71.");
Док.ВидАктива = Перечисление.ВидыФиксированныхАктивов.ОсновноеСредство;            
Док.СпособПоступления = Перечисление.СпособыПоступленияФА.Иной;
Док.Состояние = Перечисление.СостоянияФА.В_Запасе;
  
     ЕдиницаИзмерения = глЗначениеПоУмолчанию("ОсновнаяЕдиницаИзмерения");
  Валюта = глЗначениеПоУмолчанию("Основнаявалюта");;
  СтавкаНДС = глЗначениеПоУмолчанию("ОсновнаяСтавкаНДС");
  КоэффициентПересчета = 1;  
Спр=СоздатьОбъект("Справочник.Организации");
    Спр.НайтиПоКоду("00000002",0);
Док.Организация = Спр.ТекущийЭлемент();


ВидНом = СоздатьОбъект("Справочник.ВидыНоменклатуры");
ВидНом.НайтиПоКоду("00000006",0);
Док.ВидНоменклатуры= ВидНом.ТекущийЭлемент();

ГруппаНалУчета = СоздатьОбъект("Справочник.ГруппыНалоговогоУчета");
ГруппаНалУчета.НайтиПоКоду("II",0);
Док.ГруппаНалоговогоУчета=ГруппаНалУчета.ТекущийЭлемент();
  
Док.Записать();
  
КонецЦикла;
  

  Excel.Workbooks.Close();
КонецПроцедуры  

Ошибка:
ТМЦ.Записать();
{D:\ЗАГРУЗКАИМПОРТ.ERT(68)}: Код не уникальный!
1 oslokot
 
26.12.13
11:02
о, прекрасный говонокод!

Тебе же говорят, код не уникальный
и ты его тут присваиваешь, обрати внимание:
ТМЦ.Код =Число(Excel.Cells(х, 4).Value);
Ищи в экселе дубли кодов, наверняка они там есть
2 ЧеловекДуши
 
26.12.13
11:24
(1) Не в екселе надо искать 6)
(0)Ищи в справочнике :)
А по сути, код всегда должен присваиваться автоматически :)
3 oslokot
 
26.12.13
11:29
(2) дык это понятно, пусть в экселе сначала уберет дубли )
Независимо от того, куда вы едете — это в гору и против ветра!