7.7 обработка Импорта с Экзеля

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Z-bob, 26 дек 2013.

  1. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, проблема вот в чем, в коде есть строка "ТМЦ.Записать();" и 1ска почему то видит там ошибку.
    Можете подсказать в чем проблема.
    Вот код:
    Код:
    Процедура Сформировать()
    //Создаем ОЛЕ подключение к Excel
    Excel = СоздатьОбъект("Excel.Application"); 
    //Открываем файл
    Excel.Workbooks.Open("C:\осн средства");
    //Открываем активную книгу
    Книга = Excel.ActiveWorkbook;
    //Получааем количество строк в книге
    Строк = Excel.Cells.CurrentRegion.Rows.Count;
    //Перебираем строки и обрабатываем данные
    Для х = 7 По 7 Цикл
    
    ТМЦ=СоздатьОбъект("Справочник.ФиксированныеАктивы");
    
    //Для документа
    Док = СоздатьОбъект("Документ.ПриемкаПередачаФиксированныхАктивов");
    Док.Новый();
    Док.НоваяСтрока();								   
    Док.Наименование=СокрЛП(Строка(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)}: Код не уникальный!
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    ну так она же вам пишет, что ей код не нравится - пытаетесь записать новый элемент справочника с кодом как у существующего.
    проверяйте ваш excel на наличие дублей, или перед созданием тмц - ищите существующий с тем же кодом, если привязка по коду имеется.
  3. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Спасибо Вам нашел ошибку, действительно "ТМЦ.Код =Число(Excel.Cells(х, 4).Value);" создавал Код который был уже в списке..
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Нужно искать по коду в справочнике, прежде чем создавать новый...

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