1С:ПРЕДПРИЯТИЕ - Связь с другими базами данных
ЯНГДЮМХЕ ДНЙСЛЕМРНБ НМКЮИМ
дНЙСЛЕМРШ Х АКЮМЙХ НМКЮИМ

нАЯКЕДНБЮРЭ

Администрация
Механический Электроника
биологии
география
дом в саду
история
литература
маркетинг
математике
медицина
музыка
образование
психология
разное
художественная культура
экономика Сельское хозяйство Строительство архитектура Финансы бизнес бухгалтерский учет одежда справедливость страхование торговля




















































1С:ПРЕДПРИЯТИЕ - Связь с другими базами данных

экономика


Отправить его в другом документе Tab для Yahoo книги - конечно, эссе, очерк Hits: 804


ДРУГИЕ ДОКУМЕНТЫ

монополия
Функции ЦБ
Стоимость жизни и уровень потребления населения
Производственный коллектив предприятия
Основные методы антиинфляционной политики и денежная реформа
Экономический
Анализ эффективности капитальных и финансовых вложений
АНАЛИЗ ФИНАНСОВОГО CОСТОЯНИЯ - ТОО ⌠РУССКИЙ ИНВЕСТИЦИОННЫЙ ДОМ■
ФУНКЦИОНИРОВАНИЕ - организациями
Источники инвестиций
 

1С:ПРЕДПРИЯТИЕ - Связь с другими базами данных

12.1. Загрузка и выгрузка через текстовый файл с помощью служебного объекта Текст

Текст модуля обработки выгрузки в текстовый файл справочника ╚Оборудование╩.

Метод ВыбратьФайл(<ТипДиалога>,<ИмяФайла>,<ИмяНачКаталога>,

<ЗаголовокОкна>,<Фильтр>,<Расширение>,<Таймаут>) открывает окно диалога выбора/сохранения файла.

Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена', 1 - если нажата кнопка 'ОК'. <ТипДиалога> : 0 - диалог типа <открыть>, 1 - диалог типа <сохранить>;

<Имяфайла> - переменная, содержащая на входе строку с именем файла, а на выходе - имя выбранного файла;

<ИмяНачКаталога> - переменная, содержащая на входе строку с начальным каталогом, а на выходе -имя выбранного каталога; <ЗаголовокОкна> - строка с заголовком окна;

══ ══<фильтр> - строка с фильтром отбора файлов (например: 'Все файлы (*.*) [*.*'); <Расширение> - строка с расширением файла по умолчанию;



<Таймаут> - время ожидания отклика пользователя в секундах (необязателен).

Процедура Сформировать()

Перем ИмяФайла,ИмяКаталога;

Спр=СоздатьОбъект("Справочник.Оброрудование");

ТекстВыгрузки=Создать0бъект("Текст");

Спр.ВыбратьЭлементы();

Пока Спр.ПолучитьЭлемент()=1 Цикл

Если Спр.ЭтоГруппа()=1 Тогда

ТекстВыгрузки.ДобавитьСтроку("Г"+

Спр.Наименование+"#"+Спр.ГрЦека+"#");

Иначе

ТекстВыгрузки.ДобавитьСтроку(""+Спр.Уровень()+Спр.Наименование+

"#"+Спр.Цена.Получить(РабочаяДата())+"#"+Спр.КоэффАморт+"#");

КонецЕсли;

КонецЦикла;

ФС.ВыбратьФайл(1,ИмяФайла,ИмяКаталога,"Файл выгрузки",

"Файлы выгрузки(*.txt) | *.txt","*.txt") ;

ТекстВыгрузки.Записать(ИмяКаталога+ИмяФайла); КонецПроцедуры

Процедура ПриОткрытии()


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

Сформировать();

// Чтобы интерактивная форма не открывалась СтатусВозврата(0);

Возврат;

КонецПроцедуры

Текст модуля обработки загрузки из текстового файла. Справочник ╚Загрузка╩ должен иметь реквизиты ╚ГрЦена╩, ╚Цена╩, ╚КоэффАморт╩ такие же, как в справочнике ╚Оборудование╩.

Обратите внимание на алгоритм загрузки элемента справочника в определенную группу (используется переменная модуля ╚Группа╩) и на алгоритм последовательного ╚обрезания╩ строк текстового файла.

Метод Лев(<Строка>,<Число>) возвращает строку, содержащую первые (самые левые) символы текстовой строки.

<Строка> - строка, содержащая извлекаемые символы;

<Число> - количество символов, которое должна вернуть функция.

Метод Прав(<Строка>,<Число>) возвращает строку, содержащую последние (самые правые) символы текстовой строки.

<Строка> - строка, содержащая извлекаемые символы;

<Число> - количество символов, которое должна вернуть функция.

Метод Сред(<Строка>,<Число1>,<Число2>) возвращает подстроку исходной строки, заданную номером позиции и числом символов. <Строка> - строка, содержащая извлекаемые символы;

<Число1> - определяет позицию первого символа, извлекаемого из строки (начиная с 1);

<Число2> - количество символов, которое должна вернуть функция (если опущен, то до конца строки).

Метод НаЙти(<Строка1>,<Строка2>) возвращает позицию первого вхождения в строку поиска заданной подстроки.

<Строка1> - строка в которой ищем (место поиска);

<Строка2> - строка которую ищем (шаблон поиска). Если не находит - возвращает число 0. Первая позиция имеет индекс 1.

Метод СтрДлина(<Строка>) возвращает длину строки.

<Строка> - строковое выражение.

Метод ИспользоватьДату(<Дата>,<УстСразу>) позволяет установить дату выборки периодических реквизитов справочника. Возвращает текущее значение используемой даты (на момент до исполнения метода). <Дата> - значение типа дата.

<УстСразу> - необязательный параметр. Число: если 1, то дата, переданная в качестве параметра, будет установлена уже в текущей выборке; если 0 - то дата, переданная в качестве параметра, будет установлена при следующем открытии выборки. Значение по умолчанию - 0.

Если к объекту применен метод ИспользоватьДату, то нельзя применять к этому же объекту метод Получить. Метод нельзя использовать через две точки.

Перем Группа; //__________________________________________________________________________

Функция Проверка(Пар)

Пров=Создать0бъект("Справочник.Загрузка");

Возврат Пров.НайтиПоНаименованию(пар,0,1);

КонецФункции //Проверка //___________________________________________________________________________


XII. Связь с другими базами данных_____________________________________________ 199

Функция Обрез(С,Ф)

С=Прав (С,СтрДлина (С)-Ф) ;

Ф=Найти(С,"#");

Возврат Лев(С,Ф-1) ;

КонецФункции //Обрез

Процедура Сформировать()

Перем ИмяФайла,ИмяКаталога; спр=СоздатьОбъект("Справочник.Загрузка");

// Назначить дату записи периодических реквизитов

Спр.ИспользоватьДату(РабочаяДата());

ТекстЗагрузки=Создать0бъект("Текст");

ФС.ВыбратьФайл(0,ИмяФайла,ИмяКаталога,"Файл выгрузки",

"Файлы выгрузки(*.txt) | *.txt","*.txt");

ТекстЗагрузки.Открыть(ИмяКаталога+ИмяФайла);

Для н=1 по ТекстЗагрузки.КоличествоСтрок() Цикл

Стр= ТекстЗагрузки.ПолучитьСтроку(Н);

Если Лев(Стр,1)="Г" Тогда

Спр.НоваяГруппа();

Фл=Найти(Стр,"#");

Спр.Наименование=Сред(Стр,2,Фл-2);

Стр=Прав(Стр,СтрДлина(Стр)-Фл);

Фл=Найти(Стр,"#");

Спр.ГрЦена=0брез(Стр,Фл);

Если Проверка(Спр.Наименование)=0 Тогда

Спр.Записать();

КонецЕсли;

Группа=Спр.ТекущийЭлемент();

Иначе

Если Число(Лев(Стр,1))>1 Тогда

Спр. ИспользоватьРодителя (Группа);

Иначе

Спр.ИспользоватьРодителя

(ПолучитьПустоеЗначение("Справочник.Загрузка"));


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

КонецЕсли;

Спр.Новый();

Фл =Найти(Стр,"#");

Спр.Наименование=Сред(Стр,2,Фл-2);



Стр=Прав(Стр,СтрДлина(Стр)-Фл);

Фл=Найти(Стр,"#");

Спр.Цена=Число(Обрез(Стр,Фл));

Спр.КоэффАморт=Число(Обрез(Стр.Фл));

Если Проверка(Спр.Наименование)=0 Тогда

Спр.Записать();

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецПроцедуры

Процедура ПриОткрытии()

Сформировать();

СтатусВозврата(0);

Возврат;

КонецПроцедуры

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

Возврат; КонецПроцедуры