импорт справочника

1. DbIM 27.08.07 17:18 Сейчас в теме
Такой вопрос
В справочнике есть поля которые выбираются из других справочников. (скажем в справочнике клиент , графа механик выбирается из справочника механики)
Можноли импортировать данные (из excel) так чтобы ВСЕ поля были заполнены.
У меня пока получается все кроме выше указанных. Они остаются пустыми.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. CheBurator 3125 27.08.07 19:51 Сейчас в теме
конечно можно.
тривиальный пример
файл эхеля содержит следующие данные
К0005, М0003, где К0005 - код клиента, М0005 - код механика
примерный алгоритм

СпрК = СОздатьОбъект("Справочник.Клиенты");
СпрМ = СОздатьОбъект("Справочник.Механики");

Цикл ПоСтрокамЭкселя
КодКлиента = ПолучитьКодКлиентаИзСтрокиЭкселя;
КодМеханика = ПолучитьКодМеханикаИзСтрокиЭкселя;

Если СпрК.НайтиПоКоду(КодКлиента) = 0 Тогда
//просто пропускаем, может быть иной алгоритм
продолжить;
КонецЕсли;

Если СпрМ.НайтиПоКоду(КодМеханика) = 0 Тогда
//такой механик не найден, будет ПУСТООООООО!!!!!!!!!!!
ссылкаНаМеханика = ПолучитьПустоеЗначение("Справочник.Механики");
Иначе
ссылкаНаМеханика = СпрМ.ТекущийЭлемент();
КонецЕсли;
СпрК.Механик = ссылкаНаМеханика;
СпрК.Записть();
КонецЦикла;
3. CheBurator 3125 27.08.07 19:53 Сейчас в теме
может быть у тебя получается пусто, что ты во время поиска механика не позиционируешься на конкретную запись в справочнике механиков.
4. DbIM 30.10.07 13:56 Сейчас в теме
Блин. нифига не работает.
Отложил в сторону, пока были дела по насущнее, теперь вот продолжаю мучаться.

Процедура Загрузка()
Спр=СоздатьОбъект("Справочник.Клиенты");
СпрМ = СОздатьОбъект("Справочник.Механики");
ВыбратьФайл();
Excel=СоздатьОбъект("Excel.Application");
РабочаяКнига=Excel.Workbooks;
РабочаяКнига.Open(ИмяФайла,0,1);
i=1;
Стр= (СокрЛП(Строка(ПолучитьЗначение(Excel,i,1))));
Пока ПустаяСтрока(Стр)=0 Цикл
Стр=(СокрЛП(Строка(ПолучитьЗначение(Excel,i,1))));
Если ПустаяСтрока(Стр)=1 Тогда
Сообщить ("Загрузка закончена","i");
Прервать;
КонецЕсли;


НомерСтроки=Стр;
ТоварСпр=(СокрЛП(Строка(ПолучитьЗначение(Excel,i,1))));
Если Спр.НайтиПоНаименованию(ТоварСпр,0)=0 Тогда
Спр.Новый();
Спр.Наименование=(СокрЛП(Строка(ПолучитьЗначение(Excel,i,2))));

//теперь кусок над которым бьюсь
Если СпрМ.НайтиПоНаименованию(ТоварСпр,0)=0 Тогда
СпрМ.Новый(); СпрМ.Наименование=(СокрЛП(Строка(ПолучитьЗначение(Excel,i,18))));
ссылкаНаМеханика=ПолучитьПустоеЗначение("Справочник.Механики");
Иначе
ссылкаНаМеханика = СпрМ.ТекущийЭлемент();
КонецЕсли;
Спр.Механик = ссылкаНаМеханика;

//окончание этого безобразия
КонецЕсли;
Спр.Записать();
СпрМ.Записать();
i=i+1;

КонецЦикла;

Механика в справочник механиков добавляет, а вот в у клиента графа механик остается пустой.
И еще в справочнике механиков будет много-много одних и техже механиков, согласно общему количеству клиентов...
5. sashulyT 201 30.10.07 14:18 Сейчас в теме
Я бы сделал так:

Код
//теперь кусок над которым бьюсь 
НаимМех = СокрЛП(Строка(ПолучитьЗначение(Excel,i,18))));

Если СпрМ.НайтиПоНаименованию(НаимМех ,0)=0 Тогда // смотри что у тебя здесь
        СпрМ.Новый(); 
        СпрМ.Наименование=НаимМех;
        СпрМ.Записать();  // кто за тебя будет записывать
КонецЕсли; 
Спр.Механик = СпрМ.ТекущийЭлемент(); 

Показать полностью
6. DbIM 30.10.07 14:58 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот