1С Предприятие. Практика программирования на платформе v7

Загрузка и выгрузка через файл формата 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


Содержание раздела