Smart1Spec Документация
Studio
СправочникИзучающий Spec1C

where и filter period

where и filter period запоминают только имя поля даты; в запрос добавляется отбор МЕЖДУ &ДатаНачПериода И &ДатаКонПериода, а реквизитов периода в новом файле нет.

Перед чтением

  • data Справочник
На этой странице

where Поле between … и filter period on Поле задают отбор строк по периоду. Из всей записи Studio запоминает только имя поля; остальное (between …, другие условия) не учитывается.

Назначение#

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

Синтаксис#

Spec1C
where [<источник>.]<Поле> between <что угодно>
filter period on [<источник>.]<Поле>

Обычно запись ставят в блок data { }, после источников и соединений.

Элементы#

ЭлементОбязателенЧто означает
where или filter period onданачало отбора; регистр букв where не важен
<источник>.нетлатинское имя источника из data; отбрасывается
<Поле>даимя поля даты, как в конфигурации
between …нетдля where; текст после поля не учитывается

Пример#

Spec1C
spec1c {
  report contracts
    title:  "Договоры за период"
    target: ordinary

  data {
    contracts = Справочник.КлиентскиеДоговора
      fields: Ссылка, Код, ДатаДоговора

    where ДатаДоговора between ПериодT
  }
}

Та же модель через filter period:

Spec1C
spec1c {
  report contracts
  data {
    contracts = Справочник.КлиентскиеДоговора
      fields: Ссылка, Код, ДатаДоговора
    filter period on contracts.ДатаДоговора
  }
}

Что принимает разбор#

  • Первое слово после where (или после filter period on) — имя поля. Латинский префикс источника contracts. отбрасывается.
  • Кириллический префикс не отбрасывается: в where Договоры.Дата between … полем считается Договоры.
  • Любой оператор превращается в отбор по периоду: where Сумма > 100 запомнит поле Сумма и сгенерирует для него МЕЖДУ.
  • Если есть и where, и filter period, действует where. Из нескольких where действует первая.
  • Запись работает и вне блока data, но внутри блока она имеет приоритет.
  • where без имени поля пропускается без сообщения.

Что попадает в модель#

Только имя поля периода. Оно видно в инспекторе в блоке «Фильтр периода T».

Что проверяется#

Ничего: Studio не проверяет, что поле существует и что это дата. В облачной среде конфигурация не загружается.

Что генерируется в BSL#

В запрос добавляется условие МЕЖДУ с двумя параметрами и их установка из одноимённых переменных. Фрагмент живой сборки:

BSL
	|ГДЕ
	|	КлиентскиеДоговора.ДатаДоговора МЕЖДУ &ДатаНачПериода И &ДатаКонПериода
	|";
	Запрос.УстановитьПараметр("ДатаНачПериода", ДатаНачПериода);
	Запрос.УстановитьПараметр("ДатаКонПериода", ДатаКонПериода);

Таблица перед полем — та, у которой поле есть в списке fields; если его нет ни у одного источника, берётся основная таблица. Имена параметров ДатаНачПериода и ДатаКонПериода фиксированы и не зависят от того, что написано после between.

Реквизитов ДатаНачПериода и ДатаКонПериода в собранном новом файле нет (проверено распаковкой). Studio их не создаёт.

Работа в 1С#

В 1С код не запускался. Поскольку реквизитов периода в новом файле нет, ожидаема ошибка «переменная не определена» при компиляции или выполнении модуля. Перед использованием файла добавьте на форму в Конфигураторе два реквизита типа «Дата» с именами ДатаНачПериода и ДатаКонПериода или не используйте where / filter period для нового файла.

Ограничения#

  • Запоминается только имя поля; условие и параметры после него игнорируются.
  • Любой where превращается в отбор МЕЖДУ.
  • Только один отбор на спецификацию.
  • Реквизиты периода не создаются.
  • Удаление where не убирает отбор из модели.

Полный список — Ограничения реализации.

Связанные конструкции#

См. также

Сверено с продуктом: 27.10.2026

Нашли неточность? Напишите на [email protected] и укажите адрес страницы.

Smart1Spec · документация описывает текущую версию сервиса.