Консультант по 1С в Крыму. +7(978)857-2035

Помогу с 1С!

программист 1С Симферополь

Позвоните:
+7(978)857-2035

экспорт и импорт в 1С из листа MS Excel

/ Просмотров: 30844

Экспорт данных из 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 Тогда

               Продолжить;

          КонецЕсли;

          //значение

          С.УстановитьАтрибут("Цена",ТекЦена);

          //запись

          Попытка

               С.Записать();

          Исключение

               Сообщить("Ошибка записи: "+ОписаниеОшибки(),"!");

          КонецПопытки;

     КонецЦикла;

     Предупреждение("Импортированы цены для "+Высота+" наименований товаров");

КонецПроцедуры

Комментариев: 3 RSS

Здраствуйте! У меня такая ситуация нужен импорт из Excel в 1С в справочник-номенклатура тоесть должны импортироваться назва товара, штрих-код, артыкул и цена. Возможно ли такое зделать?

Здравствуйте! А проводки таким образом в 1С можно загрузить?

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)