Синтаксис и применение Условие в платформе 1С:Предприятие. Описание и примеры кода.
Полное описание, параметры и ограничения
Условие
Условие (необязательный)
Конструкция языка запросов. Конструкция на языке запросов, которая будет использована как условие, налагаемое на таблицу регистра расчета при получении таблицы фактического периода действия.
Методическая информация
Практические примеры
Прочитать фактический период действия записи
Сотрудник — собственное измерение, Результат — ресурс, Комментарий — реквизит. Обе проведённые записи имеют активность Истина, сторно Ложь и номер строки 1.Период действия в метаданных включён. Записей вытесняющего Отсутствие нет, поэтому фактический интервал каждой записи совпадает с исходным.
Где и как запускать
Тело серверной команды собственной учебной обработки; дополнительные блоки запускаются только в указанном для них месте.
Подготовка
В собственной пустой учебной конфигурации создайте план видов расчета УчебныеВидыЗапросов: строковый код 10, наименование 100, Использует период действия Да, Зависимость от базы По периоду действия. В список базовых планов включите этот же план.
В предопределенных данных плана создайте Оклад (код ОКЛ), Премия (ПРМ) и Отсутствие (ОТС). Для всех ПериодДействияБазовый Ложь. У Премия в БазовыеВидыРасчета и ВедущиеВидыРасчета добавьте Оклад. У Оклад в ВытесняющиеВидыРасчета добавьте Отсутствие. Другие списки пустые. Это связи платформы, не формула расчёта зарплаты.
Добавьте в план реквизит Комментарий (Строка 100) и табличную часть Детали с Наименование (Строка 100) и Количество (Число 10.0). После обновления учебной базы заполните у Оклад комментарий Учебный оклад и одну строку Книга, 2; остальные виды оставьте без Детали.
Создайте независимый непериодический регистр сведений УчебныйГрафикЗапросов: измерения График (Строка 20) и ДатаДня (Дата, состав даты Дата), ресурс Дни (Число 2.0). Код заполнения календаря в дополнительном блоке создаст 31 дату октября для графика Демо, каждый день по единице. Это условный календарь, не производственный календарь праздников.
Создайте регистр расчета УчебныеНачисленияЗапросов: периодичность Месяц, план УчебныеВидыЗапросов, Период действия Да и Базовый период Да. Измерение Сотрудник (Строка 20), ресурс Результат (Число 15.2), реквизиты График (Строка 20) и Комментарий (Строка 100).
В свойствах регистра задайте График = УчебныйГрафикЗапросов, Дата графика = ДатаДня, Значение графика = Дни. У реквизита График настройте Связь с графиком на УчебныйГрафикЗапросов.График. Это настройки метаданных; код не присваивает им выдуманные runtime-свойства.
В регистре расчета создайте перерасчет Очередь с измерением Сотрудник, связанным с измерением Сотрудник основного регистра. Данные ведущих регистров оставьте пустыми: отдельный дополнительный блок покажет явное добавление своей записи очереди.
Общие → Общие реквизиты: создайте УчебныйИсточник (Строка 20), Разделение данных Не использовать. В Состав включите УчебныеНачисленияЗапросов и УчебныеВидыЗапросов. Общий реквизит не заменяйте одноимённым обычным реквизитом.
Создайте документ УчебныйРасчетЗапросов: строковый номер 10, автонумерация выключена, проведение разрешено. Реквизиты ВидРасчета (ПланВидовРасчетаСсылка.УчебныеВидыЗапросов), Сотрудник и График (Строка 20), Результат (Число 15.2), Комментарий (Строка 100). Движения по УчебныеНачисленияЗапросов включены; обработчик из отдельного блока разместите в модуле объекта.
Обновите только учебную базу, заполните собственный график дополнительным кодом. Сначала вручную создайте и проведите документ ОКЛ от 01.10.2026 12:00:00: вид Оклад, сотрудник Ученик, график Демо, результат 1000, комментарий Оклад за два дня.
Затем создайте и проведите документ ПРМ от 02.10.2026 12:00:00: вид Премия, сотрудник Ученик, график Демо, результат 0, комментарий Учебная премия. Обработчик задаёт периоды действия и базы 01–02 октября включительно. Записей Отсутствие нет, поэтому фактический период равен исходному.
Основной запрос вставляется в тело серверной команды учебной обработки. Он читает подготовленные записи, не вычисляет и не записывает зарплату. Изменение и повторное проведение ОКЛ могут зарегистрировать перерасчет зависимой премии; само наличие очереди не вычисляет деньги.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Данные.Сотрудник, Данные.Результат, Данные.ПериодДействияНачало,
| Данные.УчебныйИсточник, Данные.Комментарий, Данные.Активность,
| Данные.Сторно, Данные.БазовыйПериодКонец, Данные.БазовыйПериодНачало,
| Данные.ВидРасчета, Данные.НомерСтроки, Данные.ПериодДействия,
| Данные.ПериодДействияКонец, Данные.ПериодРегистрации, Данные.Регистратор
|ИЗ РегистрРасчета.УчебныеНачисленияЗапросов.ФактическийПериодДействия(Сотрудник = &Сотрудник) КАК Данные";
Запрос.УстановитьПараметр("Сотрудник", "Ученик");
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Для Каждого Колонка Из Результат.Колонки Цикл
Сообщить(Колонка.Имя + ": " + Строка(Выборка[Колонка.Имя]));
КонецЦикла;
КонецЦикла;Провести собственный учебный вид расчета
Документы → УчебныйРасчетЗапросов → Модуль объекта
Обработчик вызывается при ручном проведении своего документа.
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.УчебныеНачисленияЗапросов.Записывать = Истина;
Запись = Движения.УчебныеНачисленияЗапросов.Добавить();
Запись.ПериодРегистрации = Дата(2026, 10, 1);
Запись.ВидРасчета = ВидРасчета;
Запись.Активность = Истина;
Запись.Сторно = Ложь;
Запись.ПериодДействияНачало = Дата(2026, 10, 1);
Запись.ПериодДействияКонец = КонецДня(Дата(2026, 10, 2));
Запись.БазовыйПериодНачало = Дата(2026, 10, 1);
Запись.БазовыйПериодКонец = КонецДня(Дата(2026, 10, 2));
Запись.Сотрудник = Сотрудник;
Запись.График = График;
Запись.Результат = Результат;
Запись.Комментарий = Комментарий;
Запись.УчебныйИсточник = "Урок";
КонецПроцедурыЗаполнить только собственный график Демо
Тело отдельной серверной команды учебной обработки. Замещение ограничено графиком Демо.
Набор = РегистрыСведений.УчебныйГрафикЗапросов.СоздатьНаборЗаписей();
Набор.Отбор.График.Установить("Демо");
Для День = 1 По 31 Цикл
Запись = Набор.Добавить();
Запись.График = "Демо";
Запись.ДатаДня = Дата(2026, 10, День);
Запись.Дни = 1;
КонецЦикла;
Набор.Записать();
Сообщить("Учебный график октября: 31 день");Разбор по шагам
Подготовка создаёт реальные собственные виды, график и проведённые записи расчета.
Сотрудник — собственное измерение, Результат — ресурс, Комментарий — реквизит. Обе проведённые записи имеют активность Истина, сторно Ложь и номер строки 1.Период действия в метаданных включён. Записей вытесняющего Отсутствие нет, поэтому фактический интервал каждой записи совпадает с исходным.
Выбранные поля действительно читаются: каждый результат выводит имя и значение колонки.
Как проверить результат
У Оклад Результат = 1000, у Премия Результат = 0: никакой скрытый расчёт суммы не выполняется.
ПериодРегистрации и ПериодДействия относятся к октябрю; ПериодДействияНачало = 01.10.2026, конец = 02.10.2026 23:59:59.
Фактическое действие остаётся 01–02 октября; добавление вытесняющего вида могло бы разделить его, но в текущей подготовке такого движения нет.
Ожидаемый результат
Прочитать фактический период действия записи по подготовленной учебной схеме.
На что обратить внимание
Набор в памяти не является таблицей запросов: записи должны быть сохранены собственным регистратором.
Период регистрации, период действия и базовый период — разные понятия. Месячная периодичность не делает начало периода действия равным дате документа.
База и данные графика являются исходными данными расчёта. Результат премии остаётся 0, пока прикладной код явно не вычислит и не запишет сумму.
Общий УчебныйИсточник здесь не разделитель. Страницу общего реквизита таблицы базы, требующую разделитель НезависимоИСовместно, этот урок намеренно не покрывает.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.