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

  
Сообщений: 1

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

+8
Вот полный код [code=php]&НаКлиенте Перем ВсегоСтрок, ОбъектExcel, КнигиExcel, ТекстExcel, ЛистExcel; &НаКлиенте Процедура Загрузить(Команда) Если НЕ ОткрытьЛистExcel() Тогда Возврат; КонецЕсли; НачСтрока = 2; КонСтрока = 999999; Для х=НачСтрока По КонСтрока Цикл Если СокрЛП(ЛистExcel.Cells(х,1).Text) = Неопределено ИЛИ СокрЛП(ЛистExcel.Cells(х,1).Text) = "" Тогда Прервать; КонецЕсли; Артикул = СокрЛП(ЛистExcel.Cells(х,1).Text); ИмяН = СокрЛП(ЛистExcel.Cells(х,2).Text); ШК = СокрЛП(ЛистExcel.Cells(х,3).Text); Количество = Число(СтрЗаменить(СокрЛП(ЛистExcel.Cells(х,5).Text), ",","")); Цена = 0; Попытка Цена = Число(СтрЗаменить(СокрЛП(ЛистExcel.Cells(х,4).Text), "р.","")); Исключение КонецПопытки; Обработка(Артикул, ИмяН, ШК,Количество ,Цена); КонецЦикла; ЗакрытьExcel(); //Документ.Записать(); Сообщить("------------------------------------------------"); Сообщить("Загрузка завершена"); КонецПроцедуры &НаСервере Процедура Обработка(Артикул, ИмяН, ШК,Количество ,Цена) Номенклатура = ПоискНоменклатуры(Артикул); Если Артикул <> "" И Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда Номенклатура = СозданиеНовойНоменклатуры(Артикул,ИмяН); КонецЕсли; КонецПроцедуры &НаСервере Функция СозданиеНовойНоменклатуры(Артикул,ИмяН) Номенклатура = Справочники.Номенклатура.СоздатьЭлемент(); Номенклатура.Наименование = ИмяН; Номенклатура.НаименованиеПолное = ИмяН; Номенклатура.Артикул = Артикул; Номенклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар").Ссылка; //Номенклатура.ВестиУчетПоСериям = ИСТИНА; //Номенклатура.ВестиУчетПоХарактеристикам = ИСТИНА; Номенклатура.ЕдиницаИзмерения = Справочники.БазовыеЕдиницыИзмерения.НайтиПоКоду("796"); Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; Номенклатура.Записать(); //х_ОдеждаИОбувь.ЗаполнитьХарактеристики(Номенклатура.Ссылка); //СоздатьХарактеристику(Номенклатура, ЛистExcel, х ); //ЗаполнитьШтрихкод(Номенклатура, ЛистExcel, х); Номенклатура.Записать(); Возврат Номенклатура; КонецФункции &НаСервере Функция ПоискНоменклатуры(Артикул); Номенклатура = Справочники.Номенклатура.ПустаяСсылка(); Если Артикул <> "" ИЛИ Артикул = Неопределено Тогда АЗапрос = Новый Запрос; АЗапрос.УстановитьПараметр("Артикул", Артикул); Текст = "ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.Код, | Номенклатура.Наименование |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Артикул = &Артикул"; АЗапрос.Текст = Текст; Результат = АЗапрос.Выполнить(); Выборка = Результат.Выбрать(); мес = "Элемент "+ Артикул; Если Выборка.Следующий() Тогда Номенклатура = Выборка.Ссылка.ПолучитьОбъект(); мес = мес +" - найден"; Иначе мес = мес +" - отсутствует"; КонецЕсли; Если Выборка.Следующий() Тогда Сообщить("Не удалось определить номенклатуру, под названием -"+Артикул+"-, в справочнике Номенклатур, более 1-ой записи, исправте артикул на уникальный."); КонецЕсли; Сообщить(мес); КонецЕсли; Возврат Номенклатура; КонецФункции &НаКлиенте Функция ОткрытьЛистExcel() Сообщить("Запуск Excel"); Результат = Ложь; Если ПустаяСтрока(ФайлЗагрузки) Тогда Сообщить("Не задан файл загрузки!!!",3); Возврат Результат; КонецЕсли; Попытка Если ОбъектExcel=Неопределено Тогда ОбъектExcel = Новый COMОбъект("Excel.Application"); КонецЕсли; Исключение Сообщить("Невозможно загрузить MS Excel !!!"+ Символы.ПС + ОписаниеОшибки()); Возврат Результат; КонецПопытки; КнигиExcel = ОбъектExcel.WorkBooks; Попытка ТекстExcel = КнигиExcel.Open(ФайлЗагрузки); Исключение Сообщить("Невозможно открыть файл " + ФайлЗагрузки + " !!!" + Символы.ПС + ОписаниеОшибки()); Возврат Результат; КонецПопытки; НомерСтраницы = 1; ЛистExcel = ТекстExcel.Sheets(НомерСтраницы); //ВсегоСтрок = ЛистExcel.Cells(1,1).SpecialCells(11).Row; //ВсегоКолонок = ЛистExcel.Cells(1,1).SpecialCells(11).Column; Возврат Истина; КонецФункции &НаКлиенте Процедура ЗакрытьExcel() Если НЕ ОбъектExcel=Неопределено Тогда ОбъектExcel.displayAlerts=0; ОбъектExcel.Application.Quit(); КнигиExcel = Неопределено; ТекстExcel = Неопределено; ЛистExcel = Неопределено; ОбъектExcel = Неопределено; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ВыборФайла(Команда) ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ВыборФайла.Заголовок = "Выберите файл загрузки Excel:"; ВыборФайла.Фильтр = "Документ Excel (*.xls)|*.xls"; Если ВыборФайла.Выбрать() Тогда ФайлЗагрузки = ВыборФайла.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры [/code]
В начало страницы 
|
Перейти на форум: