Загрузка и выгрузка через файл формата dBase с помощью служебного объекта Xbase
Текст модуля обработки выгрузки в файл справочника «Оборудование».
Метод АвтоСохранение(<Режим>)позволяет установить режим автоматического сохранения изменений в базе. Возвращает текущее числовое значение режима автоматического сохранения изменений в базе (на момент до исполнения метода) <Режим> - выражение: 1 - задает режим автоматического сохранения изменений в базе, 0 - снимает (по умолчанию - 0)
//**********************************************
Процедура Сформировать()
Перем Имяф,ИмяК;
ДБ=Создать0бъект("XBase");
ДБ.ДобавитьПоле("Соdе" , 2 ,10 ,); //"", 10 ,
ДБ.ДобавитьПоле("Descr",2 , 25 , ) ;
ДБ.ДобавитьПоле("Асс",1,10,2) ;
ДБ.ДобавитьПоле("Gr" , 2 , 2 5 , ) ;
ДБ.ДобавитьПоле("GGr",1,1,0) ;
XII. Связь с другими базами данных_____________________________________________ 201
ФС.ВыбратьФайл(1,Имяф,ИмяК,
"Сохраните файл","Файл БД (*.dbf) | *.dbf","*.dbf");
ДБ.СоздатьФайл(Имяф,ИмяК);
ДБ.СоздатьИндексныйФайл(Лев(Имяф,СтрДлина(Имяф)-3)+"cdx"); 0б=Создать0бъект("Справочник.Оборудование") ; ДБ.АвтоСохранение(1) ;
Об.ИспользоватьДату(ТекущаяДата());
Об.ВыбратьЭлементы();
Пока Об.ПолучитьЭлемент()=1 Цикл
ДБ.Добавить();
ДБ.Code=06.Koд;
Если Об.ЭтоГруппа()=1 Тогда
ДБ.Асс=0;
ДБ.GGr=i;
ДБ.Descr=06.Наименование+"V";
Иначе
ДБ.Descr=Об.Наименование;
ДБ.Асс=Об.Цена;
ДБ.GGr=0;
Если Об.Уровень()>1 Тогда
ДБ.Gr=Oб.Родитель. Наименование+''V" ;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Дб.Записать();
//!!!!! Записать последнюю запись
Дб.ЗакрытьФайл();
КонецПроцедуры
Процедура ПриОткрытии()
Сформировать();
СтатусВозврата(0);
Возврат;
КонецПроцедуры
Текст модуля обработки загрузки справочника «Оборудование» из файла. Добавляет записи в существующий справочник «Оборудование».
202______________________ 1С:Предприятие. Практика программирования на платформе V7
Метод Первая() позволяет перейти на первую запись. Возвращает:1 - если действие выполнено; 0 - если действие не выполнено.
Метод Следующая() позволяет перейти на следующую запись. Возвращает: 1 - если получена следующая запись; 0 - иначе.
Перем ДБ,Об;
Процедура ЗаписьЭлемента()
Если ДБ.GGR=1 Тогда
Об.НоваяГруппа(); Об.Наименование=ДБ.DESCR;
ИначеЕсли Дб.GR<>ПолучитьПустоеЗначение() Тогда Об.НайтиПоНаименованию(Дб.GR,0,1); Об.ИспользоватьРодителя(Об.ТекущийЭлемент()); Об.Новый ();
Об.Наименование=ДБ.DESCR; Об.Цена= ДБ.АСС; КонецЕсли; Об.Записать();
КонецПроцедуры //ЗаписьЭлемента //__________________________________________________________________________
Процедура Загрузить()
Перем Имяф,ИмяК;
ДБ=Создать0бъект("XBase");
ФС.ВыбратьФайл(0,Имяф,ИмяК, "Сохраните файл","Файл БД (V*.dbf) | *.dbf");
Дб.ОткрытьФайл(Имяф,Лев(Имяф,СтрДлина(Имяф)-3) +"cdx" , 0) ;
Если Дб.Открыта()=0 Тогда
Предупреждение("База не открыта!"); Возврат;
КонецЕсли;
0б=Создать0бъект("Справочник.Оборудование");
Об.ИспользоватьДату(ТекущаяДата());
Если Дб.Первая()=1 Тогда ЗаписьЭлемента();
Иначе
XII. Связь с другими базами данных_____________________________________________ 203
Возврат;
КонецЕсли;
Пока Дб.Следующая()=1 Цикл ЗаписьЭлемента();
КонецЦикла;
Дб.ЗакрытьФайл();
ОткрытьФорму("Справочник.Оборудование.ФормаСписка",); КонецПроцедуры Процедура ПриОткрытии()
Загрузить();
СтатусВозврата(0);
Возврат; КонецПроцедуры
204______________________ 1С:Предприятие. Практика программирования на платформе V7