Получить дни своего графика: ПериодРегистрации

Учебные задачи

Вид периода передаётся менеджеру настоящего собственного регистра с обязательным отбором по регистратору.

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

Сервер своей отдельной учебной конфигурации.

Подготовка

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

  2. Независимый НЕпериодический регистр сведений УчебныеДниПериодов: измерения График Строка 20 и ДатаГрафика Дата без времени; ресурс Дни Число 2.0. Вручную добавьте три собственные строки: График=КНИГИ, даты 11 / 12 / 13 января 2026, Дни=1. Других строк этого графика за январь не добавляйте.

  3. Регистр расчёта УчебныеПериоды: периодичность Месяц, план УчебныеВидыПериодов, Период действия=Да, Базовый период=Да. Измерение Участник Строка 20, ресурс Сумма Число 12.2, реквизит График Строка 20.

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

  5. Свой документ УчебныйРегистраторПериодов: проведение Разрешить, в Движениях отметьте только УчебныеПериоды. Модуль документа пустой: пример не вызывает проведение. Обновите свою учебную базу.

  6. Основной блок — тело серверной процедуры своей обработки; дополнительная функция — отдельно в том же модуле. Ручной запуск действительно создаёт один собственный документ и одну запись регистра; не меняйте имена на рабочие зарплатные регистры. График уже подготовлен вручную и не перезаписывается.

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

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

  1. Подготовьте реальные метаданные и три дня только своего графика.

  2. Создайте одну собственную запись и получите её настоящий регистратор.

  3. Прочитайте данные графика указанного периода по этому регистратору.

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

  1. ПериодРегистрации суммирует график за январь: 3 дня. БазовыйПериод 10–11 января содержит одну подготовленную строку: 1 день. ПериодДействия / ФактическийПериодДействия в этом опыте без вытеснения дают 3 дня.

  2. Сумма=0 — намеренно: получение календарных данных не рассчитывает зарплату. При наличии вытеснения фактический период может отличаться; здесь такое различие не выдумывается.

  3. Нативная таблица менеджера содержит номер записи и данные календаря; номера / имена колонок произвольно не подменяются. BSL, графики и записи при сборке HTML не выполнялись.

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

Есть полный собственный график, действительная запись и осмысленное сравнение периодов.

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

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

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

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

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

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

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