Контакты:

(812)922-38-50
(812) 987-91-97

Санкт-Петербург, 
Уткин пр., д. 13,
 к. 1, оф. 8,

centervibor@gmail.com

 

загрузка карты...
   

Оплатить банковской картой

Загрузка Excel в 1С

Общая информация о загрузке в 


Взаимодействие и наиболее распространенного офисного табличного процессора Microsoft Excel является очень часто применяемым процессом, который необходимо автоматизировать программистам . Данный процесс позволяет не тратить время на ручную установку цен в 1С для множества, бывает тысяч, позиций номенклатуры 1С.

*************************************************************

Загрузка прайс листа поставщика в 1С


В этой статье описан подробненько код и последовательность действий при реализации загрузки прайс листа из Excel в Управление торговлей 11.1. Стоит признаться, что оригинальный загрузчик из Excel в Управление торговлей 11.1, к сожалению не рабочий, он мной так и не был толком доработан. Но некоторые преимущества встроенный загрузчик 1С все таки имеет, например выгрузку в офисное приложение Excel . Для загрузки было принято решение создать в 1С отдельный документ, который будет совершать запись в регистр "Цены поставщиков". На рисунке , представленном ниже, показаны какие реквизиты табличной части были созданы, исходя из задания заказчика при доработке конфигурации 1С . 

 ****************************************************************

Документ загрузки из Excel в 1С в конфигураторе (реквизиты табличной части)


Загрузка из Excel

Следующий код размещаем в модуле формы документа. При помощи данной процедуры производится загрузка данных из документа Excel в форму документа 1С. Стоить заметить, что в данном коде реализовано автоматическая генерация штрих кода в 1С. Процедуру автогенерации штрихкода можно посмотреть пройдя по ссылке, либо просто часть кода, относящуюся к автогенерации штрихкода можно удалить.

****************************************************************

&НаКлиенте
Процедура ЗагрузитьОписьИзФайла(Команда)
          ПодключитьРасширениеРаботыСФайлами();    
    Режим = РежимДиалогаВыбораФайла.Открытие; 
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); 
    ДиалогОткрытияФайла.ПолноеИмяФайла = ""; 
    Фильтр = "Таблица(*.xlsx)|*.xlsx"; 
    ДиалогОткрытияФайла.Фильтр                = Фильтр; 
    ДиалогОткрытияФайла.МножественныйВыбор    = Ложь; 
    ДиалогОткрытияФайла.Заголовок            = "Выберите файл c описью вложения"; 
    
    Если ДиалогОткрытияФайла.Выбрать() Тогда 
        ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
    Иначе
        Возврат;
    КонецЕсли;

    Попытка       
      Excel     = Новый COMОбъект("Excel.Application");       
      WB         = Excel.Workbooks.Open(ПутьКФайлу);       
      WS         = WB.Worksheets(1); //указываем номер листа - 1       
      arr     = WS.UsedRange.Value;  //передаём таблицу в переменную       
      WB.Close(0); 
Исключение       
      Предупреждение("Внимание! Файл не открыт."+Символы.ПС+"Попробуйте открыть и пересохранить данный файл программой Excel.");       
Возврат;      
КонецПопытки; //Узнаём данные выходные данные об листе ексель       
МассивКолонок = arr.Выгрузить(); //Выгружаем таблицу в массив      
ВсегоСтрок   = (МассивКолонок.Получить(0).Количество())-1;      
Для СтрокаТП = 1 По всегоСтрок Цикл //Работаем со строкой       
      НовСтрока = Объект.ОписьВложения.Добавить();
      
      НовСтрока.Наименование =           НайтиСоздатьНоменклатуру(СокрЛП(МассивКолонок.Получить(0).Получить(СтрокаТП)));
      НовСтрока.НаименованиеПоставщика = СокрЛП(МассивКолонок.Получить(1).Получить(СтрокаТП));
      НовСтрока.Характеристика =         СокрЛП(МассивКолонок.Получить(2).Получить(СтрокаТП));
      НовСтрока.КодТовара =              СокрЛП(МассивКолонок.Получить(3).Получить(СтрокаТП));
      НовСтрока.Артикул =                СокрЛП(МассивКолонок.Получить(4).Получить(СтрокаТП));
      НовСтрока.Качество =               СокрЛП(МассивКолонок.Получить(5).Получить(СтрокаТП));
      НовСтрока.Цена =                   СокрЛП(МассивКолонок.Получить(6).Получить(СтрокаТП));       
      НовСтрока.Совместимость =          СокрЛП(МассивКолонок.Получить(7).Получить(СтрокаТП));
      НовСтрока.ВидНоменклатуры =        СокрЛП(МассивКолонок.Получить(8).Получить(СтрокаТП));
      НовСтрока.Описание =               СокрЛП(МассивКолонок.Получить(9).Получить(СтрокаТП));
КонецЦикла;     
    Excel.Quit();   
КонецПроцедуры //ЗагрузитьОписьИзФайла(Команда) 
***************************************************************

После того как загрузили данные в форму документа 1С необходимо произвести провидение документа, для записи данных в регистр. Данный код размещаем в модуль объекта документа.

**********************************************************
Процедура ОбработкаПроведения(Отказ, Режим)
    Движения.ЦеныНоменклатурыПоставщиков.Записывать = Истина; 
    Движения.ЦеныНоменклатурыПоставщиков.Очистить();
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ЗагрузкаЦенНоменклатурыОписьВложения.Наименование,
        |   ЗагрузкаЦенНоменклатурыОписьВложения.Характеристика,
        |   ЗагрузкаЦенНоменклатурыОписьВложения.Цена,
        |   ЗагрузкаЦенНоменклатуры.ТипЦены,
        |   ЗагрузкаЦенНоменклатурыОписьВложения.Артикул
        |ИЗ
        |   Документ.ЗагрузкаЦенНоменклатуры.ОписьВложения КАК ЗагрузкаЦенНоменклатурыОписьВложения
        |       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗагрузкаЦенНоменклатуры КАК ЗагрузкаЦенНоменклатуры
        |       ПО ЗагрузкаЦенНоменклатурыОписьВложения.Ссылка = ЗагрузкаЦенНоменклатуры.Ссылка
        |ГДЕ
        |   ЗагрузкаЦенНоменклатуры.Ссылка = &Ссылка";

    Запрос.УстановитьПараметр("Ссылка", Ссылка);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    НовыйШтрихкод = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
    
    
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
    
Движение = Движения.ЦеныНоменклатурыПоставщиков.Добавить();
        Движение.Период = Дата;
        Если ВыборкаДетальныеЗаписи.Наименование <> 0 Тогда
        Движение.Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.Наименование);   
        КонецЕсли ;
        Если ВыборкаДетальныеЗаписи.Характеристика <> 0 Тогда
        Движение.Характеристика = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.Характеристика);
        КонецЕсли;
        Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("RUB");

Движение.Цена = ВыборкаДетальныеЗаписи.Цена;
Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("RUB"); 
        НовыйШтрихкод.Номенклатура  =  ВыборкаДетальныеЗаписи.Наименование; 
        НовыйШтрихкод.Характеристика  =  ВыборкаДетальныеЗаписи.Характеристика;
        НовыйШтрихкод.Штрихкод      = СформироватьШтрихкодEAN13(); 
        НовыйШтрихкод.Записать();
        
    КонецЦикла;
    КонецПроцедуры
************************************************
Изображение самого документа 1С в пользовательском режиме в который производится загрузка из документа Excel

Документ загрузки прас листа

Данный код был написан для последующего автоматического создания новой позиции номенклатуры в справочнике "Номенклатура" 1С со всеми характеристиками новой номенклатуры. Именно поэтому так много реквизитов табличной части. Эти данные будут передаваться в доработанный справочник "Номенклатура".
1С -самое используемое программное обеспечение для автоматизации бизнеса в России.

*******************************************************

Тэги страницы: загрузка ,  1С  ,  загрузку
Рейтинг.Сопка.Net Яндекс.Метрика