Имя: Пароль:
1C
 
Загрузка из Excel и mxl .
0 Goruch
 
26.12.06
16:27
Вот передо мной лежат 2 файла (эксель и xml) с данными справочника сотрудников (порядка 700 человек) мне их надо загрузить в 1С. Вот думаю как их удобнее загружать, и не могли бы порекомендовать статьи на эту тему.
1С v7.7
1 Ёпрст2
 
26.12.06
16:35
"Вот передо мной лежат 2 файла" ... порнография какая то, надеюсь, они хоть в одежде ? :)
2 gr13
 
26.12.06
16:38
dbf)))
3 gr13
 
26.12.06
16:38
ТелепатБот Ответь
4 gr13
 
26.12.06
16:38
блин как оно работает(
5 gr13
 
26.12.06
16:38
6 Ёпрст2
 
26.12.06
16:40
7 MAGician_
 
26.12.06
16:40
Если эксель - кури в сторону технологии OLE.
Если xml - в самой 1-ке (1Сv7plus) - есть парсер xml. Кури методы этой дллки.
8 Goruch
 
26.12.06
16:43
Xml я так понимаю удобнее?
9 Ёпрст2
 
26.12.06
16:44
(0) Для Excel советую xls21c.dll  ...
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=7262
10 Ёпрст2
 
26.12.06
16:44
(8) Кому как ...
11 Goruch
 
26.12.06
16:47
Смотри у меня многоуровневый справочник, с большим количеством подчиненных и ветвей, + довольно много всякой инфы по ним, как думаешЬ?
12 Ёпрст2
 
26.12.06
16:51
(11) МОД :)
13 Ёпрст2
 
26.12.06
16:51
(11) tranref чем не подходит? ...Да и помимо него полно обработок по переносу ..
14 Goruch
 
26.12.06
16:53
(13)
Хм, что за  tranref ?
Я хрен-с два правила напишу, там все довольно сложно выходит.
15 Goruch
 
26.12.06
16:57
(14)
В смысле надо програмно это задавать.
16 Ёпрст2
 
26.12.06
16:57
(14) Универсальная загрузка-выгрузка справочников с ИТС
17 Goruch
 
26.12.06
17:07
Дело в том что выгрузка не из 1С шла а из стороней с 1С не связанной программы.
18 mun2
 
26.12.06
17:33
OLE
+1
19 Diter
 
26.12.06
17:33
мыло свети кое что кину в тебя
20 AcaGost
 
26.12.06
17:38
(17) примерно так

//*******************************************
Процедура Выполнить()
   Эксель = СоздатьОбъект("Excel.Application");
   Книга = Эксель.Workbooks;
   //Эксель.Visible=1;
   Состояние("Открывается файл Excel.");
   Попытка
       Книга = Книга.Add(СокрЛП(КаталогФ) + СокрЛП(ИмяФайла));
       Состояние("Открывается файл Excel." + СокрЛП(ИмяФайла));
   Исключение
       Сообщить("Нет Файла "+ СокрЛП(ИмяФайла));
       СтатусВозврата(0);
       Книга.Close();
       Эксель = 0;
       Книга = 0;
       Возврат ;
   КонецПопытки;
   
   КодТовара = 0;
   _Год = "";
   _Месяц = "";
   _Число = "";
   _Дата = "";
   
   ВсегоСтрок = Книга.ActiveSheet.Range("A1").CurrentRegion.Rows.Count;
   Осталось = ВсегоСтрок;
   Ном = 0;
   СчЦ = 0;
   Для СчЦ = Перв По ВсегоСтрок Цикл
       Если Ном = 0 Тогда
           Док = СоздатьОбъект("Документ.ВводОстатковТоваров");
           СоздДок(Док);
       КонецЕсли;
       Осталось = Осталось - 1;
       Ном = Ном + 1;
       
       Тов    = СоздатьОбъект("Справочник.Товары");
       Сер    = СоздатьОбъект("Справочник.Серии");
       Пост    = СоздатьОбъект("Справочник.Клиенты");
       Лаб    = СоздатьОбъект("Справочник.Клиенты");
       
       КодТовара = Число(Книга.ActiveSheet.Cells(СчЦ, 1).Value);
       Если Тов.НайтиПоКоду(КодТовара, 0) = 0 Тогда
           Сообщить("Товар с кодом - " + КодТовара + " отсутствует.  Строка - " + СчЦ);
           Книга.ActiveSheet.Rows(СчЦ).Interior.ColorIndex = 3;
           Продолжить;
       КонецЕсли;
       
       КодТовара = Число(Книга.ActiveSheet.Cells(СчЦ, 10).Value);
       Если Пост.НайтиПоКоду(КодТовара, 0) = 0 Тогда
           Сообщить("Поставщик с кодом - " + КодТовара + " отсутствует.  Строка - " + СчЦ);
           Книга.ActiveSheet.Rows(СчЦ).Interior.ColorIndex = 3;
           Продолжить;
       КонецЕсли;
       
       КодТовара = Число(Книга.ActiveSheet.Cells(СчЦ, 14).Value);
       Если Лаб.НайтиПоКоду(КодТовара, 0) = 0 Тогда
           Сообщить("Лаборатория с кодом - " + КодТовара + " отсутствует.  Строка - " + СчЦ);
           Книга.ActiveSheet.Rows(СчЦ).Interior.ColorIndex = 3;
           Продолжить;
       КонецЕсли;
       
       Док.НоваяСтрока();
       
       Состояние("Обрабатывается товар " + Тов.ТекущийЭлемент());
       Док.Товар = Тов.ТекущийЭлемент();
       
       Сер.ИспользоватьВладельца(Док.Товар);
       Сер.Новый();
       Сер.Наименование = Книга.ActiveSheet.Cells(СчЦ, 3).Value;
       _Дата = СокрЛП(Строка(Книга.ActiveSheet.Cells(СчЦ, 4).Value));
       _Год = Число(Лев(_Дата, 4));
       _Месяц = Число(Сред(_Дата, 5, 6));
       Сер.ГоденДо = Дата(_Год, _Месяц, 1);
       Сер.ЦенаИзг = Число(Книга.ActiveSheet.Cells(СчЦ, 5).Value);
       Сер.Прих_Цена = Число(Книга.ActiveSheet.Cells(СчЦ, 6).Value);
       Сер.Розн_Цена = Число(Книга.ActiveSheet.Cells(СчЦ, 7).Value);
       Сер.ЦенаАпт = Число(Книга.ActiveSheet.Cells(СчЦ, 8).Value);
       Сер.Прих_ЦенаСНалогами = Число(Книга.ActiveSheet.Cells(СчЦ, 9).Value);
       Сер.Поставщик = Пост.ТекущийЭлемент();
       Сер.ГТД = СокрЛП(Строка(Книга.ActiveSheet.Cells(СчЦ, 11).Value));
       Сер.НомерСерт = СокрЛП(Строка(Книга.ActiveSheet.Cells(СчЦ, 12).Value));
       _Дата = СокрЛП(Строка(Книга.ActiveSheet.Cells(СчЦ, 13).Value));
       _Год = 2000 + Число(Лев(_Дата, 2));
       _Месяц = Число(Сред(_Дата, 3, 2));
       _Число = Число(Сред(_Дата, 5, 2));
       Сер.СрокДействия = Дата(_Год, _Месяц, _Число);
       Сер.Лаборатория = Лаб.ТекущийЭлемент();
       Сер.Валюта = Константа.ОснВалюта;
       Сер.Записать();
       
       Док.Серия = Сер.ТекущийЭлемент();
       Док.Количество = Число(Книга.ActiveSheet.Cells(СчЦ, 15).Value);
       Док.Сумма = Число(Книга.ActiveSheet.Cells(СчЦ, 16).Value);
       Док.НДС = Док.Сумма * Число(Книга.ActiveSheet.Cells(СчЦ, 2).Value) / 100;
       Док.Всего = Док.Сумма + Док.НДС;
       
       Если (Ном = СтрДок) и (Осталось >= (СтрДок * 0.4)) Тогда
           Ном = 0;
       КонецЕсли;
       Док.Записать();
   КонецЦикла;
   
   
   Книга.Close();
   Эксель = 0;
   Книга = 0;
   Предупреждение("Всё");
КонецПроцедуры // Выполнить()
21 Злопчинский
 
27.12.06
02:50
Ёпрст2! а в (8) самюзал? корректно возвращает в 1С данные из экселя к типам 1с?
если есть возможность - замыль!
22 Злопчинский
 
27.12.06
02:50
Тьфу, промазал
xls21c.dll - имелось в виду