|
загрузка из Excel в 1С | ☑ | ||
---|---|---|---|---|
0
prog-Igor
02.10.14
✎
16:10
|
Подскажите в чем причина, почему в 1С не создаются все элементы справочника(их 12)а только 1 первый,ниже код, прошу строго не судить я новичек! Как правильно написать загрузку из Excel?
&НаКлиенте Процедура Сформировать(Команда) ЗагрузитьНоменклатуру(); КонецПроцедуры &НаСервере Процедура ЗагрузитьНоменклатуру() Попытка МойЭксель= Новый COMОбъект("Excel.Application","WIN-KZA1CPTJWQ7"); Книга=МойЭксель.WorkBooks.Open(Объект.ВыбратьФайл); //ПутьКФайлу!!!***** //Книга=МойЭксель.WorkBooks.Open(Объект.ВыбратьФайл); //ПутьКФайлу!!!***** Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Лист=Книга.WorkSheets(3); //Изменить на второй лист********* //МойЭксель.Visible = Ложь; //МойЭксель.DisplayAlerts = Истина; //****Номенклатура**** ВсегоКолонок=3; //Колонка ВсегоСтрок=12; //Количество строк Для Строки=2 По ВсегоСтрок Цикл Выборка=Справочники.Номенклатура.СоздатьЭлемент(); Значение=СокрЛП(Лист.Cells(Строки,ВсегоКолонок).Value); Выборка.Наименование=Значение; Выборка.НаименованиеПолное=Значение; выборка.СтавкаНДС=Перечисления.СтавкиНДС.БезНДС; Выборка.ТипНоменклатуры=Перечисления.ТипыНоменклатуры.Товар; //****Находим Вид группы по наименованию ВсегоКолонокГруппы=4; ВсегоСтрокГруппы=12; Для Строки=2 По ВсегоСтрокГруппы Цикл ЗначениеГруппы=СокрЛП(Лист.Cells(Строки,ВсегоКолонокГруппы).Value); Выборка.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию(ЗначениеГруппы);//Найти по Наименованию!!!***** КонецЦикла; //*** находим родителя группы ВсегоКолонокРодителя=2; ВсегоСтрокРодителя=4; Для Строки=2 По ВсегоСтрокРодителя Цикл ЗначениеРодителя=СокрЛП(Лист.Cells(Строки,ВсегоКолонокРодителя).Value); Выборка.Родитель=Справочники.Номенклатура.НайтиПоНаименованию(ЗначениеРодителя); Продолжить; КонецЦикла; //**** Находим производителя по наименованию ВсегоКолонокПроизводителя=5; ВсегоСтрокПроизводителя=12; Для Строки=2 По ВсегоСтрокПроизводителя Цикл ЗначениеПроиз=СокрЛП(Лист.Cells(Строки,ВсегоКолонокПроизводителя).Value); Выборка.Производитель=Справочники.Производители.НайтиПоНаименованию(ЗначениеПроиз);//Найти по Наименованию!!!***** КонецЦикла; Выборка.Записать(); Сообщить("Создана номенклатура "+Выборка.Наименование); КонецЦикла; //Лист.Cells(1.3).Value=""; МойЭксель.ActiveWorkBook.Close(); //ПутьКФайлу!!!***** МойЭксель.Application.Quit(); КонецПроцедуры // ЗагрузитьНоменклатуру() &НаКлиенте Процедура ВыбратьФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) ДиалогВыбора=новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбора.Заголовок="Выберите файл"; Если ДиалогВыбора.Выбрать() Тогда Объект.ВыбратьФайл=ДиалогВыбора.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры |
|||
1
prog-Igor
02.10.14
✎
16:12
|
Получается что только первый элемент справочника создается а остальные 11 нет!
|
|||
2
salvator
02.10.14
✎
16:13
|
А отладчик пробовал запускать?
|
|||
3
acanta
02.10.14
✎
16:15
|
Для Строки=2 По насчитала аж 3 штуки
|
|||
4
prog-Igor
02.10.14
✎
16:21
|
Строки=2 но разные Столбцы
|
|||
5
barrgand
02.10.14
✎
16:22
|
(0) В таком коде сложно ориентироваться, вот и ошибку найти сложно. Приведите код в порядок, может и ошибка найдется...
|
|||
6
FN
02.10.14
✎
16:22
|
(4) одна и та же переменная в разных вложенных циклах.
|
|||
7
acanta
02.10.14
✎
16:22
|
причем тут столбцы, переменные наружного и двух внутренних циклов совпадают и всегда = 2
|
|||
8
prog-Igor
02.10.14
✎
16:23
|
Где ошибка,подскажите пожалуйста
|
|||
9
prog-Igor
02.10.14
✎
16:23
|
понял,сейчас буду смотреть
|
|||
10
prog-Igor
02.10.14
✎
16:43
|
исправил перем теперь выдает ошибку:
значение поля группа должно быть группой |
|||
11
acanta
02.10.14
✎
16:44
|
уже лучше, правда?
|
|||
12
prog-Igor
02.10.14
✎
16:46
|
согласен, но все же
|
|||
13
Borometr
02.10.14
✎
16:49
|
посмотри у тебя наименование Номенклатуры и Родителя не совпадает случайно где-нибудь
|
|||
14
Borometr
02.10.14
✎
16:51
|
т.е. в 3 и 4 графе не должно быть одинаковых наименований
|
|||
15
Borometr
02.10.14
✎
16:53
|
Или же то наименование которое в 4-ой графе уже есть в справочнике в виде элемента
|
|||
16
prog-Igor
02.10.14
✎
16:55
|
да, вы правы
тогда подскажите как правильно найти группу |
|||
17
Borometr
02.10.14
✎
16:59
|
Группа = Справочники.Номенклатура.НайтиПоНаименованию(ЗначениеРодителя)
Если Группа.ЭтоГруппа Тогда Выборка.Родитель = Группа; Иначе Придеться что-то переименовывать или элемент или группу КонецЕсли; |
|||
18
Borometr
02.10.14
✎
17:00
|
Или можно запросом, если его никто не увидит и тебе не так важно что запрос используется в цикле
|
|||
19
acanta
02.10.14
✎
17:02
|
(18)а можно загнать названия из екселя в список значений и выбрать одним запросом все группы с такими наименованиями?
|
|||
20
prog-Igor
02.10.14
✎
17:06
|
Большое спасибо, ошибки больше нет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |