Имя: Пароль:
1C
1C 7.7
v7: Загрузка из Excel
0 DeMi4
 
19.01.12
11:07
Помогите пожалуйста

Файл следующего вида
Наименование    Номер
ГРУППА
Абонент          012
Абонент          013
ЕЩЕ ОДНА ГРУППА  
Еще один абонент 015
еще один абонент 117

Как сделать загрузку из этого файла чтобы каждый абонент относился к своей группе

Что пока у меня получается
Процедура Сформировать2() //Загрузка файла с номерами и отделами

   ОкноЕхсеl = СоздатьОбъект("Excel.Application");
   ОкноЕхсеl.AskToUpdateLinks = 0; //если будем открывать книгу со связями, то обновлять их не надо
   НовыеРабочиеКниги = ОкноЕхсеl.Workbooks;
   РабочаяКнига = НовыеРабочиеКниги.Open(ИмяФ);
   КолСтрок=ОкноЕхсеl.ActiveSheet.UsedRange.Rows.Count;
   Сообщить("Количество строк - "+Строка(КолСтрок));
   СпрНом=СоздатьОбъект("Справочник.ИсхНомера");
   СпрОтд=СоздатьОбъект("Справочник.ИсхНомера");
   Для Стр=1 По КолСтрок Цикл
       Номер=СокрЛП(ОкноЕхсеl.Cells(Стр,3).Value);
       Если ПустоеЗначение(Номер)=1 Тогда
           СпрОтд.НоваяГруппа();
           СпрОтд.Наименование=СокрЛП(ОкноЕхсеl.Cells(Стр,2).Value);
           СпрОтд.Записать();
           КодГруппы=СпрОтд.Код;
       Иначе
           СпрНом.Новый();
           СпрНом.Номер=Номер;
           СпрНом.Наименование=СокрЛП(ОкноЕхсеl.Cells(Стр,2).Value);
           СпрНом.Родитель=СпрОТД.НайтиПоКоду(КодГруппы);    
           СпрНом.Записать();
       КонецЕсли;
   КонецЦикла;
   ОкноЕхсеl.ActiveWorkbook.Close();
КонецПроцедуры

в итоге в справочнике группы отдельно абоненты отдельно
1 filh
 
19.01.12
11:10
СпрНом.Родитель=СпрОТД.НайтиПоКоду(КодГруппы); находит что?
2 antoneus
 
19.01.12
11:11
Читаем СП - что возвращает НайтиПоКоду
3 PuhUfa
 
19.01.12
11:11
НайтиПоКоду(<?>,);
Синтаксис:
НайтиПоКоду(<Код>,<ФлагПоиска>)
Назначение:
Найти элемент справочника по коду.
Возвращает: 1 - если действие выполнено;
0 - если действие не выполнено (элемент не найден).

Внимательно читаем что возвращает... думаем...
4 1Сергей
 
19.01.12
11:11
запоминай не код, а саму группу
5 Kondarat
 
19.01.12
11:11
Родитель = "";
      Если ПустоеЗначение(Номер)=1 Тогда
           СпрОтд.НоваяГруппа();
           СпрОтд.Наименование=СокрЛП(ОкноЕхсеl.Cells(Стр,2).Value);
           СпрОтд.Записать();
           //КодГруппы=СпрОтд.Код;
           Родитель = СпрОтд.ТекущийЭлемент();
       Иначе
           СпрНом.Новый();
           СпрНом.Номер=Номер;
           СпрНом.Наименование=СокрЛП(ОкноЕхсеl.Cells(Стр,2).Value);
           СпрНом.Родитель = Родитель;
           //СпрНом.Родитель=СпрОТД.НайтиПоКоду(КодГруппы);    
           СпрНом.Записать();
       КонецЕсли;
6 DeMi4
 
19.01.12
11:20
Ага спасибо я опять забыл почитать СП
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший