Как прочитать записи файла в формате dbf из 1С 8.3, 8.2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
&НаКлиенте Процедура КакПрочитатьЗаписиФайлаВФорматеDBFНаКлиенте(ПутьКФайлуDBF) Tablica = Новый XBase; Tablica.ОткрытьФайл( ПутьКФайлуDBF, // путь к базе , // путь к индексу Истина // только чтение ); Сообщить("В таблице " + Tablica.КоличествоЗаписей() + " записей."); Сообщить("Tablica имеет кодировку: " + Tablica.Кодировка); Tablica.Первая(); // перешли к первой записи Пока Не Tablica.ВКонце() Цикл Если Не Tablica.ЗаписьУдалена() Тогда Сообщить( Строка(Tablica.EMPLOYEEID) + " " + Tablica.LASTNAME + " " + Tablica.TITLE + " " + Tablica.ADDRESS ); КонецЕсли; Tablica.Следующая(); // переходим к следующей записи КонецЦикла; Tablica.ЗакрытьФайл(); КонецПроцедуры |
Как найти нужную запись в файле в формате dbf из 1С 8.3, 8.2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
&НаКлиенте Процедура КакНайтиНужнуюЗаписьВФайлеВФорматеDBFНаКлиенте(ПутьКФайлуDBF) // Файлы dbf могут быть очень большими и содержать сотни // тысяч записей. В этом случае полный перебор всех записей, // чтобы найти одну - не очень хорошая идея. Tablica = Новый XBase; Tablica.ОткрытьФайл( ПутьКФайлуDBF, // путь к базе , // путь к индексу Ложь // открываем на запись ); // Но для того, чтобы искать по ключу - нужен индексный файл, // включающий нужные нам поля. Если бы этот файл уже был у нас, // то мы бы передали его при открытии файла вышле, но у нас его // нет, а потому - займёмся его созданием. // создадим индекс только по полю EMPLOYEEID Tablica.Индексы.Добавить( "INDEX_EMPLOYEEID", // имя индекса "EMPLOYEEID", // выражение индекса Истина // уникальность создаваемого индекса ); Katalog = КаталогДокументов() + "\KatalogDop"; СоздатьКаталог(Katalog); ПутьКФайлуИндекса = Katalog + "\test.cdx"; Tablica.СоздатьИндексныйФайл(ПутьКФайлуИндекса); Tablica.ЗакрытьФайл(); // Заново открываем таблицу, уже на чтение и с индексным файлом, // который мы только что создали. Tablica = Новый XBase; Tablica.ОткрытьФайл( ПутьКФайлуDBF, // путь к базе ПутьКФайлуИндекса, // путь к индексу Истина // только чтение ); // Найдём среди записей ту, у которой поле EMPLOYEEID равно 3. // В таблице всего один индекс INDEX_EMPLOYEEID. Tablica.ТекущийИндекс = Tablica.Индексы.Получить(0); Tablica.Ключ.EMPLOYEEID = "3"; ЗаписьНайдена = Tablica.НайтиПоКлючу("="); Если ЗаписьНайдена Тогда Сообщить("Запись найдена"); Сообщить( Строка(Tablica.EMPLOYEEID) + " " + Tablica.LASTNAME + " " + Tablica.TITLE + " " + Tablica.ADDRESS ); Иначе Сообщить("Запись не найдена"); КонецЕсли; Tablica.ЗакрытьФайл(); КонецПроцедуры |
Как добавить новые записи в уже существующий файл в формате dbf из 1С 8.3, 8.2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
&НаКлиенте Процедура КакДобавитьНовыеЗаписиВФайлВФорматеDBFНаКлиенте(ПутьКФайлуDBF) // Добавим в уже знакомый нам test.dbf 2 новые записи о работниках. Tablica = Новый XBase; Tablica.ОткрытьФайл( ПутьКФайлуDBF, // путь к базе , // путь к индексу Ложь // открываем на запись ); Tablica.Добавить(); Tablica.EMPLOYEEID = "200"; Tablica.LASTNAME = "Петров"; Tablica.TITLE = "Инженер"; Tablica.ADDRESS = "Москва"; Tablica.Записать(); Tablica.Добавить(); Tablica.EMPLOYEEID = "201"; Tablica.LASTNAME = "Петрова"; Tablica.TITLE = "Фармацевт"; Tablica.ADDRESS = "Москва"; Tablica.Записать(); Tablica.ЗакрытьФайл(); КонецПроцедуры |
Как удалить определенные записи в файле в формате dbf из 1С 8.3, 8.2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
&НаКлиенте Процедура КакУдалитьОпределенныеЗаписиИзФайлаВФорматеDBFНаКлиенте(ПутьКФайлуDBF) // Удалим записи с LASTNAME Петров и Петрова Tablica = Новый XBase; Tablica.ОткрытьФайл( ПутьКФайлуDBF, // путь к базе , // путь к индексу Ложь // открываем на запись ); Tablica.Первая(); Пока Не Tablica.ВКонце() Цикл Если СокрЛП(Tablica.LASTNAME) = "Петров" Или СокрЛП(Tablica.LASTNAME) = "Петрова" Тогда Tablica.Удалить(); КонецЕсли; Tablica.Следующая(); КонецЦикла; // Но Удалить() только ставит пометку на // удаление, а чтобы реально удалить помеченные // на удаление записи нужно вызвать метод Сжать(). Tablica.Сжать(); Tablica.ЗакрытьФайл(); КонецПроцедуры |
Как создать файл в формате dbf с нужными полями из 1С 8.3, 8.2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
&НаКлиенте Процедура КакСоздатьФайлВФорматеDBFНаКлиенте() НоваяTablica = Новый XBase; НоваяTablica.Кодировка = КодировкаXBase.ANSI; // Описываем колонки таблицы. НоваяTablica.Поля.Добавить( "FIRSTNAME", // имя колонки "S", // тип 200, // длина ); НоваяTablica.Поля.Добавить( "AGE", "N", 10, 0 // точность ) ; // Типы ещё бывают: // N - число // S - строка // D - дата // L - булево // F - число Katalog = КаталогДокументов() + "\KatalogDop"; СоздатьКаталог(Katalog); ПутьКНовомуDBF = Katalog + "\new.dbf"; НоваяTablica.СоздатьФайл( ПутьКНовомуDBF, // путь к базе // путь к индексу ); НоваяTablica.ЗакрытьФайл(); Сообщить("Новый файл создан в '" + ПутьКНовомуDBF + "'."); // И уже теперь можем его открыть и добавить данные. Tablica = Новый XBase; Tablica.ОткрытьФайл( ПутьКНовомуDBF, // путь к базе , // путь к индексу Ложь // открываем на запись ); Tablica.Добавить(); Tablica.FIRSTNAME = "Сергей"; Tablica.AGE = 31; Tablica.Записать(); Tablica.Добавить(); Tablica.FIRSTNAME = "Наталья"; Tablica.AGE = 24; Tablica.Записать(); Tablica.ЗакрытьФайл(); КонецПроцедуры |