Позволяет управлять данными регистра. С помощью его методов можно получить выборку, набор записей регистра, получить форму или макет.
Полное описание, параметры и ограничения
РегистрРасчетаМенеджер.<Имя регистра расчета> (CalculationRegisterManager.<Calculation register name>)
РегистрРасчетаМенеджер.<Имя регистра расчета> (CalculationRegisterManager.<Calculation register name>)
Доступен, начиная с версии 8.0.
Свойства:
Перерасчеты (Recalculations)
Методы:
Выбрать (Select)
ВыбратьПоРегистратору (SelectByRecorder)
ПолучитьБазу (GetBase)
ПолучитьДанныеГрафика (GetScheduleData)
ПолучитьМакет (GetTemplate)
ПолучитьФорму (GetForm)
ПолучитьФормуСписка (GetListForm)
СоздатьКлючЗаписи (CreateRecordKey)
СоздатьНаборЗаписей (CreateRecordSet)
События:
ОбработкаПолученияФормы (FormGetProcessing)
Описание:
Позволяет управлять данными регистра. С помощью его методов можно получить выборку, набор записей регистра, получить форму или макет.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Возможен обмен с сервером.
См. также:
РегистрыРасчетаМенеджер, свойство <Имя регистра расчета>
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Отличить активность и сторно от простого итога ресурса
Итог суммирует числовое поле строк в памяти. Условный знак сторно и отбор активности нужно показать отдельно, не выдавая их за механизм расчёта платформы.
Где и как запускать
Полный серверный общий модуль собственной учебной конфигурации. Набор в памяти и собственная плановая ссылка; объект документа не создаётся. Без расчёта зарплаты; запуск в 1С не проверен.
Подготовка
Создайте новую пустую файловую базу с именем корня УчебныеНаборыРасчета85. Это отдельный учебный стенд, не ЗУП, КА2, УНФ, УТ или БП. Других документов, регистров и справочников в нём не должно быть.
Создайте план видов расчёта УчебныеВиды85: тип кода Строка, длина кода 10, наименования 100; использование периода действия выключено, зависимость от видов расчёта Не использовать. Реквизиты и табличные части не добавляйте.
В предопределённых видах плана создайте УчебноеНачисление с кодом DEMO и наименованием Учебная сумма. Не задавайте зависимости или вытесняющие виды. Это вид учебного расчёта, не формула зарплаты.
Создайте документ УчебныйРегистратор85 без реквизитов и табличных частей. Создайте регистр расчёта УчебныеСуммы85: периодичность Месяц, план УчебныеВиды85; период действия и базовый период выключены; график и перерасчёты не задавайте. На вкладке Движения собственного документа отметьте только этот регистр.
Добавьте в регистр измерение МеткаОперации: Строка(80), Проверка заполнения — Выдавать ошибку; единственный ресурс Сумма: Число(15,2). Других измерений, ресурсов и реквизитов не добавляйте. Обновите конфигурацию учебной базы, чтобы создать предопределённый вид.
Оставьте модули документа и набора пустыми, без подписок на события. Создайте серверный общий модуль УчебныеЗаписиРасчета с флагом Сервер, без Привилегированный. Вставьте полный модуль выбранного урока и вызовите ВыполнитьПример из своей серверной команды учебной обработки.
ПолучитьСсылку своего менеджера с новым UUID формирует непустое ссылочное значение собственного типа. Объект документа не создаётся и не записывается; непустая ссылка не доказывает существование документа. Наборы меняются только в памяти; вызовов Записать нет. Отдельный урок чтения ограничен своими новыми плановыми ссылками.
Код не вычисляет зарплату, налоги, базу или фактический период действия. Примеры сверены со справкой установленной платформы, но автоматически в 1С не исполнялись.
Процедура ВыполнитьПример() Экспорт
Набор = СоздатьСвойНабор();
Набор.Получить(1).Сторно = Истина;
Сообщить(Набор.Итог("Сумма") = 800);
Сообщить(ПосчитатьУчебнуюСумму(Набор) = 700);
Набор.УстановитьАктивность(Ложь);
Сообщить(НЕ Набор.Получить(0).Активность И НЕ Набор.Получить(1).Активность);
Сообщить(Набор.Итог("Сумма") = 800);
Сообщить(ПосчитатьУчебнуюСумму(Набор) = 0);
Набор.УстановитьАктивность(Истина);
Сообщить(Набор.Получить(0).Активность И Набор.Получить(1).Активность);
Сообщить(ПосчитатьУчебнуюСумму(Набор) = 700);
КонецПроцедуры
Процедура ПроверитьУчебнуюСхему()
Если Метаданные.Документы.Количество() <> 1 ИЛИ Метаданные.ПланыВидовРасчета.Количество() <> 1 ИЛИ Метаданные.РегистрыРасчета.Количество() <> 1 ИЛИ Метаданные.Справочники.Количество() <> 0 ИЛИ Метаданные.РегистрыСведений.Количество() <> 0 ИЛИ Метаданные.РегистрыНакопления.Количество() <> 0 ИЛИ Метаданные.РегистрыБухгалтерии.Количество() <> 0 Тогда
ВызватьИсключение "Нужна отдельная пустая учебная конфигурация УчебныеНаборыРасчета85";
КонецЕсли;
План = Метаданные.ПланыВидовРасчета.Найти("УчебныеВиды85");
Регистр = Метаданные.РегистрыРасчета.Найти("УчебныеСуммы85");
Документ = Метаданные.Документы.Найти("УчебныйРегистратор85");
Если План = Неопределено ИЛИ Регистр = Неопределено ИЛИ Документ = Неопределено Тогда
ВызватьИсключение "Не найдены три собственных объекта учебной схемы";
КонецЕсли;
Если План.ТипКода <> Метаданные.СвойстваОбъектов.ТипКодаПланаВидовРасчета.Строка
ИЛИ План.ДлинаКода <> 10 ИЛИ План.ДлинаНаименования <> 100
ИЛИ План.ИспользованиеПериодаДействия
ИЛИ План.ЗависимостьОтВидовРасчета <> Метаданные.СвойстваОбъектов.ИспользованиеБазыПланаВидовРасчета.НеИспользовать
ИЛИ План.Реквизиты.Количество() <> 0 ИЛИ План.ТабличныеЧасти.Количество() <> 0
ИЛИ Документ.Реквизиты.Количество() <> 0 ИЛИ Документ.ТабличныеЧасти.Количество() <> 0 Тогда
ВызватьИсключение "План видов или документ отличаются от подготовки";
КонецЕсли;
Если Регистр.Периодичность <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраРасчета.Месяц
ИЛИ Регистр.ПериодДействия ИЛИ Регистр.БазовыйПериод
ИЛИ Регистр.ПланВидовРасчета <> План
ИЛИ Регистр.Измерения.Количество() <> 1 ИЛИ Регистр.Ресурсы.Количество() <> 1
ИЛИ Регистр.Реквизиты.Количество() <> 0 ИЛИ Регистр.Перерасчеты.Количество() <> 0 Тогда
ВызватьИсключение "Регистр должен быть помесячным, без периодов действия, базы и перерасчетов";
КонецЕсли;
Метка = Регистр.Измерения.Найти("МеткаОперации");
Сумма = Регистр.Ресурсы.Найти("Сумма");
Если Метка = Неопределено ИЛИ Сумма = Неопределено Тогда
ВызватьИсключение "Нужны собственные поля МеткаОперации и Сумма";
КонецЕсли;
Если Метка.Тип.Типы().Количество() <> 1 ИЛИ НЕ Метка.Тип.СодержитТип(Тип("Строка"))
ИЛИ Метка.Тип.КвалификаторыСтроки.Длина <> 80
ИЛИ Метка.ПроверкаЗаполнения <> ПроверкаЗаполнения.ВыдаватьОшибку
ИЛИ Сумма.Тип.Типы().Количество() <> 1 ИЛИ НЕ Сумма.Тип.СодержитТип(Тип("Число"))
ИЛИ Сумма.Тип.КвалификаторыЧисла.Разрядность <> 15
ИЛИ Сумма.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти <> 2 Тогда
ВызватьИсключение "Типы полей и проверка заполнения отличаются от подготовки";
КонецЕсли;
КонецПроцедуры
Функция СоздатьСвоюСсылкуРегистратора()
ПлановаяСсылка = Документы.УчебныйРегистратор85.ПолучитьСсылку(Новый УникальныйИдентификатор);
Если ТипЗнч(ПлановаяСсылка) <> Тип("ДокументСсылка.УчебныйРегистратор85") Или ПлановаяСсылка.Пустая() Тогда
ВызватьИсключение "Нужна собственная непустая плановая ссылка регистратора";
КонецЕсли;
Возврат ПлановаяСсылка;
КонецФункции
Процедура ЗаполнитьСвоюЗапись(Запись, СвояСсылка, Метка, Сумма)
Запись.Регистратор = СвояСсылка;
Запись.ПериодРегистрации = Дата(2026, 10, 3);
Запись.ВидРасчета = ПланыВидовРасчета.УчебныеВиды85.УчебноеНачисление;
Запись.Активность = Истина;
Запись.Сторно = Ложь;
Запись.МеткаОперации = Метка;
Запись.Сумма = Сумма;
КонецПроцедуры
Функция СоздатьСвойНабор()
ПроверитьУчебнуюСхему();
СвояСсылка = СоздатьСвоюСсылкуРегистратора();
Набор = РегистрыРасчета.УчебныеСуммы85.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(СвояСсылка);
ЗаполнитьСвоюЗапись(Набор.Добавить(), СвояСсылка, "Книга", 750);
ЗаполнитьСвоюЗапись(Набор.Добавить(), СвояСсылка, "Ручка", 50);
Возврат Набор;
КонецФункции
Функция ПосчитатьУчебнуюСумму(СвойНабор)
Сумма = 0;
Для Каждого Запись Из СвойНабор Цикл
Если Запись.Активность Тогда
Если Запись.Сторно Тогда
Сумма = Сумма - Запись.Сумма;
Иначе
Сумма = Сумма + Запись.Сумма;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Сумма;
КонецФункцииРазбор по шагам
Поставить флаг Сторно только у собственной ручки 50. Значение ресурса остаётся положительным 50.
Сравнить простой итог 800 с явно написанным учебным правилом: активная обычная книга +750, активная сторнирующая ручка −50, результат 700.
УстановитьАктивность(Ложь) изменяет флаг всех двух записей. Наш отдельный фильтр даст 0, числовой Итог продолжит давать 800.
Включить активность обратно и проверить 700. Ни период, ни вытеснение, ни зарплата этим алгоритмом не рассчитаны.
Как проверить результат
Семь сообщений Истина. Условная сумма 700 → 0 → 700, простой итог ресурса всегда 800.
Все флаги изменены только у собственных строк незаписанного набора.
Ожидаемый результат
Разобрано, почему сумма значений, признак сторно и алгоритм отбора — разные операции.
На что обратить внимание
ПосчитатьУчебнуюСумму — собственная функция урока, не метод платформы и не производственный алгоритм.
Не считайте выставление Сторно автоматическим изменением знака Сумма.
Фактический период действия и получение базы не демонстрируются: соответствующие механизмы выключены.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Создать две записи расчётного регистра и отличить сумму от начисления
Вид расчёта и период — поля записи. Итог числового ресурса 750+50 не является алгоритмом зарплаты или остатком базы.
Где и как запускать
Полный серверный общий модуль собственной учебной конфигурации. Набор в памяти и собственная плановая ссылка; объект документа не создаётся. Без расчёта зарплаты; запуск в 1С не проверен.
Подготовка
Создайте новую пустую файловую базу с именем корня УчебныеНаборыРасчета85. Это отдельный учебный стенд, не ЗУП, КА2, УНФ, УТ или БП. Других документов, регистров и справочников в нём не должно быть.
Создайте план видов расчёта УчебныеВиды85: тип кода Строка, длина кода 10, наименования 100; использование периода действия выключено, зависимость от видов расчёта Не использовать. Реквизиты и табличные части не добавляйте.
В предопределённых видах плана создайте УчебноеНачисление с кодом DEMO и наименованием Учебная сумма. Не задавайте зависимости или вытесняющие виды. Это вид учебного расчёта, не формула зарплаты.
Создайте документ УчебныйРегистратор85 без реквизитов и табличных частей. Создайте регистр расчёта УчебныеСуммы85: периодичность Месяц, план УчебныеВиды85; период действия и базовый период выключены; график и перерасчёты не задавайте. На вкладке Движения собственного документа отметьте только этот регистр.
Добавьте в регистр измерение МеткаОперации: Строка(80), Проверка заполнения — Выдавать ошибку; единственный ресурс Сумма: Число(15,2). Других измерений, ресурсов и реквизитов не добавляйте. Обновите конфигурацию учебной базы, чтобы создать предопределённый вид.
Оставьте модули документа и набора пустыми, без подписок на события. Создайте серверный общий модуль УчебныеЗаписиРасчета с флагом Сервер, без Привилегированный. Вставьте полный модуль выбранного урока и вызовите ВыполнитьПример из своей серверной команды учебной обработки.
ПолучитьСсылку своего менеджера с новым UUID формирует непустое ссылочное значение собственного типа. Объект документа не создаётся и не записывается; непустая ссылка не доказывает существование документа. Наборы меняются только в памяти; вызовов Записать нет. Отдельный урок чтения ограничен своими новыми плановыми ссылками.
Код не вычисляет зарплату, налоги, базу или фактический период действия. Примеры сверены со справкой установленной платформы, но автоматически в 1С не исполнялись.
Процедура ВыполнитьПример() Экспорт
Набор = СоздатьСвойНабор();
Сообщить(Набор.Количество() = 2);
Сообщить(Набор.Итог("Сумма") = 800);
Сообщить(Набор.Метаданные().Имя = "УчебныеСуммы85");
Первая = Набор.Получить(0);
Сообщить(ТипЗнч(Первая) = Тип("РегистрРасчетаЗапись.УчебныеСуммы85"));
Сообщить(Первая.ПериодРегистрации = Дата(2026, 10, 1));
Сообщить(Первая.МеткаОперации = "Книга" И Первая.Сумма = 750);
Сообщить(Первая.ВидРасчета = ПланыВидовРасчета.УчебныеВиды85.УчебноеНачисление);
Сообщить(Первая.Активность И НЕ Первая.Сторно);
Сообщить(ТипЗнч(Первая.НомерСтроки) = Тип("Число"));
Сообщить("Модифицированность своего набора: " + Строка(Набор.Модифицированность()));
КонецПроцедуры
Процедура ПроверитьУчебнуюСхему()
Если Метаданные.Документы.Количество() <> 1 ИЛИ Метаданные.ПланыВидовРасчета.Количество() <> 1 ИЛИ Метаданные.РегистрыРасчета.Количество() <> 1 ИЛИ Метаданные.Справочники.Количество() <> 0 ИЛИ Метаданные.РегистрыСведений.Количество() <> 0 ИЛИ Метаданные.РегистрыНакопления.Количество() <> 0 ИЛИ Метаданные.РегистрыБухгалтерии.Количество() <> 0 Тогда
ВызватьИсключение "Нужна отдельная пустая учебная конфигурация УчебныеНаборыРасчета85";
КонецЕсли;
План = Метаданные.ПланыВидовРасчета.Найти("УчебныеВиды85");
Регистр = Метаданные.РегистрыРасчета.Найти("УчебныеСуммы85");
Документ = Метаданные.Документы.Найти("УчебныйРегистратор85");
Если План = Неопределено ИЛИ Регистр = Неопределено ИЛИ Документ = Неопределено Тогда
ВызватьИсключение "Не найдены три собственных объекта учебной схемы";
КонецЕсли;
Если План.ТипКода <> Метаданные.СвойстваОбъектов.ТипКодаПланаВидовРасчета.Строка
ИЛИ План.ДлинаКода <> 10 ИЛИ План.ДлинаНаименования <> 100
ИЛИ План.ИспользованиеПериодаДействия
ИЛИ План.ЗависимостьОтВидовРасчета <> Метаданные.СвойстваОбъектов.ИспользованиеБазыПланаВидовРасчета.НеИспользовать
ИЛИ План.Реквизиты.Количество() <> 0 ИЛИ План.ТабличныеЧасти.Количество() <> 0
ИЛИ Документ.Реквизиты.Количество() <> 0 ИЛИ Документ.ТабличныеЧасти.Количество() <> 0 Тогда
ВызватьИсключение "План видов или документ отличаются от подготовки";
КонецЕсли;
Если Регистр.Периодичность <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраРасчета.Месяц
ИЛИ Регистр.ПериодДействия ИЛИ Регистр.БазовыйПериод
ИЛИ Регистр.ПланВидовРасчета <> План
ИЛИ Регистр.Измерения.Количество() <> 1 ИЛИ Регистр.Ресурсы.Количество() <> 1
ИЛИ Регистр.Реквизиты.Количество() <> 0 ИЛИ Регистр.Перерасчеты.Количество() <> 0 Тогда
ВызватьИсключение "Регистр должен быть помесячным, без периодов действия, базы и перерасчетов";
КонецЕсли;
Метка = Регистр.Измерения.Найти("МеткаОперации");
Сумма = Регистр.Ресурсы.Найти("Сумма");
Если Метка = Неопределено ИЛИ Сумма = Неопределено Тогда
ВызватьИсключение "Нужны собственные поля МеткаОперации и Сумма";
КонецЕсли;
Если Метка.Тип.Типы().Количество() <> 1 ИЛИ НЕ Метка.Тип.СодержитТип(Тип("Строка"))
ИЛИ Метка.Тип.КвалификаторыСтроки.Длина <> 80
ИЛИ Метка.ПроверкаЗаполнения <> ПроверкаЗаполнения.ВыдаватьОшибку
ИЛИ Сумма.Тип.Типы().Количество() <> 1 ИЛИ НЕ Сумма.Тип.СодержитТип(Тип("Число"))
ИЛИ Сумма.Тип.КвалификаторыЧисла.Разрядность <> 15
ИЛИ Сумма.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти <> 2 Тогда
ВызватьИсключение "Типы полей и проверка заполнения отличаются от подготовки";
КонецЕсли;
КонецПроцедуры
Функция СоздатьСвоюСсылкуРегистратора()
ПлановаяСсылка = Документы.УчебныйРегистратор85.ПолучитьСсылку(Новый УникальныйИдентификатор);
Если ТипЗнч(ПлановаяСсылка) <> Тип("ДокументСсылка.УчебныйРегистратор85") Или ПлановаяСсылка.Пустая() Тогда
ВызватьИсключение "Нужна собственная непустая плановая ссылка регистратора";
КонецЕсли;
Возврат ПлановаяСсылка;
КонецФункции
Процедура ЗаполнитьСвоюЗапись(Запись, СвояСсылка, Метка, Сумма)
Запись.Регистратор = СвояСсылка;
Запись.ПериодРегистрации = Дата(2026, 10, 3);
Запись.ВидРасчета = ПланыВидовРасчета.УчебныеВиды85.УчебноеНачисление;
Запись.Активность = Истина;
Запись.Сторно = Ложь;
Запись.МеткаОперации = Метка;
Запись.Сумма = Сумма;
КонецПроцедуры
Функция СоздатьСвойНабор()
ПроверитьУчебнуюСхему();
СвояСсылка = СоздатьСвоюСсылкуРегистратора();
Набор = РегистрыРасчета.УчебныеСуммы85.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(СвояСсылка);
ЗаполнитьСвоюЗапись(Набор.Добавить(), СвояСсылка, "Книга", 750);
ЗаполнитьСвоюЗапись(Набор.Добавить(), СвояСсылка, "Ручка", 50);
Возврат Набор;
КонецФункцииРазбор по шагам
Проверить свою схему до создания объектов.
Создать свою непустую плановую ссылку ПолучитьСсылку своего менеджера с новым UUID; проверить конкретный тип и поставить ссылку в отбор набора и в каждую запись. Объект документа не создаётся.
Добавить две полностью заполненные строки Книга=750 и Ручка=50, указав собственный предопределённый вид.
Для помесячного регистра 03.10.2026 приводится к 01.10.2026. Индекс 0 и НомерСтроки — разные понятия.
Посчитать ресурс в памяти, показать фактическую модифицированность, ничего не записывать.
Как проверить результат
Девять булевых проверок Истина, затем фактический флаг модифицированности.
Документ и движения не появились в базе.
Ожидаемый результат
Полная техническая задача: собственная схема, типизированный вид расчёта, период и две строки в памяти.
На что обратить внимание
НомерСтроки только читается; не присваивайте ему индекс массива.
Итог не вызывает формулу расчёта и не проверяет наличие выплат.
Поля базового и действующего периода здесь не используются: соответствующие механизмы схемы выключены.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.