Из txt в базу данных (1С:Предприятие 8.1)
15.07.2009
14:57
#1
"Здравствуйте.
Мне необходимо написать обработку текстового документа с целью занесения его в базу данных в иерархический справочник. Вот часть этого документа:
РАЗДЕЛ C ДОБЫЧА ПОЛЕЗНЫХ ИСКОПАЕМЫХ
Подраздел CA ДОБЫЧА ТОПЛИВНО - ЭНЕРГЕТИЧЕСКИХ ПОЛЕЗНЫХ ИСКОПАЕМЫХ
10 Добыча каменного угля, бурого угля и торфа
10.1 Добыча, обогащение и агломерация каменного угля
10.10 Добыча, обогащение и агломерация каменного угля
10.10.1 Добыча каменного угля
10.10.11 Добыча каменного угля открытым способом
10.10.12 Добыча каменного угля подземным способом
10.10.2 Обогащение и агломерация каменного угля
10.10.21 Обогащение каменного угля
10.10.22 Агломерация каменного угля
10.2 Добыча, обогащение и агломерация бурого угля
10.20 Добыча, обогащение и агломерация бурого угля
10.20.1 Добыча бурого угля (лигнита)
10.20.11 Добыча бурого угля открытым способом
10.20.12 Добыча бурого угля подземным способом
10.20.2 Обогащение и агломерация бурого угля
10.20.21 Обогащение бурого угля
10.20.22 Агломерация бурого угля
10.3 Добыча и агломерация торфа
10.30 Добыча и агломерация торфа
10.30.1 Добыча торфа
10.30.2 Агломерация торфа
11 Добыча сырой нефти и природного газа; предоставление
услуг в этих областях
11.1 Добыча сырой нефти и природного газа
11.10 Добыча сырой нефти и природного газа
11.10.1 Добыча сырой нефти и нефтяного (попутного) газа;
извлечение фракций из нефтяного (попутного) газа
11.10.11 Добыча сырой нефти и нефтяного (попутного) газа
11.10.12 Разделение и извлечение фракций из нефтяного (попутного)
газа
Я знаю как текстовый документ загнать в базу а вот в иерархический справочник дело обстоит сложнее тут мне кажется должны понадобиться двумерные массивы.
Заранее спасибо "
Мне необходимо написать обработку текстового документа с целью занесения его в базу данных в иерархический справочник. Вот часть этого документа:
РАЗДЕЛ C ДОБЫЧА ПОЛЕЗНЫХ ИСКОПАЕМЫХ
Подраздел CA ДОБЫЧА ТОПЛИВНО - ЭНЕРГЕТИЧЕСКИХ ПОЛЕЗНЫХ ИСКОПАЕМЫХ
10 Добыча каменного угля, бурого угля и торфа
10.1 Добыча, обогащение и агломерация каменного угля
10.10 Добыча, обогащение и агломерация каменного угля
10.10.1 Добыча каменного угля
10.10.11 Добыча каменного угля открытым способом
10.10.12 Добыча каменного угля подземным способом
10.10.2 Обогащение и агломерация каменного угля
10.10.21 Обогащение каменного угля
10.10.22 Агломерация каменного угля
10.2 Добыча, обогащение и агломерация бурого угля
10.20 Добыча, обогащение и агломерация бурого угля
10.20.1 Добыча бурого угля (лигнита)
10.20.11 Добыча бурого угля открытым способом
10.20.12 Добыча бурого угля подземным способом
10.20.2 Обогащение и агломерация бурого угля
10.20.21 Обогащение бурого угля
10.20.22 Агломерация бурого угля
10.3 Добыча и агломерация торфа
10.30 Добыча и агломерация торфа
10.30.1 Добыча торфа
10.30.2 Агломерация торфа
11 Добыча сырой нефти и природного газа; предоставление
услуг в этих областях
11.1 Добыча сырой нефти и природного газа
11.10 Добыча сырой нефти и природного газа
11.10.1 Добыча сырой нефти и нефтяного (попутного) газа;
извлечение фракций из нефтяного (попутного) газа
11.10.11 Добыча сырой нефти и нефтяного (попутного) газа
11.10.12 Разделение и извлечение фракций из нефтяного (попутного)
газа
Я знаю как текстовый документ загнать в базу а вот в иерархический справочник дело обстоит сложнее тут мне кажется должны понадобиться двумерные массивы.
Заранее спасибо "
15.07.2009
15:02
#2
Воспользуйтесь ДеревомЗначений. Сначала в него, а потом на его основании создайте справочник.
16.07.2009
08:22
#3
Если можно разобрать иерархию, то какая разница сразу справочник заполнять или сначала дерево заполнять?
16.07.2009
08:35
#4
"Думаю, что можно "плясать" от длины кода, если структура всегда укладывается в рамки шаблона "99.99.99.99". Т.е. проверяеть
ТекКод = <получаем код из строки текста>;
ДлинаКода = СтрДлина(ТекКод);
ШаблонИерархии = Новый Структура("1,2,3", "2,5,8");
Если ДлинаКода <= 2 Тогда
Уровень = 0;
ИначеЕсли ДлинаКода > 2 И ДлинаКода < 5 Тогда
Уровень = 1;
ИначеЕсли ДлинаКода > 5 И ДлинаКода < 7 Тогда
Уровень = 2;
/// и так далее
потом
Если Уровень > 0 Тогда
ДлинаКодаРодителя = ШаблонИерархии[Уровень];
ТекРодитель = Справочники.МойСпр.НайтиПоКоду(Лев(ТекКод, ДлинаКодаРодителя));
Иначе
ТекРодитель = Справочники.МойСпр.Пустая();
КонецЕсли;
НовСпр = Справочники.МойСпр.Добавить();
НовСпр.Код = ТекКод;
НовСпр.Наименование = <...>;
НовСпр.Родитель = ТекРодитель;
НовСпр.Записать();"
ТекКод = <получаем код из строки текста>;
ДлинаКода = СтрДлина(ТекКод);
ШаблонИерархии = Новый Структура("1,2,3", "2,5,8");
Если ДлинаКода <= 2 Тогда
Уровень = 0;
ИначеЕсли ДлинаКода > 2 И ДлинаКода < 5 Тогда
Уровень = 1;
ИначеЕсли ДлинаКода > 5 И ДлинаКода < 7 Тогда
Уровень = 2;
/// и так далее
потом
Если Уровень > 0 Тогда
ДлинаКодаРодителя = ШаблонИерархии[Уровень];
ТекРодитель = Справочники.МойСпр.НайтиПоКоду(Лев(ТекКод, ДлинаКодаРодителя));
Иначе
ТекРодитель = Справочники.МойСпр.Пустая();
КонецЕсли;
НовСпр = Справочники.МойСпр.Добавить();
НовСпр.Код = ТекКод;
НовСпр.Наименование = <...>;
НовСпр.Родитель = ТекРодитель;
НовСпр.Записать();"
Читают тему
(гостей: 1)