Значения каких типов можно передавать в параметр "период" виртуальной таблицы регистра сведений?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Параметр Период в регистрах сведений
Регистры сведений отличаются от регистров накопления по механизму работы с параметром Период. Поддерживаются следующие типы.
Основное отличие
Регистры сведений хранят текущее значение, а не накапливают движения. Параметр Период используется для выборки по временным срезам истории.
Поддерживаемые типы Период
1. Дата (Date)
- Получить значение на конкретную дату
- Основной способ работы
- Возвращает актуальное значение на эту дату
Запрос = Новый Запрос("ВЫБРАТЬ
| Срез.Валюта,
| Срез.Курс
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(@Дата) как Срез");
Запрос.УстановитьПараметр("Дата", Дата(20250101));
Результат = Запрос.Выполнить();
2. Период (не конкретное значение)
- Пустое значение Неопределено
- Получает все записи за все времена
- Показывает полную историю
Запрос = Новый Запрос("ВЫБРАТЬ
| Срез.Валюта,
| Срез.Дата,
| Срез.Курс
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(Неопределено) как Срез");
Результат = Запрос.Выполнить();
Виртуальные таблицы регистров сведений
СрезПоследних (Latest Slice):
- Получает последнее значение на дату
- Для многомерных регистров
- Возвращает одну запись на комбинацию измерений
Процедура ПолучитьПоследнийКурс(Валюта, ДатаСреза)
Запрос = Новый Запрос("ВЫБРАТЬ
| Срез.Курс
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(@Дата) как Срез
|ГДЕ
| Срез.Валюта = @Валюта");
Запрос.УстановитьПараметр("Дата", ДатаСреза);
Запрос.УстановитьПараметр("Валюта", Валюта);
Результат = Запрос.Выполнить();
КонецПроцедуры;
СрезВремени (Time Slice):
- Срез в конкретный момент времени
- Получает значения на определённый день
- Показывает ту информацию, которая была актуальна
Процедура ПолучитьСрезПоПериоду(НачалоПериода, КонецПериода)
Запрос = Новый Запрос("ВЫБРАТЬ
| Срез.Коэффициент,
| Срез.Значение
|ИЗ
| РегистрСведений.КоэффициентыБух.СрезПоследних(@Дата) как Срез
|ГДЕ
| Срез.Дата >= @НачалоПериода
| И Срез.Дата <= @КонецПериода");
Запрос.УстановитьПараметр("Дата", КонецПериода);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Результат = Запрос.Выполнить();
КонецПроцедуры;
Отличие от регистров накопления
Регистр сведений:
- Хранит ТЕКУЩЕЕ значение
- При обновлении старое значение перезаписывается
- История зависит от конфигурации (Периодичность)
- Параметр Период для получения исторических значений
Регистр накопления:
- Хранит ДВИЖЕНИЯ (приходы/расходы)
- Остатки вычисляются из движений
- Вся история автоматически сохраняется
- Параметр Период для среза на конкретную дату
Механизм истории в сведениях
Регистр.КурсыВалют
Дата | Валюта | Курс
2025-01-01 | USD | 100
2025-01-05 | USD | 105 <- новая запись, старая не удаляется
2025-01-10 | USD | 98
Условие Периодичность = "День" → вся история сохраняется
Примеры использования
Получить текущий курс:
Стек = РегистрыСведений.КурсыВалют.СрезПоследних(ТекущаяДата());
Текстура = Срез.ПолучитьПервуюСтроку();
ТекущийКурс = Срез.Курс;
Получить всю историю курсов:
Запрос = Новый Запрос("ВЫБРАТЬ
| Срез.Дата,
| Срез.Валюта,
| Срез.Курс
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(Неопределено) как Срез
|УПОРЯДОЧИТЬ ПО Срез.Дата");
Получить курсы на конец каждого месяца:
МассивДат = Новый Массив();
Для i = 1 По 12 Цикл
ДатаМесяца = Дата(2025, i, 28); // Конец месяца
МассивДат.Добавить(ДатаМесяца);
КонецЦикла;
Запрос = Новый Запрос("ВЫБРАТЬ
| Срез.Дата,
| Срез.Курс
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(@Даты) как Срез");
Запрос.УстановитьПараметр("Даты", МассивДат);
Best Practices
1. Всегда указывай период:
- Вместо Неопределено используй конкретную дату
- Это ускорит запрос
2. Используй СрезПоследних:
- Для получения актуальных значений
- Наиболее эффективно
3. Проверяй Периодичность:
- День — вся история
- Нет периодичности — одна запись
4. Кэшируй справочные данные:
- Курсы, коэффициенты часто используются
- Сохраняй в переменные
Параметр Период в регистрах сведений критичен для работы с историческими данными и получения актуальных значений на конкретные моменты времени.
Похожие вопросы
- Как настраиваются права доступа для пользователей в 1С?
- Что знаешь про конвертацию данных?
- Приведи пример ряда важных обработок
- В чем разница между схемой компоновки данных и системой компоновки данных?
- В чем разница между виртуальной и временной таблицей?
- Какие есть варианты выгрузки в формате xml?
- Что такое вытесняющие виды расчётов?
- Можно ли делать транзакцию на клиенте в 1С?
- Как организовать разработку с несколькими хранилищами конфигурации?
- Что такое ведущие виды расчётов?
- Что делать, если конфигурация поставщика не соответствует основной конфигурации?
- Какие директивы компиляции могут быть в модуле управляемой формы?
- Какие поля нужно индексировать?
- Что такое блокировки в 1С и как они устроены?
- Какие есть виртуальные таблицы у регистра расчётов?
- Что такое контекст формы в 1С?
- Как расследуешь ошибки принимаемых запросов?
- Какие стандарты 1С по организации проведения документа вы знаете?
- Как организовать обмен данными между 1С и другими системами?
- Что такое транзакция в 1С? Есть ли вложенные транзакции?