Загрузка из текстового файла
31.10.2005
15:01
#1
Помогите, пож-та. Есть данные в текстовом формате, их надо загрузить в 1С в справочник. Подскажите пожалуйста код обработки.
02.11.2005
17:51
#3
В каком формате текствоый файл? Что-ть типа "Код-Наименование-Цена". Если можно - пример строки с комментариями о значениях. Дело в том, что создать универсальную обработку загрузки создать достаточно сложно - приходится каждый раз затачивать под ситуацию.
03.11.2005
08:54
#4
Что-то вроде:
Лиц. счет, ФИО, Адрес, Сальдо входящее, начислено, оплачено, Сальдо исходящее. И дальше идут значения, как в таблице. После определенного числа строк шапка повторяется.
Лиц. счет, ФИО, Адрес, Сальдо входящее, начислено, оплачено, Сальдо исходящее. И дальше идут значения, как в таблице. После определенного числа строк шапка повторяется.
09.11.2005
16:17
#5
Можно написать обработку по загрузке этих данных. Или самому, или обратиться к спецам.
10.11.2005
06:18
#6
Из текстового файла грузить просто. Хотя в виду того, что для каждого сотрудника довольно много данных идёт, то для такого случая было бы лучше использовать XML.
10.11.2005
11:18
#9
"Да очень просто.
Если нужно просто перекинуть данные откуда-то куда-то, то для того, что бы не ломать голову делаем всё просто.
Пробежимся по справочнику "сотрудники" и выгрузим от туда чЯго-нить
ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll");
хмл = СоздатьОбъект("AddIn.XMLParser");
спр = СОздатьОбъект("Справочник.Сотрудники");
док = хмл.СоздатьДокумент();
данные = док.СоздатьПодчиненныйЭлемент("Сотрудники");
спр.ВыбратьЭлементы();
Пока спр.ПолучитьЭлемент() = 1 цикл
Если спр.ТекущийЭлемент().ЭтоГруппа() = 1 тогда продолжить; КонецЕсли;
имя_узла = стрзаменить(строка(спр.ТекущийЭлемент()), " ", "_");
сотр = данные.СоздатьПодчиненныйЭлемент(имя_узла);
сотр.УстановитьАтрибут("дата_рождения", строка(спр.ТекущийЭлемент().ДатаРождения));
сотр.УстановитьАтрибут("Должность", спр.ТекущийЭлемент().Должность);
// .... Тут добавляем всё, что нам нужно
КонецЦикла;
док.Записать("C:\my_xml.xml");
Теперь читаем всё, что там записано в файле
док = хмл.СоздатьДокумент();
док.Загрузить("C:\my_xml.xml");
данные = док.ВыбратьУзел("Сотрудники");
для й = 1 по данные.КоличествоПодчиненных() цикл
сотр = данные.ПолучитьПодчиненныйПоНомеру(й);
стр = стрзаменить(сотр.Наименование, "_", " ") + " ";
стр = стр + сотр.ПолучитьАтрибут("дата_рождения");
стр = стр + " " + сотр.ПолучитьАтрибут("Должность");
Сообщить(стр);
конеццикла;
Думаю, что должно стать понятным как всё организовывается.
Преимущество перед текстовым вариантом в том, что уже готов парсер - не надо самому производить разбивку текста на токены (слова) и вытаскивать что тебе нужно.
достаточно написать ПолучитьАтрибут("имя атрибута") и всё.
"
Если нужно просто перекинуть данные откуда-то куда-то, то для того, что бы не ломать голову делаем всё просто.
Пробежимся по справочнику "сотрудники" и выгрузим от туда чЯго-нить
ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll");
хмл = СоздатьОбъект("AddIn.XMLParser");
спр = СОздатьОбъект("Справочник.Сотрудники");
док = хмл.СоздатьДокумент();
данные = док.СоздатьПодчиненныйЭлемент("Сотрудники");
спр.ВыбратьЭлементы();
Пока спр.ПолучитьЭлемент() = 1 цикл
Если спр.ТекущийЭлемент().ЭтоГруппа() = 1 тогда продолжить; КонецЕсли;
имя_узла = стрзаменить(строка(спр.ТекущийЭлемент()), " ", "_");
сотр = данные.СоздатьПодчиненныйЭлемент(имя_узла);
сотр.УстановитьАтрибут("дата_рождения", строка(спр.ТекущийЭлемент().ДатаРождения));
сотр.УстановитьАтрибут("Должность", спр.ТекущийЭлемент().Должность);
// .... Тут добавляем всё, что нам нужно
КонецЦикла;
док.Записать("C:\my_xml.xml");
Теперь читаем всё, что там записано в файле
док = хмл.СоздатьДокумент();
док.Загрузить("C:\my_xml.xml");
данные = док.ВыбратьУзел("Сотрудники");
для й = 1 по данные.КоличествоПодчиненных() цикл
сотр = данные.ПолучитьПодчиненныйПоНомеру(й);
стр = стрзаменить(сотр.Наименование, "_", " ") + " ";
стр = стр + сотр.ПолучитьАтрибут("дата_рождения");
стр = стр + " " + сотр.ПолучитьАтрибут("Должность");
Сообщить(стр);
конеццикла;
Думаю, что должно стать понятным как всё организовывается.
Преимущество перед текстовым вариантом в том, что уже готов парсер - не надо самому производить разбивку текста на токены (слова) и вытаскивать что тебе нужно.
достаточно написать ПолучитьАтрибут("имя атрибута") и всё.
"
Читают тему
(гостей: 1)