7.7 Импорт из Excel в справочник

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем r-d-v2008, 30 апр 2012.

  1. TopicStarter Overlay
    r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    Добрый всем день!!! Вопрос значит такой Загружаю из екселя в справочник номенклатуру, как мне эту номенклатуру поместить в конкретную группу? свойство Родитель что то не заполняется, не пойму как в нее загнать. Выкладываю обработку и файлик екселевский

    Вложения:

  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    к сожалению 7 нет, может так код выложите?
  3. athlon64k
    Offline

    athlon64k

    Регистрация:
    26 апр 2012
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    Вот его код:
    Код:
    //*******************************************
    Процедура Сформировать()
    //Создаем ОЛЕ подключение к Excel
    Excel = СоздатьОбъект("Excel.Application");  
    ПолноеИмяФайла = "D:\Documents and Settings\Денис\Рабочий стол\ФормаСАУnew.xls";
    //Открываем файл
    //Excel.Workbooks.Open(ПолноеИмяФайла);
    
    //Открываем активную книгу
    Книга = Excel.Workbooks.Open(ПолноеИмяФайла); //Excel.ActiveWorkbook;
    
    //Открываем Лист
    //ИмяЛиста = "справ_Товар";
    Лист = Книга.WorkSheets(8);
    
    //Получааем количество строк в книге
    Строк = Лист.Cells.CurrentRegion.Rows.Count;
    
    //Создадим заранее объект справочника ТМЦ
    СпрТМЦ = СоздатьОбъект("Справочник.Номенклатура");
    //  СпрЦены = СоздатьОбъект("Справочник.Цены");  
    НДС10 = СоздатьОбъект("Перечисление.СтавкиНДС.НДС10");
    НДС18 = СоздатьОбъект("Перечисление.СтавкиНДС.НДС18");
    БезНДС = СоздатьОбъект("Перечисление.СтавкиНДС.БезНДС");
    ОКЕЙ = СоздатьОбъект("Справочник.ОКЕИ");
    ЕдЧ = СоздатьОбъект("Справочник.Единицы");
    Таб = СоздатьОбъект("ТаблицаЗначений");
    //  СпрКатЦены = СоздатьОбъект("Справочник.КатегорииЦен");  
    
    //СпрКатЦены.НайтиПоНаименованию("Закупочная");
    //ТекКатЦены = СпрКатЦены.ТекущийЭлемент();
    //
    
    Сообщить("Начинаем заносить товар");
    //Перебираем строки и обрабатываем данные
    Нам = "ИНМАРКО";
    СпрТМЦ.НоваяГруппа();
    //СпрТМЦ.Код = "00000800";
    СпрТМЦ.Наименование = Нам;
    СпрТМЦ.Записать();
    
    Для х = 3 По Строк Цикл
    
    //Зная типы значений в колонках и перебирая строки получаем
    //необходимые значения и обрабатываем их  
    КодТовара	   = СокрЛП(Строка(Лист.Cells(х, 2).Value));  
    НаименованиеТовара = СокрЛП(Строка(Лист.Cells(х, 3).Value));
    СтавкаНДС	 = СокрЛП(Строка(Лист.Cells(х, 4).Value));
    Вес = Число(Лист.Cells(х, 5).Value);
    ШтукВКоробке = Число(Лист.Cells(х, 6).Value);
    ЕденицаИзмерения = СокрЛП(Строка(Лист.Cells(х, 7).Value));
    
    
    //Сначала ищем товар по коду, если не нашли по наименованию  
    Если СпрТМЦ.НайтиПоКоду(КодТовара) <> 1 Тогда
    СпрТМЦ.Новый();
    //СпрТМЦ.Родитель = Нам;
    СпрТМЦ.Код = КодТовара;
    СпрТМЦ.Наименование = НаименованиеТовара;
    СпрТМЦ.ПолнНаименование = НаименованиеТовара;
    СпрТМЦ.НаименованиеКПК = НаименованиеТовара;
    //ЕдЧ.ИспользоватьВладельца();
    //ЕдЧ.ВыбратьЭлементы();
    //Пока ЕдЧ.ПолучитьЭлемент() <> 0 Цикл
    //	 Если ЕдЧ.Наименование = ЕденицаИзмерения Тогда
    //		 СпрТМЦ.ОсновнаяЕдиница = ЕдЧ.ТекущийЭлемент();
    //	 КонецЕсли;
    //КонецЦикла;
    //СпрТМЦ.РеквБазоваяЕдиница = глЗначениеПоУмолчанию("ОсновнаяОКЕИ");
    //СпрТМЦ.ОсновнаяЕдиница = глЗначениеПоУмолчанию("ОсновнаяОКЕИ");
    
    Если ПустоеЗначение(СпрТМЦ.МТКодКПК)=1 Тогда
    //код не сформирован, найдем послдений номер кода в справочнике
    лСпрПК=СоздатьОбъект("Справочник.МТПоследниеКодыКПК");
    Если лСпрПК.НайтиПоКоду(5) = 1 Тогда
    //запишем новый код
    СпрТМЦ.МТКодКПК = лСпрПК.ПоследнийКод+1;
    //обновим последний код в справочнике
    лСпрПК.ПоследнийКод=СпрТМЦ.МТКодКПК;
    лСпрПК.Записать();
    КонецЕсли;
    КонецЕсли;
    Если СтавкаНДС = "0.1" Тогда
    СпрТМЦ.СтавкаНДС = НДС10;
    //ИначеЕсли СтавкаНДС = "0.18" Тогда
    // СпрТМЦ.СтавкаНДС = НДС18;
    Иначе
    СпрТМЦ.СтавкаНДС = НДС18;
    КонецЕсли;
    СпрТМЦ.СтавкаНП = глЗначениеПоУмолчанию("ОсновнаяСтавкаНП");
    СпрТМЦ.Записать();
    Сообщить(НаименованиеТовара);
    //Иначе
    // СпрТМЦ.Удалить();
    // СпрТМЦ.Новый();
    // //СпрТМЦ.Родитель = Нам;
    // СпрТМЦ.Код = КодТовара;
    // СпрТМЦ.Наименование = НаименованиеТовара;
    // СпрТМЦ.ПолнНаименование = НаименованиеТовара;
    // СпрТМЦ.НаименованиеКПК = НаименованиеТовара;
    //
    // ЕдЧ.ИспользоватьВладельца();
    // ЕдЧ.ВыбратьЭлементы();
    // Пока ЕдЧ.ПолучитьЭлемент() <> 0 Цикл
    //		 Если ЕдЧ.Наименование = ЕденицаИзмерения Тогда
    //			 СпрТМЦ.ОсновнаяЕдиница = ЕдЧ.ТекущийЭлемент();
    //		 КонецЕсли;
    // КонецЦикла;
    //
    // Если ПустоеЗначение(СпрТМЦ.МТКодКПК)=1 Тогда
    // //код не сформирован, найдем послдений номер кода в справочнике
    // лСпрПК=СоздатьОбъект("Справочник.МТПоследниеКодыКПК");
    // Если лСпрПК.НайтиПоКоду(5) = 1 Тогда
    // //запишем новый код
    // СпрТМЦ.МТКодКПК = лСпрПК.ПоследнийКод+1;
    // //обновим последний код в справочнике
    // лСпрПК.ПоследнийКод=СпрТМЦ.МТКодКПК;
    // лСпрПК.Записать();
    // КонецЕсли;
    // КонецЕсли;
    // Если СтавкаНДС = "0.1" Тогда
    //	 СпрТМЦ.СтавкаНДС = НДС10;
    // ИначеЕсли СтавкаНДС = "0.18" Тогда
    // СпрТМЦ.СтавкаНДС = НДС18;
    // Иначе
    // СпрТМЦ.СтавкаНДС = БезНДС;
    // КонецЕсли;
    // СпрТМЦ.СтавкаНП = глЗначениеПоУмолчанию("ОсновнаяСтавкаНП");
    // СпрТМЦ.Записать();
    // Сообщить(НаименованиеТовара);
    //Товар не нашли, продолжаем
    //здесь можно создавать товар если надо
    //Продолжить;
    Конецесли;
    
    //записываем цену
    // СпрЦены.Новый();  
    // СпрЦены.КатегорияЦены = ТекКатЦены;
    //СпрЦены.Цена = ЦенаТМЦ;
    //СпрЦены.Владелец = НайдТовар;
    //СпрЦены.Записать();  
    //.......	
    КонецЦикла;
    Сообщить("-----------------------------------------Товары успешно загружены----------------------------------------------------");
    //Открываем Лист
    //ИмяЛиста = "справ_Товар";
    Камера = СоздатьОбъект("Справочник.Камеры");
    Лист = Книга.WorkSheets(10);
    //Получааем количество строк в книге
    Строк = Лист.Cells.CurrentRegion.Rows.Count;
    Для х = 3 По Строк Цикл
    
    //Зная типы значений в колонках и перебирая строки получаем
    //необходимые значения и обрабатываем их  
    КодМодели	   = СокрЛП(Строка(Лист.Cells(х, 2).Value));  
    НаименованиеМодели = СокрЛП(Строка(Лист.Cells(х, 3).Value));
    Объем	= СокрЛП(Строка(Лист.Cells(х, 4).Value));
    Родитель = СокрЛП(Строка(Лист.Cells(х, 5).Value));
    //Вес = Число(Лист.Cells(х, 5).Value);
    //ШтукВКоробке = Число(Лист.Cells(х, 6).Value);
    //ЕденицаИзмерения = СокрЛП(Строка(Лист.Cells(х, 7).Value));
    Если Камера.НайтиПоНаименованию(Родитель) <> 1 Тогда
    Камера.НоваяГруппа();
    //СпрТМЦ.Код = "00000100";
    Камера.Наименование = Родитель;
    Камера.Записать();
    ИначеЕсли Камера.НайтиПоНаименованию(Родитель) = 1 Тогда
    //Если Камера.НайтиПоКоду(КодМодели) = 1 Тогда
    //	Камера.Удалить();
    // Камера.Новый();
    // //Камера.ИспользоватьРодителя(Родитель);
    // Камера.Родитель = Родитель;
    // Камера.Код = КодМодели;
    // Камера.Наименование = НаименованиеМодели;
    // Камера.Объем = Объем;
    // Камера.Записать();
    //Иначе
    Камера.Новый();
    //Камера.ИспользоватьРодителя(Родитель);
    Камера.Код = КодМодели;
    Камера.Наименование = НаименованиеМодели;
    Камера.Объем = Объем;
    Камера.Записать();
    КонецЕсли;
    КонецЕсли;
    //Камера.Новый();
    //Камера.Код = КодМодели;
    //Камера.Наименование = НаименованиеМодели;
    //Камера.Объем = Объем;
    //Камера.Записать();
    Сообщить(НаименованиеМодели);
    КонецЦикла;  
    Сообщить("Данные успешно записаны");  
    //После загрузки зарываем соединение с Excel
    Excel.Workbooks.Close();
    КонецПроцедуры
    
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    подразумеваю, что вот эта закомментенная строка и не отработала
    Код:
    //СпрТМЦ.Родитель = Нам;
    а не отработала она потому, что вы с Родителя пытаетесь записать тип Строка, а Родитель должен быть как элемент справочника, вы же создали до этого группу, вот тот элемент сюда и присваивайте
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104

    athlon64k, Убедительная просьба - пользоваться тегами

Поделиться этой страницей