экспорт и импорт в 1С из листа MS Excel
Экспорт данных из 1С на лист MS Excel
//функция создаёт новую книгу в MS Excel и выгружает табличную часть заданного документа
Процедура гМногострочка_Экспортировать(Док) Экспорт
//документ
Д=СоздатьОбъект("Документ");
Д.НайтиДокумент(Док);
//приложение
Оле=СоздатьОбъект("Excel.Application");
Если ФлагВидимость=1 Тогда
Оле.Visible=1;
КонецЕсли;
Книга=Оле.Workbooks().Add();
Книга.Windows(1).Caption=Д.ПредставлениеВида()+" "+СокрЛП(Д.НомерДок);
Лист=Книга.Activesheet;
//шапка
Колонка=0;
Для i=1 По Метаданные.Документ(Д.Вид()).РеквизитТабличнойЧасти() Цикл
Ж=Метаданные.Документ(Д.Вид()).РеквизитТабличнойЧасти(i);
//колонка
Колонка=Колонка+1;
Ячейка=Лист.Cells(1,Колонка);
//текст
Ячейка.Value=Ж.Идентификатор;
//форматирование
Ячейка.Font.Bold=1;
Если Ж.Тип="Число" Тогда
Попытка
Лист.Columns(Колонка).NumberFormat="# ##0.00";
Исключение
Лист.Columns(Колонка).NumberFormat="# ##0,00";
КонецПопытки;
КонецЕсли;
КонецЦикла;
//строки
Д.ВыбратьСтроки();
Пока Д.ПолучитьСтроку()=1 Цикл
Лист.Range("A"+Число(Д.НомерСтроки+1)).Select();
Колонка=0;
//многострочка
Для i=1 По Метаданные.Документ(Д.Вид()).РеквизитТабличнойЧасти() Цикл
Ж=Метаданные.Документ(Д.Вид()).РеквизитТабличнойЧасти(i);
Колонка=Колонка+1;
//значение
Значение=Д.ПолучитьАтрибут(Ж.Идентификатор);
Лист.Cells(Д.НомерСтроки+1,Колонка).Value=СокрЛП(Значение);
КонецЦикла;
КонецЦикла;
//авто подбор ширины
Лист.Cells.EntireColumn.AutoFit();
//закрепление области
Лист.Range("A2").Select();
Оле.ActiveWindow.FreezePanes=1;
Оле.Visible=1;
КонецПроцедуры
Импорт данных в 1С из MS Excel
//подключение к MS Excel через OLEФункция гКнига_Открыть(Файл,Каталог,Область,Высота,Ширина) Экспорт
Оле=СоздатьОбъект("Excel.Application");
//поиск в открытом приложении Для i=1 По Оле.Workbooks.Count Цикл
ТекКнига=Оле.Workbooks(i);
Если ТекКнига.Name=Файл Тогда
Книга=ТекКнига;
Прервать;
КонецЕсли;
КонецЦикла;
//открытие файла Если ПустоеЗначение(Книга)=1 Тогда
Книга=Оле.Workbooks.Open(Каталог+Файл);
КонецЕсли;
Оле.Visible=1;
//выбор листа Если Книга.Worksheets.Count=1 Тогда
НомерЛиста=1;
Иначе
Список=СоздатьОбъект("СписокЗначений");
Для i=1 По Книга.Worksheets.Count Цикл
Список.ДобавитьЗначение(i,Книга.Worksheets(i).Name);
КонецЦикла;
Если Список.ВыбратьЗначение(НомерЛиста,"Выбор листа - "+Книга.Name)=0 Тогда
Возврат(0);
КонецЕсли;
КонецЕсли;
//лист Лист=Книга.Worksheets(НомерЛиста);
Лист.Activate();
//данные Область=Книга.Worksheets(НомерЛиста).Cells.CurrentRegion;
Высота=Область.Rows.Count;
Ширина=Область.Columns.Count;
// Возврат(1);
КонецФункции
//импорт цен из файла MS Excel
//поиск элемента справочника проводится по полному коду
Процедура ИмпортироватьЦеныТовара()
Перем Файл,Каталог,Область,Высота,Ширина;
//открытие
Каталог=КаталогПользователя();
Файл="";
Если ФС.ВыбратьФайл(0,Файл,Каталог,"Открыть файл","Файлы MS Excel|*.xls")=0 Тогда
Возврат;
ИначеЕсли гКнига_Открыть(Файл,Каталог,Область,Высота,Ширина)=0 Тогда
Возврат;
КонецЕсли;
//справочник
С=СоздатьОбъект("Справочник.Товары");
С.ИспользоватьРодителя("");
С.ИспользоватьДату(РабочаяДата(),1);
//данные
Для Стр=2 По Высота Цикл
Состояние("Прогресс: "+Цел(Стр/Высота*100)+"%");
//код
ТекКод=СокрЛП(Область.Cells(Стр,1).Text);
Если С.НайтиПоКоду(ТекКод,2)=0 Тогда
Сообщить("Не найден товар по коду: "+ТекКод,"!");
Продолжить;
КонецЕсли;
//цена
ТекЦена=Число(Область.Cells(Стр,2).Text);
Если ТекЦена=0 Тогда
Продолжить;
КонецЕсли;
//значение
С.УстановитьАтрибут("Цена",ТекЦена);
//запись
Попытка
С.Записать();
Исключение
Сообщить("Ошибка записи: "+ОписаниеОшибки(),"!");
КонецПопытки;
КонецЦикла;
Предупреждение("Импортированы цены для "+Высота+" наименований товаров");
КонецПроцедуры
2010-05-31 в 20:44:31
Здраствуйте! У меня такая ситуация нужен импорт из Excel в 1С в справочник-номенклатура тоесть должны импортироваться назва товара, штрих-код, артыкул и цена. Возможно ли такое зделать?
2011-01-14 в 17:05:15
Здравствуйте! А проводки таким образом в 1С можно загрузить?
2011-02-08 в 15:52:56
Вы гении!!! Уже второй день ищу, просто код.
