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