helpf.pro
Регистрация
 0 
Распечатать

1С 8.2 УП : ДБФ, работа с Индекс, Ключ

Код 1C v 8.х
 ФайлНаДиске = Новый Файл(ИмяФайла);
Если НЕ(ФайлНаДиске.Существует()) Тогда
Предупреждение("Файл с таким именем не существует " + ИмяФайла);
Возврат;
КонецЕсли;

ДБФ = Новый xBase;
ДБФ.Кодировка = КодировкаXBase.OEM;
ДБФ.ОткрытьФайл(ИмяФайла);
Если ДБФ.Открыта() = 0 Тогда
Предупреждение("Неудалось открыть файл. Возможно он занят другим приложением!");
Возврат;
КонецЕсли;

ДБФ.Индексы.Добавить("IDX_vE","VAL(EXTENSION)",Ложь,Ложь,"PREFLEN1>0");
ДБФ.СоздатьИндексныйФайл(ИмяИндекса);
ДБФ.ТекущийИндекс = ДБФ.Индексы.IDX_vE;

ДБФ.Ключ.EXTENSION = "1002";
Если ДБФ.НайтиПоКлючу("=") = Истина Тогда
ТекЗапись=ДБФ.НомерЗаписи();
Пока СокрЛП(ДБФ.EXTENSION) = "1002" Цикл
Сообщить("-" + ДБФ.EXTENSION + " - " + ДБФ.НомерЗаписи() + "-");
ДБФ.Следующая();
КонецЦикла;
Иначе
Сообщить("Нет записи!");
КонецЕсли;

ДБФ.ЗакрытьФайл();
УдалитьФайлы(ИмяИндекса);


Код 1C v 8.х
 // Перекачка справочника "Подразделение" в DBF-файле

ФайлБД=КаталогИмя+"Spr_podr."; // Название файла без расширения
xБД=Новый Файл(ФайлБД+"dbf"); // Создание объекта файла в среде 1С

// Удалить, если файлы уже есть (в том числе и индексный файл)
Если xБД.Существует() Тогда
УдалитьФайлы(ФайлБД,"*");
КонецЕсли;

// Создание файлов
xБД = Новый XBase; // создание объекта файла формата xBase
// добавим поля
xБД.Поля.Добавить("Id", "S", 5);
xБД.Поля.Добавить("Name", "S", 25);
xБД.СоздатьФайл(ФайлБД+"dbf"); // создадим реальный файл из объекта
// Индексное выражение
ИндВр="Id";
xБД.индексы.Добавить("Id",ИндВр,Истина);
ИБД = xБД.СоздатьИндексныйФайл(ФайлБД+"cdx"); // создание индексного файла
xБД.АвтоСохранение=Истина;
xБД.ЗакрытьФайл();

// Выкачка данных
xБД.ОткрытьФайл(ФайлБД+"dbf",ФайлБД+"cdx");
xБД.ТекущийИндекс = xБД.индексы.Id;
Выборка=Справочники.Подразделения.Выбрать();
Пока Выборка.Следующий() Цикл
xБД.Добавить();
xБД.ID=Выборка.Код;
xБД.Name=Выборка.Наименование;
xБД.Записать();
КонецЦикла;
xБД.ЗакрытьФайл();

// проверка работы индекса
xБД.ОткрытьФайл(ФайлБД+"dbf",ФайлБД+"cdx");
xБД.ТекущийИндекс = xБД.индексы.Id;
Если xБД.Найти("00003",">=") Тогда
Сообщить(xБД.ID+" - "+xБД.NAME);
Пока xБД.Следующая() Цикл
Сообщить(xБД.ID+" - "+xБД.NAME);
КонецЦикла;
КонецЕсли;
xБД.ЗакрытьФайл();
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 16517
 0 
Распечатать
Возможно, вас также заинтересует
10060 (0x0000274C): Попытка установить соединение была безуспешной 0
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через...
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 10
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно...
1C и Google Maps 12
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во...
1C медленно работает по сети с базой на SQL Server 12
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для...
1С Предприятие что это? 8
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который...
Посмотреть все результаты поиска похожих
Комментарии
kbgeka
28.06.2017 15:08Комментарий: 1
kbgeka

Обмен через DBF, наверно, еще долго будет актуален. Кроме объекта xBase можно использовать подключение через ADO. Интересно, насколько будет различаться скорость.

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.