Modber Сообщество
профессионалов по 1С

Перенос справочника из EXEL

  
Сообщений: 1

0
Расскажите, пожалуйста, по пунктам, как перенести данные из EXEL в справочник 1С 8.2. (Управление Торговлей). Нужно ДОПИСАТЬ к уже имеющемуся справочнику. В екселе списком хранятся названия товаров. Правда на разных листах, но можно все скопировать на один — это не проблема. Гораздо важнее сохранить группы: они указаны другим, соседним столбцом. Групп не много, в 1С такие уже созданы. А самих товаров очень много. Экспериментировать боюсь — база 1С рабочая, если что-то поломаю,… в общем у меня одна попытка:)) Заранее спасибо.
МедальГрамота
Сообщений: 541

+8
Вот полный код

Код 1C:
  1. &НаКлиенте
  2. Перем ВсегоСтрок, ОбъектExcel, КнигиExcel, ТекстExcel, ЛистExcel;
  3.  
  4.  
  5. &НаКлиенте
  6. Процедура Загрузить(Команда)
  7.  
  8. Если НЕ ОткрытьЛистExcel() Тогда
    Возврат;КонецЕсли;
     
     
     
    НачСтрока = 2;
  9. КонСтрока = 999999;
  10.  
  11. Для х=НачСтрока По КонСтрока Цикл
  12. Если СокрЛП(ЛистExcel.Cells(х,1).Text) = Неопределено ИЛИ СокрЛП(ЛистExcel.Cells(х,1).Text) = "" Тогда
    Прервать;КонецЕсли;
     
     
    Артикул = СокрЛП(ЛистExcel.Cells(х,1).Text);
  13. ИмяН = СокрЛП(ЛистExcel.Cells(х,2).Text);
  14. ШК = СокрЛП(ЛистExcel.Cells(х,3).Text);
  15.  
  16.  
  17. Количество = Число(СтрЗаменить(СокрЛП(ЛистExcel.Cells(х,5).Text), ",",""));
  18. Цена = 0;
  19. Попытка
    Цена = Число(СтрЗаменить(СокрЛП(ЛистExcel.Cells(х,4).Text), "р.",""));
  20. Исключение
    КонецПопытки;
     
    Обработка(Артикул, ИмяН, ШК,Количество ,Цена);
  21. КонецЦикла;
     
    ЗакрытьExcel();
  22. //Документ.Записать();
  23. Сообщить("------------------------------------------------");
  24. Сообщить("Загрузка завершена");
  25. КонецПроцедуры
     
    &
    НаСервере
  26. Процедура Обработка(Артикул, ИмяН, ШК,Количество ,Цена)
  27. Номенклатура = ПоискНоменклатуры(Артикул);
  28. Если Артикул <> "" И Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда
    Номенклатура = СозданиеНовойНоменклатуры(Артикул,ИмяН);
  29. КонецЕсли;
     
    КонецПроцедуры
     
    &
    НаСервере
  30. Функция СозданиеНовойНоменклатуры(Артикул,ИмяН)
  31. Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
  32.  
  33.  
  34. Номенклатура.Наименование = ИмяН;
  35. Номенклатура.НаименованиеПолное = ИмяН;
  36. Номенклатура.Артикул = Артикул;
  37.  
  38. Номенклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар").Ссылка;
  39. //Номенклатура.ВестиУчетПоСериям = ИСТИНА;
  40. //Номенклатура.ВестиУчетПоХарактеристикам = ИСТИНА;
  41.  
  42. Номенклатура.ЕдиницаИзмерения = Справочники.БазовыеЕдиницыИзмерения.НайтиПоКоду("796");
  43. Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
  44.  
  45. Номенклатура.Записать();
  46.  
  47. //х_ОдеждаИОбувь.ЗаполнитьХарактеристики(Номенклатура.Ссылка);
  48. //СоздатьХарактеристику(Номенклатура, ЛистExcel, х );
  49.  
  50. //ЗаполнитьШтрихкод(Номенклатура, ЛистExcel, х);
  51.  
  52. Номенклатура.Записать();
  53.  
  54. Возврат Номенклатура;
  55. КонецФункции
     
    &
    НаСервере
  56. Функция ПоискНоменклатуры(Артикул);
  57. Номенклатура = Справочники.Номенклатура.ПустаяСсылка();
  58.  
  59. Если Артикул <> "" ИЛИ Артикул = Неопределено Тогда
     
    АЗапрос = Новый Запрос;
  60. АЗапрос.УстановитьПараметр("Артикул", Артикул);
  61.  
  62. Текст = "ВЫБРАТЬ
  63. | Номенклатура.Ссылка,
  64. | Номенклатура.Код,
  65. | Номенклатура.Наименование
  66. |ИЗ
  67. | Справочник.Номенклатура КАК Номенклатура
  68. |ГДЕ
  69. | Номенклатура.Артикул = &Артикул";
  70.  
  71. АЗапрос.Текст = Текст;
  72.  
  73. Результат = АЗапрос.Выполнить();
  74. Выборка = Результат.Выбрать();
  75.  
  76. мес = "Элемент "+ Артикул;
  77. Если Выборка.Следующий() Тогда
    Номенклатура = Выборка.Ссылка.ПолучитьОбъект();
  78. мес = мес +" — найден";
  79. Иначе
    мес = мес +" — отсутствует";
  80. КонецЕсли;
     
    Если Выборка.Следующий() ТогдаСообщить("Не удалось определить номенклатуру, под названием -"+Артикул+"-, в справочнике Номенклатур, более 1-ой записи, исправте артикул на уникальный.");
  81. КонецЕсли;
    Сообщить(мес);
  82. КонецЕсли;
     
    Возврат Номенклатура;
  83. КонецФункции
     
     
     
    &
    НаКлиенте
  84. Функция ОткрытьЛистExcel()
  85. Сообщить("Запуск Excel");
  86. Результат = Ложь;
  87. Если ПустаяСтрока(ФайлЗагрузки) Тогда
    Сообщить("Не задан файл загрузки!!!",3);
  88. Возврат Результат;
  89. КонецЕсли;
    ПопыткаЕсли ОбъектExcel=Неопределено ТогдаОбъектExcel = Новый COMОбъект("Excel.Application");
  90. КонецЕсли;
    ИсключениеСообщить("Невозможно загрузить MS Excel !!!"+ Символы.ПС + ОписаниеОшибки());
  91. Возврат Результат;
  92. КонецПопытки;
    КнигиExcel = ОбъектExcel.WorkBooks;
  93. Попытка
    ТекстExcel = КнигиExcel.Open(ФайлЗагрузки);
  94. Исключение
    Сообщить("Невозможно открыть файл " + ФайлЗагрузки + " !!!" + Символы.ПС + ОписаниеОшибки());
  95. Возврат Результат;
  96. КонецПопытки;
    НомерСтраницы = 1;
  97. ЛистExcel = ТекстExcel.Sheets(НомерСтраницы);
  98. //ВсегоСтрок = ЛистExcel.Cells(1,1).SpecialCells(11).Row;
  99. //ВсегоКолонок = ЛистExcel.Cells(1,1).SpecialCells(11).Column;
  100.  
  101. Возврат Истина;
  102. КонецФункции
     
    &
    НаКлиенте
  103. Процедура ЗакрытьExcel()
  104. Если НЕ ОбъектExcel=Неопределено Тогда
    ОбъектExcel.displayAlerts=0;
  105. ОбъектExcel.Application.Quit();
  106. КнигиExcel = Неопределено;
  107. ТекстExcel = Неопределено;
  108. ЛистExcel = Неопределено;
  109. ОбъектExcel = Неопределено;
  110. КонецЕсли;
    КонецПроцедуры
     
    &
    НаКлиенте
  111. Процедура ВыборФайла(Команда)
  112. ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
  113. ВыборФайла.Заголовок = "Выберите файл загрузки Excel:";
  114. ВыборФайла.Фильтр = "Документ Excel (*.xls)|*.xls";
  115. Если ВыборФайла.Выбрать() Тогда
    ФайлЗагрузки = ВыборФайла.ПолноеИмяФайла;
  116. КонецЕсли;
     
    КонецПроцедуры
В начало страницы 
|
Перейти на форум: