Представляет собой поле таблицы базы данных в формате DBF. Используется для получения свойств поля.
Полное описание, параметры и ограничения
ПолеXBase (XBaseField)
ПолеXBase (XBaseField)
Доступен, начиная с версии 8.0.
Свойства:
Длина (Length)
Имя (Name)
Тип (Type)
Точность (Precision)
Описание:
Представляет собой поле таблицы базы данных в формате DBF. Используется для получения свойств поля.
Доступность:
Сервер, толстый клиент, внешнее соединение.
См. также:
КоллекцияПолейXBase
КоллекцияПолейXBase, свойство <Имя поля>
КоллекцияПолейXBase, метод Получить
КоллекцияПолейXBase, метод Найти
КоллекцияПолейXBase, метод Индекс
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Прочитать и изменить поле по имени из собственной карты импорта
ПолучитьЗначениеПоля и УстановитьЗначениеПоля позволяют работать без обращения База.QTY. Имя входного столбца заранее сопоставлено известному числовому полю.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте только в учебной базе на сервере. XBase работает с DBF, а не с таблицами вашей информационной базы; доступ к временному каталогу сервера должен быть разрешён.
Код сам создаёт уникальный новый каталог. В нём только собственные goods.dbf и goods.cdx: имена файлов соответствуют ограничению 8.3, имена полей и индексов латинские, не длиннее 10 символов.
Не подставляйте путь к существующему DBF. В каждой задаче новый набор: A-01 / Книга / 3 / 250 и B-02 / Ручка / 1 / 50. Сумма количества на цену равна 800.
Файлы закрываются перед удалением двух точных собственных путей. Пустой уникальный каталог остаётся; его путь выводится, чтобы при необходимости удалить именно его вручную.
УчебныйКаталог = ПолучитьИмяВременногоФайла();
ПроверкаКаталога = Новый Файл(УчебныйКаталог);
Если ПроверкаКаталога.Существует() Тогда
ВызватьИсключение "Учебный путь уже существует; существующие файлы не используем";
КонецЕсли;
СоздатьКаталог(УчебныйКаталог);
Сообщить("Собственный временный каталог: " + УчебныйКаталог);
ИмяDBF = УчебныйКаталог + "/goods.dbf";
ИмяCDX = УчебныйКаталог + "/goods.cdx";
База = Новый XBase;
Попытка
База.Кодировка = КодировкаXBase.ANSI;
База.АвтоСохранение = Ложь;
База.Поля.Добавить("CODE", "S", 10);
База.Поля.Добавить("TITLE", "S", 40);
База.Поля.Добавить("QTY", "N", 9, 0);
База.Поля.Добавить("PRICE", "N", 12, 2);
База.Поля.Добавить("ONDATE", "D");
База.Поля.Добавить("ACTIVE", "L");
База.СоздатьФайл(ИмяDBF);
Если Не База.Открыта() Тогда
ВызватьИсключение "Собственный DBF не открыт";
КонецЕсли;
База.Добавить();
База.CODE = "A-01";
База.TITLE = "Книга";
База.QTY = 3;
База.PRICE = 250;
База.ONDATE = Дата(2026, 10, 3);
База.ACTIVE = Истина;
База.Записать();
База.Добавить();
База.CODE = "B-02";
База.TITLE = "Ручка";
База.QTY = 1;
База.PRICE = 50;
База.ONDATE = Дата(2026, 10, 3);
База.ACTIVE = Истина;
База.Записать();
ИмяПоляКоличества = "QTY";
ОписаниеПоля = База.Поля.Найти(ИмяПоляКоличества);
Если ОписаниеПоля = Неопределено Или ОписаниеПоля.Тип <> "N" Тогда
ВызватьИсключение "Нет ожидаемого числового поля количества";
КонецЕсли;
Если Не База.Перейти(1) Тогда
ВызватьИсключение "Не найдена собственная книга";
КонецЕсли;
КоличествоИзФайла = База.ПолучитьЗначениеПоля(ИмяПоляКоличества);
Сообщить(КоличествоИзФайла = 3);
НовоеКоличество = 4;
Если НовоеКоличество < 0 Или НовоеКоличество <> Цел(НовоеКоличество) Тогда
ВызватьИсключение "Учебное количество должно быть целым неотрицательным";
КонецЕсли;
База.УстановитьЗначениеПоля(ИмяПоляКоличества, НовоеКоличество);
База.Записать();
Сообщить(База.ПолучитьЗначениеПоля(ИмяПоляКоличества) = 4);
Сообщить(База.QTY = 4);
Исключение
Если База.Открыта() Тогда
База.ЗакрытьФайл();
КонецЕсли;
Для Каждого ИмяСобственногоФайла Из СтрРазделить(ИмяDBF + "|" + ИмяCDX, "|") Цикл
СобственныйФайл = Новый Файл(ИмяСобственногоФайла);
Если СобственныйФайл.Существует() Тогда
УдалитьФайлы(ИмяСобственногоФайла);
КонецЕсли;
КонецЦикла;
ВызватьИсключение;
КонецПопытки;
Если База.Открыта() Тогда
База.ЗакрытьФайл();
КонецЕсли;
Для Каждого ИмяСобственногоФайла Из СтрРазделить(ИмяDBF + "|" + ИмяCDX, "|") Цикл
СобственныйФайл = Новый Файл(ИмяСобственногоФайла);
Если СобственныйФайл.Существует() Тогда
УдалитьФайлы(ИмяСобственногоФайла);
КонецЕсли;
КонецЦикла;Разбор по шагам
Создаём собственную структуру DBF и записываем два товара с явным Записать.
Проверяем собственное имя поля и его тип до позиционирования и чтения.
ПолучитьЗначениеПоля по имени возвращает значение текущей строки, не описание поля.
Устанавливаем проверенное число и явно Записать; обычное и динамическое чтение должны совпасть.
Закрываем DBF и удаляем только два собственных файла; информационная база не изменяется.
Как проверить результат
Три сообщения Истина: исходное 3, новое 4 двумя способами.
UNKNOWN и произвольные имена из внешнего JSON не используются как готовый контракт.
Ожидаемый результат
Показана контролируемая карта поля для учебного импорта.
На что обратить внимание
Не запускайте операции изменения, Сжать или ОчиститьФайл на чужом либо рабочем DBF.
Проверка целого числа здесь прикладная; поле N само не означает неотрицательный остаток.
Для настоящего импорта проверяйте также вместимость поля и согласованный смысл единиц измерения.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Проверить структуру DBF перед импортом товаров
Поля описывают схему файла: PRICE имеет 12 позиций, из них две дробные; CODE хранится строкой, дата и булево не являются текстом.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте только в учебной базе на сервере. XBase работает с DBF, а не с таблицами вашей информационной базы; доступ к временному каталогу сервера должен быть разрешён.
Код сам создаёт уникальный новый каталог. В нём только собственные goods.dbf и goods.cdx: имена файлов соответствуют ограничению 8.3, имена полей и индексов латинские, не длиннее 10 символов.
Не подставляйте путь к существующему DBF. В каждой задаче новый набор: A-01 / Книга / 3 / 250 и B-02 / Ручка / 1 / 50. Сумма количества на цену равна 800.
Файлы закрываются перед удалением двух точных собственных путей. Пустой уникальный каталог остаётся; его путь выводится, чтобы при необходимости удалить именно его вручную.
УчебныйКаталог = ПолучитьИмяВременногоФайла();
ПроверкаКаталога = Новый Файл(УчебныйКаталог);
Если ПроверкаКаталога.Существует() Тогда
ВызватьИсключение "Учебный путь уже существует; существующие файлы не используем";
КонецЕсли;
СоздатьКаталог(УчебныйКаталог);
Сообщить("Собственный временный каталог: " + УчебныйКаталог);
ИмяDBF = УчебныйКаталог + "/goods.dbf";
ИмяCDX = УчебныйКаталог + "/goods.cdx";
База = Новый XBase;
Попытка
База.Кодировка = КодировкаXBase.ANSI;
База.АвтоСохранение = Ложь;
База.Поля.Добавить("CODE", "S", 10);
База.Поля.Добавить("TITLE", "S", 40);
База.Поля.Добавить("QTY", "N", 9, 0);
База.Поля.Добавить("PRICE", "N", 12, 2);
База.Поля.Добавить("ONDATE", "D");
База.Поля.Добавить("ACTIVE", "L");
База.СоздатьФайл(ИмяDBF);
Если Не База.Открыта() Тогда
ВызватьИсключение "Собственный DBF не открыт";
КонецЕсли;
База.Добавить();
База.CODE = "A-01";
База.TITLE = "Книга";
База.QTY = 3;
База.PRICE = 250;
База.ONDATE = Дата(2026, 10, 3);
База.ACTIVE = Истина;
База.Записать();
База.Добавить();
База.CODE = "B-02";
База.TITLE = "Ручка";
База.QTY = 1;
База.PRICE = 50;
База.ONDATE = Дата(2026, 10, 3);
База.ACTIVE = Истина;
База.Записать();
Сообщить(База.Поля.Количество() = 6);
Цена = База.Поля.Найти("PRICE");
Если Цена = Неопределено Тогда
ВызватьИсключение "Не найдено учебное поле PRICE";
КонецЕсли;
Сообщить(Цена.Имя = "PRICE");
Сообщить(Цена.Тип = "N");
Сообщить(Цена.Длина = 12);
Сообщить(Цена.Точность = 2);
Сообщить(База.Поля.Индекс(Цена) = 3);
Сообщить(База.Поля.Получить(0).Имя = "CODE");
Сообщить(База.Поля.Найти("ONDATE").Длина = 8);
Сообщить(База.Поля.Найти("ACTIVE").Длина = 1);
Сообщить(База.Поля.Найти("UNKNOWN") = Неопределено);
Исключение
Если База.Открыта() Тогда
База.ЗакрытьФайл();
КонецЕсли;
Для Каждого ИмяСобственногоФайла Из СтрРазделить(ИмяDBF + "|" + ИмяCDX, "|") Цикл
СобственныйФайл = Новый Файл(ИмяСобственногоФайла);
Если СобственныйФайл.Существует() Тогда
УдалитьФайлы(ИмяСобственногоФайла);
КонецЕсли;
КонецЦикла;
ВызватьИсключение;
КонецПопытки;
Если База.Открыта() Тогда
База.ЗакрытьФайл();
КонецЕсли;
Для Каждого ИмяСобственногоФайла Из СтрРазделить(ИмяDBF + "|" + ИмяCDX, "|") Цикл
СобственныйФайл = Новый Файл(ИмяСобственногоФайла);
Если СобственныйФайл.Существует() Тогда
УдалитьФайлы(ИмяСобственногоФайла);
КонецЕсли;
КонецЦикла;Разбор по шагам
Создаём собственную структуру DBF и записываем два товара с явным Записать.
Найти ищет описание поля по имени; отсутствие проверяем до обращения к свойствам.
Индекс PRICE равен 3: коллекция полей начинается с нуля, физические номера записей — с единицы.
Длина числа включает представление целиком, а Точность задаёт дробную часть. Дата DBF занимает 8, булево — 1 позицию.
Закрываем DBF и удаляем только два собственных файла; информационная база не изменяется.
Как проверить результат
Все десять сообщений дают Истина.
UNKNOWN отсутствует: код не обращается к свойствам результата этого поиска.
Ожидаемый результат
Проверены шесть полей собственной схемы, включая размер и точность цены.
На что обратить внимание
Не запускайте операции изменения, Сжать или ОчиститьФайл на чужом либо рабочем DBF.
Не путайте описание ПолеXBase с текущим значением PRICE.
Мемо-поле M платформой не поддерживается; имя поля не может быть русским длинным наименованием.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.