Запрос читает определения видов Оклад, Премия и Отсутствие: ссылки, коды, имена предопределенных данных, обычный и общий реквизиты. Это не движения регистра и не рассчитанные суммы.
Где и как запускать
Тело серверной команды собственной учебной обработки; дополнительные блоки запускаются только в указанном для них месте.
Подготовка
В собственной пустой учебной конфигурации создайте план видов расчета УчебныеВидыЗапросов: строковый код 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 день");Разбор по шагам
Подготовка создаёт реальные собственные виды, график и проведённые записи расчета.
Запрос читает определения видов Оклад, Премия и Отсутствие: ссылки, коды, имена предопределенных данных, обычный и общий реквизиты. Это не движения регистра и не рассчитанные суммы.
Выбранные поля действительно читаются: каждый результат выводит имя и значение колонки.
Как проверить результат
Прочитаны три подготовленных предопределённых вида: Предопределенный Истина, имена Оклад, Премия, Отсутствие.
У Оклад Комментарий = Учебный оклад. ПериодДействияБазовый Ложь задан в подготовке.
Ожидаемый результат
Прочитать свойства собственных видов расчета запросом по подготовленной учебной схеме.
На что обратить внимание
Набор в памяти не является таблицей запросов: записи должны быть сохранены собственным регистратором.
Период регистрации, период действия и базовый период — разные понятия. Месячная периодичность не делает начало периода действия равным дате документа.
База и данные графика являются исходными данными расчёта. Результат премии остаётся 0, пока прикладной код явно не вычислит и не запишет сумму.
Общий УчебныйИсточник здесь не разделитель. Страницу общего реквизита таблицы базы, требующую разделитель НезависимоИСовместно, этот урок намеренно не покрывает.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.