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