Получает момент времени, соответствующий записи регистра.
Синтаксис
МоментВремени()Полное описание, параметры и ограничения
РегистрНакопленияЗапись.<Имя регистра накопления>.МоментВремени (AccumulationRegisterRecord.<Accumulation register name>.PointInTime)
РегистрНакопленияЗапись.<Имя регистра накопления> (AccumulationRegisterRecord.<Accumulation register name>)
МоментВремени (PointInTime)
Доступен, начиная с версии 8.1.
Синтаксис:
МоментВремени()
Возвращаемое значение:
Тип: МоментВремени.
Описание:
Получает момент времени, соответствующий записи регистра.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Составить ключ и момент движения, не выдавая их за сохранённую запись
Ключ Регистратор+НомерСтроки и МоментВремени являются значениями. Их создание не проверяет наличие движения в информационной базе.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую базу, имя корневой конфигурации УчебныеОстатки85. Не добавляйте эти объекты в УТ/КА2/УНФ/БП. Режим управления блокировкой данных конфигурации — Управляемый.
Документы → Добавить: УчебноеДвижение85. Номер: Строка длиной 40, автонумерация выключена. Модули объекта и менеджера оставьте пустыми; не добавляйте обработчики, подписки и обязательные пользовательские реквизиты.
Регистры накопления → Добавить: УчебныеОстатки85. Вид регистра Остатки. Единственное измерение КодТовара: Строка 50, индексировать, проверка заполнения Показывать ошибку. Единственный ресурс Количество: Число 12,3, неотрицательное. Дополнительных реквизитов нет.
В списке регистраторов выберите только собственный документ УчебноеДвижение85. Оставьте модули регистра пустыми, использование итогов включённым. Планы обмена, разделители, историю данных и фоновые задания для урока не создавайте.
Обновите конфигурацию базы данных. Создайте серверный общий модуль УчебныеЗадачи и команду собственной обработки. Фрагмент вставьте внутрь ВыполнитьПример() Экспорт; запускайте задачи по отдельности.
Первые задачи работают с незаписанными наборами. Только задачи с пометкой «в собственной транзакции» временно записывают два собственных документа и движения, затем обязательно отменяют транзакцию. В рабочей базе этот код не запускайте.
Если Метаданные.Документы.Количество() <> 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 в ключе — заданный нами идентификатор, не результат Набор.Индекс. Записи с таким ключом может не существовать.
МоментВремени движения включает его период и ссылку-регистратор. Он точнее простой даты при упорядочивании разных документов.
Граница с видом Включая явно включает своё граничное значение. Само создание границы не читает остатки.
ВыбратьПоРегистратору и первый Следующий показывают отсутствие сохранённых движений по собственной несохранённой ссылке.
Как проверить результат
Семь сравнений Истина; выборка базы пустая, хотя значения ключа и момента успешно созданы.
Набор по-прежнему содержит два собственных движения в памяти.
Ожидаемый результат
Отделены идентификатор записи, момент движения, граница интервала и проверка существования в базе.
На что обратить внимание
Не показывайте пользователю «движение найдено» только потому, что СоздатьКлючЗаписи вернул объект.
НомерСтроки в ключе не равен индексу текущей коллекции и не заменяет регистратор.
Наличие ссылки не означает сохранение документа. Для чтения рабочих данных нужен реально существующий регистратор и права доступа.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Получить момент двух учебных движений до записи набора
Момент записи связывает её период с регистратором. Два движения одного планового регистратора имеют разные периоды; сравниваем их, не записывая набор.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую базу, имя корневой конфигурации УчебныеОстатки85. Не добавляйте эти объекты в УТ/КА2/УНФ/БП. Режим управления блокировкой данных конфигурации — Управляемый.
Документы → Добавить: УчебноеДвижение85. Номер: Строка длиной 40, автонумерация выключена. Модули объекта и менеджера оставьте пустыми; не добавляйте обработчики, подписки и обязательные пользовательские реквизиты.
Регистры накопления → Добавить: УчебныеОстатки85. Вид регистра Остатки. Единственное измерение КодТовара: Строка 50, индексировать, проверка заполнения Показывать ошибку. Единственный ресурс Количество: Число 12,3, неотрицательное. Дополнительных реквизитов нет.
В списке регистраторов выберите только собственный документ УчебноеДвижение85. Оставьте модули регистра пустыми, использование итогов включённым. Планы обмена, разделители, историю данных и фоновые задания для урока не создавайте.
Обновите конфигурацию базы данных. Создайте серверный общий модуль УчебныеЗадачи и команду собственной обработки. Фрагмент вставьте внутрь ВыполнитьПример() Экспорт; запускайте задачи по отдельности.
Первые задачи работают с незаписанными наборами. Только задачи с пометкой «в собственной транзакции» временно записывают два собственных документа и движения, затем обязательно отменяют транзакцию. В рабочей базе этот код не запускайте.
Если Метаданные.Документы.Количество() <> 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);
Сообщить(Набор.Количество() = 2);
Сообщить(СсылкаНаНесохраненный.ПолучитьОбъект() = Неопределено);Разбор по шагам
В собственной схеме создаём набор с приходом в 10:00 и расходом в 11:00. Один случайный плановый регистратор назначен обеим строкам.
МоментВремени вызывается у записи регистра, не у самого набора и не у количества товара.
Проверяем Дата/Ссылка результата отдельно. Различные периоды дают прямое сравнение −1 и обратное 1.
Плановый регистратор и набор не записаны. Последняя проверка подтверждает отсутствие документа по собственной ссылке.
Как проверить результат
Все восемь логических сообщений дают Истина.
Набор содержит две строки в памяти; моменты содержат их периоды и одного регистратора.
Временные движения и документ не появляются в базе.
Ожидаемый результат
Разобран момент записи накопления на собственных незаписанных движениях.
На что обратить внимание
Дата момента записи относится к её Период, а не автоматически к дате уже существующего документа.
Для независимого регистра сведений этот метод использовать нельзя: его контракт требует Подчинение регистратору.
Проверка момента не рассчитывает остатки и не подтверждает проведённость документа.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.