|   |   | 
| 
 | Загрузка из 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"); ТО.Адрес = Формат(Местность+", "+Пункт); ТО.Записать(); //Запись в справочкик точек обслуживания ////если элемент с таким наименованием не найден, то создаем его КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); КонецПроцедуры | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |