Каталог решений - Загрузка данных (справочник, документ) через буфер обмена

Загрузка данных (справочник, документ) через буфер обмена

Загрузка данных (справочник, документ) через буфер обмена

В наличии

Первая в мире однокнопочная обработка, мечта юзера!

Расскажу, как я кардинально упростил загрузку разнообразных данных из Экселя…

Категория:

Описание

Раньше как было? Берем обработку по загрузке, достаем из почты экселевский файл, кидаем его где-то на диск, указываем путь к файлу в обработке, нач.-кон. строки (файлы то разные бывают, где начало где конец автоматически не всегда определишь), номера колонок с данными, загружаешь… Короче, возня.

А с классом БуферОбмена из 1С++ все сильно упрощается!

Открываем экселевский файл, копируем в буфер нужные колонки, в обработке жмем «Сформировать», проверяем в ТЗ корректность загрузки, и готово!

Шаблон обработки у меня лежит в шаблонах текста, под нужный документ или справочник все дописывается быстро

 

 

// ===============================
Процедура УстановитьАтрибуты(Спр,ТЗ)
    Для Инд=2 По ТЗ.КоличествоКолонок() Цикл
        Имя=ТЗ.ПолучитьПараметрыКолонки(Инд);
        Зн=ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки,Инд);
        тСообщ="";
        Если ПустоеЗначение(Зн)=0 Тогда
            Попытка
                Спр.УстановитьАтрибут(Имя,Зн);    
                тСообщ=тСообщ+СимволТабуляции+Имя+" = "+Зн;
            Исключение КонецПопытки;
        КонецЕсли;
    КонецЦикла;
    Сообщить(""+Спр+тСообщ);
КонецПроцедуры    //УстановитьАтрибуты

// ===============================
Функция ВернутьЧисло(Стр,Ном)
    Возврат Число(СтрЗаменить(СокрЛП(СтрПолучитьСтроку(Стр,Ном)),",","."));   
КонецФункции //ВернутьЧисло        

// ===============================
Функция ВернутьСтроку(Стр,Ном)
    Возврат СокрЛП(СтрПолучитьСтроку(Стр,Ном));   
КонецФункции //ВернутьЧисло        

//*******************************************
Процедура Сформировать()
    Буф=СоздатьОбъект("БуферОбмена");
    БуферОбмена=Буф.Получить();
    
    Спр=СоздатьОбъект("Справочник.Товары");
    
    ТЗ =СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("Товар","Справочник.Товары");
    ТЗ.НоваяКолонка("Вес","Число",10,3);
    
    Для Сч=1 По СтрКоличествоСтрок(БуферОбмена) Цикл
        Стр = СтрЗаменить(СтрПолучитьСтроку(БуферОбмена,Сч),СимволТабуляции,РазделительСтрок);
        Код = СокрЛП(СтрПолучитьСтроку(Стр,1));
       
        Если Спр.НайтиПоРеквизиту("КодПроизводителя",Код,1)=1 Тогда
            ТЗ.НоваяСтрока();
            ТЗ.Вес = ВернутьЧисло(Стр,2);
            Если ПустоеЗначение(ТЗ.Вес)=1 Тогда
                ТЗ.УдалитьСтроку(ТЗ.НомерСтроки);
            КонецЕсли;
        Иначе
            Сообщить("Не нашли "+Код,"!");
        КонецЕсли;        
    КонецЦикла;    
    
    Если ТЗ.ВыбратьСтроку()<>1 Тогда
        Возврат;
    КонецЕсли;
    
    НачатьТранзакцию();
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
        Если Спр.НайтиЭлемент(ТЗ.Товар)=1 Тогда
            УстановитьАтрибуты(Спр,ТЗ);
            Спр.Записать();
        КонецЕсли;
    КонецЦикла;
    ЗафиксироватьТранзакцию();
КонецПроцедуры  



Компоненту 1С++ брать тут http://www.1cpp.ru/images/3/32/Icpp-latest.rar


has been added to your cart:
Оформление заказа