Такой вопрос
В справочнике есть поля которые выбираются из других справочников. (скажем в справочнике клиент , графа механик выбирается из справочника механики)
Можноли импортировать данные (из excel) так чтобы ВСЕ поля были заполнены.
У меня пока получается все кроме выше указанных. Они остаются пустыми.
В справочнике есть поля которые выбираются из других справочников. (скажем в справочнике клиент , графа механик выбирается из справочника механики)
Можноли импортировать данные (из excel) так чтобы ВСЕ поля были заполнены.
У меня пока получается все кроме выше указанных. Они остаются пустыми.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
конечно можно.
тривиальный пример
файл эхеля содержит следующие данные
К0005, М0003, где К0005 - код клиента, М0005 - код механика
примерный алгоритм
СпрК = СОздатьОбъект("Справочник.Клиенты");
СпрМ = СОздатьОбъект("Справочник.Механики");
Цикл ПоСтрокамЭкселя
КодКлиента = ПолучитьКодКлиентаИзСтрокиЭкселя;
КодМеханика = ПолучитьКодМеханикаИзСтрокиЭкселя;
Если СпрК.НайтиПоКоду(КодКлиента) = 0 Тогда
//просто пропускаем, может быть иной алгоритм
продолжить;
КонецЕсли;
Если СпрМ.НайтиПоКоду(КодМеханика) = 0 Тогда
//такой механик не найден, будет ПУСТООООООО!!!!!!!!!!!
ссылкаНаМеханика = ПолучитьПустоеЗначение("Справочник.Механики");
Иначе
ссылкаНаМеханика = СпрМ.ТекущийЭлемент();
КонецЕсли;
СпрК.Механик = ссылкаНаМеханика;
СпрК.Записть();
КонецЦикла;
тривиальный пример
файл эхеля содержит следующие данные
К0005, М0003, где К0005 - код клиента, М0005 - код механика
примерный алгоритм
СпрК = СОздатьОбъект("Справочник.Клиенты");
СпрМ = СОздатьОбъект("Справочник.Механики");
Цикл ПоСтрокамЭкселя
КодКлиента = ПолучитьКодКлиентаИзСтрокиЭкселя;
КодМеханика = ПолучитьКодМеханикаИзСтрокиЭкселя;
Если СпрК.НайтиПоКоду(КодКлиента) = 0 Тогда
//просто пропускаем, может быть иной алгоритм
продолжить;
КонецЕсли;
Если СпрМ.НайтиПоКоду(КодМеханика) = 0 Тогда
//такой механик не найден, будет ПУСТООООООО!!!!!!!!!!!
ссылкаНаМеханика = ПолучитьПустоеЗначение("Справочник.Механики");
Иначе
ссылкаНаМеханика = СпрМ.ТекущийЭлемент();
КонецЕсли;
СпрК.Механик = ссылкаНаМеханика;
СпрК.Записть();
КонецЦикла;
Блин. нифига не работает.
Отложил в сторону, пока были дела по насущнее, теперь вот продолжаю мучаться.
Процедура Загрузка()
Спр=СоздатьОбъект("Справочник.Клиенты");
СпрМ = СОздатьОбъект("Справочник.Механики");
ВыбратьФайл();
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;
КонецЦикла;
Механика в справочник механиков добавляет, а вот в у клиента графа механик остается пустой.
И еще в справочнике механиков будет много-много одних и техже механиков, согласно общему количеству клиентов...
Отложил в сторону, пока были дела по насущнее, теперь вот продолжаю мучаться.
Процедура Загрузка()
Спр=СоздатьОбъект("Справочник.Клиенты");
СпрМ = СОздатьОбъект("Справочник.Механики");
ВыбратьФайл();
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;
КонецЦикла;
Механика в справочник механиков добавляет, а вот в у клиента графа механик остается пустой.
И еще в справочнике механиков будет много-много одних и техже механиков, согласно общему количеству клиентов...
Я бы сделал так:
Код |
---|
//теперь кусок над которым бьюсь
НаимМех = СокрЛП(Строка(ПолучитьЗначение(Excel,i,18))));
Если СпрМ.НайтиПоНаименованию(НаимМех ,0)=0 Тогда // смотри что у тебя здесь
СпрМ.Новый();
СпрМ.Наименование=НаимМех;
СпрМ.Записать(); // кто за тебя будет записывать
КонецЕсли;
Спр.Механик = СпрМ.ТекущийЭлемент();
Показать полностью |
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот