| 
    
            
         
         | 
    
    
  | 
загрузка из 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 
 | 
         
        Большое спасибо, ошибки больше нет     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |