XBase.Перейти

Методы · GoTo

Переходит на запись по ее физическому порядковому номеру в таблице базы данных.

Синтаксис

Перейти(<НомерЗаписи>)

Примеры платформы

xB.Перейти(НомерЗаписи);
Полное описание, параметры и ограничения

XBase.Перейти (XBase.GoTo)

XBase (XBase)

Перейти (GoTo)

Доступен, начиная с версии 8.0.

Синтаксис:
Перейти(<НомерЗаписи>)
Параметры:

<НомерЗаписи> (обязательный)
Тип: Число.
Физический порядковый номер записи в базе данных.
Возвращаемое значение:
Тип: Булево.
Истина - получена искомая запись; Ложь - в противном случае.
Описание:

Переходит на запись по ее физическому порядковому номеру в таблице базы данных.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.

Примечание:
Позволяет перейти на запись, помеченную удаленной, даже если не установлен режим просмотра удаленных записей.
Пример:

xB.Перейти(НомерЗаписи);

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Отменить автосохранение случайного количества

При автосохранении смена текущей записи записывает буфер. Отменить предотвращает именно эту запись, не отменяет все прежние изменения файла.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Запускайте только в учебной базе на сервере. XBase работает с DBF, а не с таблицами вашей информационной базы; доступ к временному каталогу сервера должен быть разрешён.

  2. Код сам создаёт уникальный новый каталог. В нём только собственные goods.dbf и goods.cdx: имена файлов соответствуют ограничению 8.3, имена полей и индексов латинские, не длиннее 10 символов.

  3. Не подставляйте путь к существующему DBF. В каждой задаче новый набор: A-01 / Книга / 3 / 250 и B-02 / Ручка / 1 / 50. Сумма количества на цену равна 800.

  4. Файлы закрываются перед удалением двух точных собственных путей. Пустой уникальный каталог остаётся; его путь выводится, чтобы при необходимости удалить именно его вручную.

УчебныйКаталог = ПолучитьИмяВременногоФайла();
ПроверкаКаталога = Новый Файл(УчебныйКаталог);
Если ПроверкаКаталога.Существует() Тогда
    ВызватьИсключение "Учебный путь уже существует; существующие файлы не используем";
КонецЕсли;
СоздатьКаталог(УчебныйКаталог);
Сообщить("Собственный временный каталог: " + УчебныйКаталог);
Имя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 = Истина;
    База.Записать();
    База.АвтоСохранение = Истина;
    Если Не База.Перейти(1) Тогда
        ВызватьИсключение "Не найдена собственная книга";
    КонецЕсли;
    База.QTY = 99;
    База.Отменить();
    Если Не База.Перейти(2) Или Не База.Перейти(1) Тогда
        ВызватьИсключение "Не выполнен переход после отмены";
    КонецЕсли;
    Сообщить(База.QTY = 3);
    База.QTY = 4;
    Если Не База.Перейти(2) Или Не База.Перейти(1) Тогда
        ВызватьИсключение "Не выполнен переход с автосохранением";
    КонецЕсли;
    Сообщить(База.QTY = 4);
    База.АвтоСохранение = Ложь;
Исключение
    Если База.Открыта() Тогда
        База.ЗакрытьФайл();
    КонецЕсли;
    Для Каждого ИмяСобственногоФайла Из СтрРазделить(ИмяDBF + "|" + ИмяCDX, "|") Цикл
        СобственныйФайл = Новый Файл(ИмяСобственногоФайла);
        Если СобственныйФайл.Существует() Тогда
            УдалитьФайлы(ИмяСобственногоФайла);
        КонецЕсли;
    КонецЦикла;
    ВызватьИсключение;
КонецПопытки;
Если База.Открыта() Тогда
    База.ЗакрытьФайл();
КонецЕсли;
Для Каждого ИмяСобственногоФайла Из СтрРазделить(ИмяDBF + "|" + ИмяCDX, "|") Цикл
    СобственныйФайл = Новый Файл(ИмяСобственногоФайла);
    Если СобственныйФайл.Существует() Тогда
        УдалитьФайлы(ИмяСобственногоФайла);
    КонецЕсли;
КонецЦикла;

Разбор по шагам

  1. Создаём собственную структуру DBF и записываем два товара с явным Записать.

  2. Включаем автосохранение только в собственном DBF.

  3. 99 — пробная ошибочная правка. Отменить до перехода не даёт сохранить её.

  4. Затем 4 меняем без отмены: переход сохраняет значение. В конце возвращаем режим Ложь.

  5. Закрываем DBF и удаляем только два собственных файла; информационная база не изменяется.

Как проверить результат

  1. Два сравнения Истина: сначала снова 3, затем сохранённое 4.

  2. Старое ошибочное 99 не записано; никакая транзакция информационной базы не открывалась.

Ожидаемый результат

Показан момент записи при перемещении и узкая область действия Отменить.

На что обратить внимание

  1. Не запускайте операции изменения, Сжать или ОчиститьФайл на чужом либо рабочем DBF.

  2. Отменить не откатывает предыдущий Записать и не равен ОтменитьТранзакцию.

  3. Внешний DBF не участвует автоматически в транзакции информационной базы 1С.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Очистить буфер строки, не удалить записи из DBF

Очистить сбрасывает значения полей объекта. При отключённом автосохранении не записываем этот пустой буфер и восстанавливаем данные переходом.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Запускайте только в учебной базе на сервере. XBase работает с DBF, а не с таблицами вашей информационной базы; доступ к временному каталогу сервера должен быть разрешён.

  2. Код сам создаёт уникальный новый каталог. В нём только собственные goods.dbf и goods.cdx: имена файлов соответствуют ограничению 8.3, имена полей и индексов латинские, не длиннее 10 символов.

  3. Не подставляйте путь к существующему DBF. В каждой задаче новый набор: A-01 / Книга / 3 / 250 и B-02 / Ручка / 1 / 50. Сумма количества на цену равна 800.

  4. Файлы закрываются перед удалением двух точных собственных путей. Пустой уникальный каталог остаётся; его путь выводится, чтобы при необходимости удалить именно его вручную.

УчебныйКаталог = ПолучитьИмяВременногоФайла();
ПроверкаКаталога = Новый Файл(УчебныйКаталог);
Если ПроверкаКаталога.Существует() Тогда
    ВызватьИсключение "Учебный путь уже существует; существующие файлы не используем";
КонецЕсли;
СоздатьКаталог(УчебныйКаталог);
Сообщить("Собственный временный каталог: " + УчебныйКаталог);
Имя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 = Истина;
    База.Записать();
    Если Не База.Перейти(1) Тогда
        ВызватьИсключение "Не найдена собственная строка";
    КонецЕсли;
    База.Очистить();
    Сообщить(СокрЛП(База.CODE) = "");
    Сообщить(База.QTY = 0);
    Сообщить(База.КоличествоЗаписей() = 2);
    Если Не База.Перейти(2) Или Не База.Перейти(1) Тогда
        ВызватьИсключение "Не восстановлена позиция";
    КонецЕсли;
    Сообщить(СокрЛП(База.CODE) = "A-01");
    Сообщить(База.QTY = 3);
Исключение
    Если База.Открыта() Тогда
        База.ЗакрытьФайл();
    КонецЕсли;
    Для Каждого ИмяСобственногоФайла Из СтрРазделить(ИмяDBF + "|" + ИмяCDX, "|") Цикл
        СобственныйФайл = Новый Файл(ИмяСобственногоФайла);
        Если СобственныйФайл.Существует() Тогда
            УдалитьФайлы(ИмяСобственногоФайла);
        КонецЕсли;
    КонецЦикла;
    ВызватьИсключение;
КонецПопытки;
Если База.Открыта() Тогда
    База.ЗакрытьФайл();
КонецЕсли;
Для Каждого ИмяСобственногоФайла Из СтрРазделить(ИмяDBF + "|" + ИмяCDX, "|") Цикл
    СобственныйФайл = Новый Файл(ИмяСобственногоФайла);
    Если СобственныйФайл.Существует() Тогда
        УдалитьФайлы(ИмяСобственногоФайла);
    КонецЕсли;
КонецЦикла;

Разбор по шагам

  1. Создаём собственную структуру DBF и записываем два товара с явным Записать.

  2. АвтоСохранение заранее Ложь, поэтому изменения буфера не сохраняются при переходе.

  3. После Очистить CODE пуст и QTY 0, но физическое количество записей остаётся 2.

  4. Переводим курсор к другой строке и обратно: исходные A-01 и 3 снова читаются из файла.

  5. Закрываем DBF и удаляем только два собственных файла; информационная база не изменяется.

Как проверить результат

  1. Пять сообщений Истина.

  2. После Очистить отсутствует вызов Записать: очищенная книга не попала на диск.

Ожидаемый результат

Отличены очистка буфера и физическое удаление содержимого файла.

На что обратить внимание

  1. Не запускайте операции изменения, Сжать или ОчиститьФайл на чужом либо рабочем DBF.

  2. При автосохранении переход мог бы сохранить пустые поля: условия примера существенны.

  3. ОчиститьФайл — другой, необратимый метод; его здесь не вызываем.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.