Активность

Язык запросов · Active

Синтаксис и применение Активность в платформе 1С:Предприятие. Описание и примеры кода.

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

Активность (Active)

Активность (Active)
Тип: Булево.
Признак активности (участие записи в конкуренции за период действия, влияние на получение базы).

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

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

Получить дни собственного графика за разные периоды

Сотрудник — собственное измерение, Результат — ресурс, Комментарий — реквизит. Обе проведённые записи имеют активность Истина, сторно Ложь и номер строки 1.Связь с графиком задана реальными метаданными, а Дни — ресурс непериодического графика.

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

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

Подготовка

  1. В собственной пустой учебной конфигурации создайте план видов расчета УчебныеВидыЗапросов: строковый код 10, наименование 100, Использует период действия Да, Зависимость от базы По периоду действия. В список базовых планов включите этот же план.

  2. В предопределенных данных плана создайте Оклад (код ОКЛ), Премия (ПРМ) и Отсутствие (ОТС). Для всех ПериодДействияБазовый Ложь. У Премия в БазовыеВидыРасчета и ВедущиеВидыРасчета добавьте Оклад. У Оклад в ВытесняющиеВидыРасчета добавьте Отсутствие. Другие списки пустые. Это связи платформы, не формула расчёта зарплаты.

  3. Добавьте в план реквизит Комментарий (Строка 100) и табличную часть Детали с Наименование (Строка 100) и Количество (Число 10.0). После обновления учебной базы заполните у Оклад комментарий Учебный оклад и одну строку Книга, 2; остальные виды оставьте без Детали.

  4. Создайте независимый непериодический регистр сведений УчебныйГрафикЗапросов: измерения График (Строка 20) и ДатаДня (Дата, состав даты Дата), ресурс Дни (Число 2.0). Код заполнения календаря в дополнительном блоке создаст 31 дату октября для графика Демо, каждый день по единице. Это условный календарь, не производственный календарь праздников.

  5. Создайте регистр расчета УчебныеНачисленияЗапросов: периодичность Месяц, план УчебныеВидыЗапросов, Период действия Да и Базовый период Да. Измерение Сотрудник (Строка 20), ресурс Результат (Число 15.2), реквизиты График (Строка 20) и Комментарий (Строка 100).

  6. В свойствах регистра задайте График = УчебныйГрафикЗапросов, Дата графика = ДатаДня, Значение графика = Дни. У реквизита График настройте Связь с графиком на УчебныйГрафикЗапросов.График. Это настройки метаданных; код не присваивает им выдуманные runtime-свойства.

  7. В регистре расчета создайте перерасчет Очередь с измерением Сотрудник, связанным с измерением Сотрудник основного регистра. Данные ведущих регистров оставьте пустыми: отдельный дополнительный блок покажет явное добавление своей записи очереди.

  8. Общие → Общие реквизиты: создайте УчебныйИсточник (Строка 20), Разделение данных Не использовать. В Состав включите УчебныеНачисленияЗапросов и УчебныеВидыЗапросов. Общий реквизит не заменяйте одноимённым обычным реквизитом.

  9. Создайте документ УчебныйРасчетЗапросов: строковый номер 10, автонумерация выключена, проведение разрешено. Реквизиты ВидРасчета (ПланВидовРасчетаСсылка.УчебныеВидыЗапросов), Сотрудник и График (Строка 20), Результат (Число 15.2), Комментарий (Строка 100). Движения по УчебныеНачисленияЗапросов включены; обработчик из отдельного блока разместите в модуле объекта.

  10. Обновите только учебную базу, заполните собственный график дополнительным кодом. Сначала вручную создайте и проведите документ ОКЛ от 01.10.2026 12:00:00: вид Оклад, сотрудник Ученик, график Демо, результат 1000, комментарий Оклад за два дня.

  11. Затем создайте и проведите документ ПРМ от 02.10.2026 12:00:00: вид Премия, сотрудник Ученик, график Демо, результат 0, комментарий Учебная премия. Обработчик задаёт периоды действия и базы 01–02 октября включительно. Записей Отсутствие нет, поэтому фактический период равен исходному.

  12. Основной запрос вставляется в тело серверной команды учебной обработки. Он читает подготовленные записи, не вычисляет и не записывает зарплату. Изменение и повторное проведение ОКЛ могут зарегистрировать перерасчет зависимой премии; само наличие очереди не вычисляет деньги.

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Данные.Сотрудник, Данные.УчебныйИсточник, Данные.ДниБазовыйПериод,
| Данные.Комментарий, Данные.ПериодРегистрации, Данные.ДниПериодДействия,
| Данные.ДниПериодРегистрации, Данные.ДниФактическийПериодДействия, Данные.Результат,
| Данные.Активность, Данные.Сторно, Данные.БазовыйПериодКонец,
| Данные.БазовыйПериодНачало, Данные.ПериодДействияКонец, Данные.ВидРасчета,
| Данные.НомерСтроки, Данные.ПериодДействия, Данные.Регистратор,
| Данные.ПериодДействияНачало
|ИЗ РегистрРасчета.УчебныеНачисленияЗапросов.ДанныеГрафика(Сотрудник = &Сотрудник) КАК Данные";
Запрос.УстановитьПараметр("Сотрудник", "Ученик");
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
    Для Каждого Колонка Из Результат.Колонки Цикл
        Сообщить(Колонка.Имя + ": " + Строка(Выборка[Колонка.Имя]));
    КонецЦикла;
КонецЦикла;
Провести собственный учебный вид расчета

Документы → УчебныйРасчетЗапросов → Модуль объекта

Обработчик вызывается при ручном проведении своего документа.

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    Движения.УчебныеНачисленияЗапросов.Записывать = Истина;
    Запись = Движения.УчебныеНачисленияЗапросов.Добавить();
    Запись.ПериодРегистрации = Дата(2026, 10, 1);
    Запись.ВидРасчета = ВидРасчета;
    Запись.Активность = Истина;
    Запись.Сторно = Ложь;
    Запись.ПериодДействияНачало = Дата(2026, 10, 1);
    Запись.ПериодДействияКонец = КонецДня(Дата(2026, 10, 2));
    Запись.БазовыйПериодНачало = Дата(2026, 10, 1);
    Запись.БазовыйПериодКонец = КонецДня(Дата(2026, 10, 2));
    Запись.Сотрудник = Сотрудник;
    Запись.График = График;
    Запись.Результат = Результат;
    Запись.Комментарий = Комментарий;
    Запись.УчебныйИсточник = "Урок";
КонецПроцедуры
Заполнить только собственный график Демо

Тело отдельной серверной команды учебной обработки. Замещение ограничено графиком Демо.

Набор = РегистрыСведений.УчебныйГрафикЗапросов.СоздатьНаборЗаписей();
Набор.Отбор.График.Установить("Демо");
Для День = 1 По 31 Цикл
    Запись = Набор.Добавить();
    Запись.График = "Демо";
    Запись.ДатаДня = Дата(2026, 10, День);
    Запись.Дни = 1;
КонецЦикла;
Набор.Записать();
Сообщить("Учебный график октября: 31 день");

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

  1. Подготовка создаёт реальные собственные виды, график и проведённые записи расчета.

  2. Сотрудник — собственное измерение, Результат — ресурс, Комментарий — реквизит. Обе проведённые записи имеют активность Истина, сторно Ложь и номер строки 1.Связь с графиком задана реальными метаданными, а Дни — ресурс непериодического графика.

  3. Выбранные поля действительно читаются: каждый результат выводит имя и значение колонки.

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

  1. У Оклад Результат = 1000, у Премия Результат = 0: никакой скрытый расчёт суммы не выполняется.

  2. ПериодРегистрации и ПериодДействия относятся к октябрю; ПериодДействияНачало = 01.10.2026, конец = 02.10.2026 23:59:59.

  3. ДниПериодДействия = 2, ДниФактическийПериодДействия = 2, ДниБазовыйПериод = 2, ДниПериодРегистрации = 31.

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

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

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

  1. Набор в памяти не является таблицей запросов: записи должны быть сохранены собственным регистратором.

  2. Период регистрации, период действия и базовый период — разные понятия. Месячная периодичность не делает начало периода действия равным дате документа.

  3. База и данные графика являются исходными данными расчёта. Результат премии остаётся 0, пока прикладной код явно не вычислит и не запишет сумму.

  4. Общий УчебныйИсточник здесь не разделитель. Страницу общего реквизита таблицы базы, требующую разделитель НезависимоИСовместно, этот урок намеренно не покрывает.

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

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

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

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

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