Имя: Пароль:
1C
1С v8
Загрузка из EXCEL в 1С
,
0 Яна93
 
11.12.13
10:00
Привет всем! Подскажите, пожалуйста, как правильно написать строчку кода..В общем у меня есть справочник у которого колонка КОД с типом строка..и когда я создаю новую строчку там автоматически заполняется код в таком формате - 2107,0,2904, 2107,0,2905 и так далее по возрастанию. И когда я загружаю из своей обработки данные из экселя в этом справочнике создается очередная последовательность кода.. В принципе я не хочу трогать очередность..мне просто нужно чтобы когда я буду загружаться из своей обработки последовательность кода начиналась не с 2107 а с 0555 к примеру..

Процедура КнопкаВыполнитьНажатие(Кнопка)

    Попытка
        Excel = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Не удалось инициализировать Excel");
        Возврат;
    КонецПопытки;    
            
        Excel.Workbooks.Open(ПутьКФайлу);
        НомерКниги=Excel.Workbooks.count;
        Книга=Excel.Workbooks.Item(НомерКниги);
        Лист=Excel.Sheets(1);
        
        
    //В одной транзакции запись элементов в базе DBF пойдет намного быстрее
    НачатьТранзакцию();

  
    //число строк на листе Excel
    rows=Excel.ActiveSheet.UsedRange.Rows.Count;
    спрТО=Справочники.Ю_ТочкиОбслуживания;

    //цикл по строкам
    Для row = 1 По rows Цикл
        //читаем строку из ячейки Excel (значения должны располагаться в первой колонке)
        Наименование=СокрЛП(Excel.Cells(row,1).Value);
        местность=СокрЛП(Excel.Cells(row,2).Value);
    пункт=СокрЛП(Excel.Cells(row,3).Value);
                
        //показываем пользователю прогресс в строке состояния
        Состояние(""+row+"/"+rows+"  "+имя);  
        Если имя="" Тогда
            Продолжить; //пустые значения не создаем
    КонецЕсли;
         ТО = спрТО.НайтиПоНаименованию(имя);
     Если ТО.Пустая() Тогда
        ТО        = спрТО.СоздатьЭлемент();
        ТО.Наименование    = НаименованиеТО;  
        ТО.Эмитент = Справочники.Ю_Эмитенты.НайтиПоКоду("0555");
        ТО.Адрес = Формат(Местность+", "+Пункт);
        ТО.Записать();


    КонецЕсли;
    КонецЦикла;
    ЗафиксироватьТранзакцию();
КонецПроцедуры
        
    
Процедура ПутьКФайлуНачалоВыбора(Элемент, СтандартнаяОбработка)
    Режим=РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла=Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.ПолноеИмяФайла="";
    Фильтр="файлы Excel|*.xls";
    ДиалогОткрытияФайла.Фильтр=Фильтр;
    ДиалогОткрытияФайла.МножественныйВыбор=Ложь;
    ДиалогОткрытияФайла.Заголовок="Выберите файл";
    Если ДиалогОткрытияФайла.Выбрать() тогда
        ПутьКФайлу=ДиалогОткрытияФайла.ПолноеИмяФайла;
    КонецЕсли;
КонецПроцедуры
1 Wobland
 
11.12.13
10:01
код можно присваивать самостоятельно, не доверяя это дело платформе
2 Яна93
 
11.12.13
10:02
забыла изменить часть в коде

Состояние(""+row+"/"+rows+"  "+имя);  
        Если имя="" Тогда

здесь не "имя", а "Наименование" должно быть...
3 Яна93
 
11.12.13
10:04
(1) Привет) Самостоятельно вручную долго получается..просто я много данных загружаю разом..есть возможность как то программно заменить начало кода?
4 mikecool
 
11.12.13
10:05
может проще заюзать универс загрузку из таб дока?
5 Wobland
 
11.12.13
10:05
зачем же вручную? вон как у тебя замечательно элементы создаются. и какое такое начало?
6 Яна93
 
11.12.13
10:09
(4) вот как раз эту универсальную обработку я дописываю.. (5)начало кода в 1с автоматически создается такое 2107..а я хочу заменить его на 0555 когда буду прогружать свой документ..но чтобы не пострадала дальнейшая последовательность..так и продолжал 2107..
7 razlagator
 
11.12.13
10:10
(6) если изменишь код вручную, то последовательность пострадает
8 Яна93
 
11.12.13
10:10
(7) изменяла вручную..не пострадала) но это очень долго..(
9 Wobland
 
11.12.13
10:11
ХочуТакой=555;
Пошёл цикл
.Код=Прав("00000000"+Формат(ХочуТакой), ДлинаКода)
ХочуТакой=ХочуТакой+1;
10 Яна93
 
11.12.13
10:13
(9) Ой..сейчас попробую))
11 Яна93
 
11.12.13
15:02
(9) Спасибо!!!! ;)
вот конечный вариант если кому нужно..

Процедура ВыполнитьНажатие(Кнопка)
Попытка
        Excel = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Не удалось инициализировать Excel");
        Возврат;
    КонецПопытки;    
            
        Excel.Workbooks.Open(ПутьКФайлу);
        НомерКниги=Excel.Workbooks.count;
        Книга=Excel.Workbooks.Item(НомерКниги);
        Лист=Excel.Sheets(1);
        
        
    //В одной транзакции запись элементов в базе DBF пойдет намного быстрее
    НачатьТранзакцию();
    ХочуТакой="0555,0,";

  
    //число строк на листе Excel
    rows=Excel.ActiveSheet.UsedRange.Rows.Count;
    спрТО=Справочники.Ю_ТочкиОбслуживания;

    //цикл по строкам
    Для row = 1 По rows Цикл
        //читаем строку из ячейки Excel (значения должны располагаться в первой колонке)
        НаименованиеТО=СокрЛП(Excel.Cells(row,1).Value);
        местность=СокрЛП(Excel.Cells(row,2).Value);
        пункт=СокрЛП(Excel.Cells(row,3).Value);
    
        
        //показываем пользователю прогресс в строке состояния
        Состояние(""+row+"/"+rows+"  "+НаименованиеТО);  
        Если НаименованиеТО="" Тогда
            Продолжить; //пустые значения не создаем
        КонецЕсли;
         ТО = спрТО.НайтиПоНаименованию(НаименованиеТО);
         Если ТО.Пустая() Тогда
        ТО        = спрТО.СоздатьЭлемент();//Запись в справочкик точек обслуживания
     Тогда
        ТО.Код=Прав("0000,0,0000"+Формат(ХочуТакой), ДлинаКода);
        
        ТО.УстановитьНовыйКод(ХочуТакой);
        ТО.Наименование    = НаименованиеТО;  
        ТО.Эмитент = Справочники.Ю_Эмитенты.НайтиПоКоду("0555");
        ТО.Адрес = Формат(Местность+", "+Пункт);
        ТО.Записать(); //Запись в справочкик точек обслуживания

        
        ////если элемент с таким наименованием не найден, то создаем его
        
        КонецЕсли;
    КонецЦикла;
    ЗафиксироватьТранзакцию();
КонецПроцедуры
Независимо от того, куда вы едете — это в гору и против ветра!