МоментВремени.Ссылка

Свойства · Ref

Тип: Ссылка на объект информационной базы, Неопределено. Содержит ссылку на объект в базе данных. Это значение может быть записано в базу данных для полей соответствующего типа.

Полное описание, параметры и ограничения

МоментВремени.Ссылка (PointInTime.Ref)

МоментВремени (PointInTime)

Ссылка (Ref)

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

Использование:
Только чтение.
Описание:
Тип: Ссылка на объект информационной базы, Неопределено.
Содержит ссылку на объект в базе данных. Это значение может быть записано в базу данных для полей соответствующего типа.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

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

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

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

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

Составить ключ и момент движения, не выдавая их за сохранённую запись

Ключ Регистратор+НомерСтроки и МоментВремени являются значениями. Их создание не проверяет наличие движения в информационной базе.

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

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

Подготовка

  1. Создайте НОВУЮ пустую файловую базу, имя корневой конфигурации УчебныеОстатки85. Не добавляйте эти объекты в УТ/КА2/УНФ/БП. Режим управления блокировкой данных конфигурации — Управляемый.

  2. Документы → Добавить: УчебноеДвижение85. Номер: Строка длиной 40, автонумерация выключена. Модули объекта и менеджера оставьте пустыми; не добавляйте обработчики, подписки и обязательные пользовательские реквизиты.

  3. Регистры накопления → Добавить: УчебныеОстатки85. Вид регистра Остатки. Единственное измерение КодТовара: Строка 50, индексировать, проверка заполнения Показывать ошибку. Единственный ресурс Количество: Число 12,3, неотрицательное. Дополнительных реквизитов нет.

  4. В списке регистраторов выберите только собственный документ УчебноеДвижение85. Оставьте модули регистра пустыми, использование итогов включённым. Планы обмена, разделители, историю данных и фоновые задания для урока не создавайте.

  5. Обновите конфигурацию базы данных. Создайте серверный общий модуль УчебныеЗадачи и команду собственной обработки. Фрагмент вставьте внутрь ВыполнитьПример() Экспорт; запускайте задачи по отдельности.

  6. Первые задачи работают с незаписанными наборами. Только задачи с пометкой «в собственной транзакции» временно записывают два собственных документа и движения, затем обязательно отменяют транзакцию. В рабочей базе этот код не запускайте.

Если Метаданные.Документы.Количество() <> 1
    Или Метаданные.РегистрыНакопления.Количество() <> 1
    Или Метаданные.Документы.Найти("УчебноеДвижение85") = Неопределено Тогда
    ВызватьИсключение "Разрешены только собственный учебный документ и регистр";
КонецЕсли;
Описание = Метаданные.РегистрыНакопления.Найти("УчебныеОстатки85");
Если Описание = Неопределено Тогда
    ВызватьИсключение "Сначала создайте собственный учебный регистр";
КонецЕсли;
Если Описание.ВидРегистра <> Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки
    Или Описание.Измерения.Количество() <> 1
    Или Описание.Ресурсы.Количество() <> 1
    Или Описание.Реквизиты.Количество() <> 0
    Или Описание.Измерения.Найти("КодТовара") = Неопределено
    Или Описание.Ресурсы.Найти("Количество") = Неопределено Тогда
    ВызватьИсключение "Нужен регистр остатков с КодТовара и Количество";
КонецЕсли;
Менеджер = РегистрыНакопления.УчебныеОстатки85;
Код = "TRAIN-" + Строка(Новый УникальныйИдентификатор);
СсылкаНаНесохраненный = Документы.УчебноеДвижение85.ПолучитьСсылку(Новый УникальныйИдентификатор);
Набор = Менеджер.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(СсылкаНаНесохраненный);
Приход = Набор.ДобавитьПриход();
Приход.Период = Дата(2026, 9, 15, 10, 0, 0);
Приход.Регистратор = СсылкаНаНесохраненный;
Приход.Активность = Истина;
Приход.КодТовара = Код;
Приход.Количество = 3;
Расход = Набор.ДобавитьРасход();
Расход.Период = Дата(2026, 9, 15, 11, 0, 0);
Расход.Регистратор = СсылкаНаНесохраненный;
Расход.Активность = Истина;
Расход.КодТовара = Код;
Расход.Количество = 1;
Ключ = Менеджер.СоздатьКлючЗаписи(Новый Структура("Регистратор,НомерСтроки", СсылкаНаНесохраненный, 1));
Сообщить(Ключ.Регистратор = СсылкаНаНесохраненный);
Сообщить(Ключ.НомерСтроки = 1);
Момент = Приход.МоментВремени();
Сообщить(Момент.Дата = Приход.Период);
Сообщить(Момент.Ссылка = СсылкаНаНесохраненный);
ВключающаяГраница = Новый Граница(Момент, ВидГраницы.Включая);
Сообщить(ВключающаяГраница.Значение = Момент);
Сообщить(ВключающаяГраница.ВидГраницы = ВидГраницы.Включая);
Выборка = Менеджер.ВыбратьПоРегистратору(СсылкаНаНесохраненный);
Сообщить(Не Выборка.Следующий());

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

  1. СоздатьКлючЗаписи принимает структуру именно ключевых полей: Регистратор и НомерСтроки, не код товара.

  2. Число 1 в ключе — заданный нами идентификатор, не результат Набор.Индекс. Записи с таким ключом может не существовать.

  3. МоментВремени движения включает его период и ссылку-регистратор. Он точнее простой даты при упорядочивании разных документов.

  4. Граница с видом Включая явно включает своё граничное значение. Само создание границы не читает остатки.

  5. ВыбратьПоРегистратору и первый Следующий показывают отсутствие сохранённых движений по собственной несохранённой ссылке.

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

  1. Семь сравнений Истина; выборка базы пустая, хотя значения ключа и момента успешно созданы.

  2. Набор по-прежнему содержит два собственных движения в памяти.

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

Отделены идентификатор записи, момент движения, граница интервала и проверка существования в базе.

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

  1. Не показывайте пользователю «движение найдено» только потому, что СоздатьКлючЗаписи вернул объект.

  2. НомерСтроки в ключе не равен индексу текущей коллекции и не заменяет регистратор.

  3. Наличие ссылки не означает сохранение документа. Для чтения рабочих данных нужен реально существующий регистратор и права доступа.

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

Сравнить два момента времени: −1, 0 и 1

МоментВремени отличается от простой даты наличием необязательной ссылки. Сначала сравним собственные даты без ссылок, чтобы понять контракт Сравнить.

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

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

Подготовка

  1. Выполняйте на сервере учебной базы; объекты конфигурации и файлы не нужны.

  2. Три момента создаются прямо в коде; второй параметр конструктора намеренно не задан.

Ранний = Новый МоментВремени(Дата(2024, 2, 5, 10, 0, 0));
Поздний = Новый МоментВремени(Дата(2024, 2, 5, 11, 0, 0));
РавныйРаннему = Новый МоментВремени(Дата(2024, 2, 5, 10, 0, 0));
Сообщить(Ранний.Сравнить(Поздний) = -1);
Сообщить(Поздний.Сравнить(Ранний) = 1);
Сообщить(Ранний.Сравнить(РавныйРаннему) = 0);
Сообщить(Ранний.Сравнить(Ранний) = 0);
Сообщить(Ранний.Дата = Дата(2024, 2, 5, 10, 0, 0));
Сообщить(Ранний.Ссылка = Неопределено);
Сообщить(Поздний.Дата - Ранний.Дата = 3600);

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

  1. Конструктор сохраняет дату и необязательную ссылку. Без ссылки Ссылка содержит Неопределено.

  2. Сравнить возвращает число: −1 для меньшего, 0 для равного, 1 для большего, а не Булево.

  3. Проверяем прямое и обратное сравнение, равенство разных объектов с одинаковыми значениями и сравнение с самим собой.

  4. Разность именно дат показывает 3600 секунд. Результат Сравнить не является числом секунд между моментами.

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

  1. Все семь логических сообщений дают Истина.

  2. Временной интервал равен часу, но Сравнить даёт только −1/0/1.

  3. Никакой документ, движение или ссылка на запись этим кодом не создаются.

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

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

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

  1. Не пишите Если Ранний.Сравнить(Поздний) Тогда: результат числовой, явно сравнивайте с −1, 0 или 1.

  2. Свойства Дата и Ссылка только читаются. Для другого значения создайте новый МоментВремени.

  3. Сравнение момента времени не является преобразованием часовых поясов.

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

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

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

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

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