Посмотреть состояние итогов собственного бухгалтерского регистра

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

Использование итогов, текущих итогов и разделение — три разные настройки. Периоды рассчитанных итогов не являются периодом наличия проводок.

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

Полный серверный общий модуль собственной конфигурации УчебнаяБухгалтерия85. Нет работы с регистрами БП/КА2.

Подготовка

  1. Создайте НОВУЮ пустую файловую базу с именем корневой конфигурации УчебнаяБухгалтерия85, управляемым режимом блокировок. Это отдельный стенд, не УТ/КА2/УНФ/БП и не копия с рабочими данными.

  2. Планы счетов → УчебныеСчета85: код Строка 20, Максимальное количество субконто 0, без флагов учёта. Создайте два предопределённых негрупповых счёта: УчебныйАктив, код DEMO-A, вид Активный; УчебныйПассив, код DEMO-P, вид Пассивный. Оба не забалансовые. Не создавайте счёт 41/60 и не называйте опыт реальным планом бухучёта.

  3. Документы → УчебнаяОперация85: номер Строка 40, автонумерация выключена. Без пользовательских реквизитов, проведения, обработчиков, подписок, планов обмена и внешних вызовов.

  4. Регистры бухгалтерии → УчебныеПроводки85: план УчебныеСчета85, Корреспонденция включена. Единственное измерение МеткаОперации: Строка 80, Балансовый включён, проверка заполнения Показывать ошибку. Единственный ресурс Сумма: Число 15,2, Балансовый включён. Реквизитов нет. Длина уточнения периода 3.

  5. Создайте второй регистр УчебныеОдносторонние85 с теми же планом, измерением, ресурсом и длиной уточнения периода, но Корреспонденция выключена. У обоих единственный регистратор УчебнаяОперация85. Модули наборов и документа пустые, кроме отдельной экспортной учебной процедуры в последнем уроке.

  6. Обновите конфигурацию базы данных и убедитесь, что предопределённые счета созданы как данные. Создайте серверный общий модуль УчебнаяБухгалтерияПримеры с флагом Сервер. Вставьте весь модуль одного урока, вызовите УчебнаяБухгалтерияПримеры.ВыполнитьПример() из серверной команды своей обработки.

  7. Первые семь задач не записывают данные. Восьмая кратковременно записывает собственный документ и проводки в собственной транзакции, которую обязательно отменяет. Девятая относится к модулю собственного набора, а не общему модулю.

  8. Отмена транзакции не отменяет письма, HTTP и внешние файлы. Поэтому у собственного документа и наборов не должно быть таких обработчиков или подписок. Привилегированный режим не включается.

  9. В обоих собственных регистрах использование итогов включено. Для урока выборки по метке у измерения МеткаОперации включите Индексировать, затем обновите конфигурацию базы данных.

  10. Метка каждой задачи содержит новый UUID. Не подставляйте DEMO-BOOK или метку другого опыта: отчёт должен читать только собственные временные проводки.

  11. План без субконто: фактические вызовы Остатки имеют четыре аргумента, Обороты и ОборотыДтКт — пять. В плане с субконто набор аргументов будет другим.

Процедура ВыполнитьПример() Экспорт
    Если Метаданные.Документы.Количество() <> 1
        ИЛИ Метаданные.ПланыСчетов.Количество() <> 1
        ИЛИ Метаданные.РегистрыБухгалтерии.Количество() <> 2
        ИЛИ Метаданные.Документы.Найти("УчебнаяОперация85") = Неопределено
        ИЛИ Метаданные.ПланыСчетов.Найти("УчебныеСчета85") = Неопределено Тогда
        ВызватьИсключение "Разрешены только собственные документ, план счетов и два регистра";
    КонецЕсли;
    Если Метаданные.ПланыСчетов.УчебныеСчета85.МаксКоличествоСубконто <> 0 Тогда
        ВызватьИсключение "В этом опыте план счетов без субконто";
    КонецЕсли;
    Для Каждого ИмяРегистра Из СтрРазделить("УчебныеПроводки85,УчебныеОдносторонние85", ",") Цикл
        Описание = Метаданные.РегистрыБухгалтерии.Найти(ИмяРегистра);
        Если Описание = Неопределено Тогда
            ВызватьИсключение "Не найден собственный регистр " + ИмяРегистра;
        КонецЕсли;
        Если Описание.Корреспонденция <> (ИмяРегистра = "УчебныеПроводки85")
            ИЛИ Описание.ПланСчетов.Имя <> "УчебныеСчета85"
            ИЛИ Описание.Измерения.Количество() <> 1
            ИЛИ Описание.Ресурсы.Количество() <> 1
            ИЛИ Описание.Реквизиты.Количество() <> 0
            ИЛИ Описание.Измерения.Найти("МеткаОперации") = Неопределено
            ИЛИ Описание.Ресурсы.Найти("Сумма") = Неопределено
            ИЛИ Описание.ДлинаУточненияПериода <> 3 Тогда
            ВызватьИсключение "Схема собственного регистра отличается от учебной";
        КонецЕсли;
    КонецЦикла;
    СчетДебета = ПланыСчетов.УчебныеСчета85.УчебныйАктив;
    СчетКредита = ПланыСчетов.УчебныеСчета85.УчебныйПассив;
    Если СчетДебета.Пустая() ИЛИ СчетКредита.Пустая() Тогда
        ВызватьИсключение "Нужны два собственных предопределённых счёта";
    КонецЕсли;
    Если СчетДебета.ПолучитьОбъект() = Неопределено ИЛИ СчетКредита.ПолучитьОбъект() = Неопределено Тогда
        ВызватьИсключение "Данные собственных счетов не созданы";
    КонецЕсли;
    Менеджер = РегистрыБухгалтерии.УчебныеПроводки85;
    ИспользуютсяИтоги = Менеджер.ПолучитьИспользованиеИтогов();
    ТекущиеИтоги = Менеджер.ПолучитьИспользованиеТекущихИтогов();
    Разделение = Менеджер.ПолучитьРежимРазделенияИтогов();
    Минимум = Менеджер.ПолучитьМинимальныйПериодРассчитанныхИтогов();
    Максимум = Менеджер.ПолучитьМаксимальныйПериодРассчитанныхИтогов();
    Сообщить(ТипЗнч(ИспользуютсяИтоги) = Тип("Булево"));
    Сообщить(ТипЗнч(ТекущиеИтоги) = Тип("Булево"));
    Сообщить(ТипЗнч(Разделение) = Тип("Булево"));
    Сообщить(ТипЗнч(Минимум) = Тип("Дата") И ТипЗнч(Максимум) = Тип("Дата"));
    Сообщить("Используются итоги: " + Строка(ИспользуютсяИтоги));
    Сообщить("Текущие итоги: " + Строка(ТекущиеИтоги));
    Сообщить("Разделение: " + Строка(Разделение));
    Сообщить("Минимальный период: " + Строка(Минимум));
    Сообщить("Максимальный период: " + Строка(Максимум));
КонецПроцедуры

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

  1. Проверить принадлежность собственной схемы и получить менеджер только УчебныеПроводки85.

  2. Прочитать три булевых режима без вызова установщиков и пересчёта.

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

  4. Разделить факт состояния итогов и содержимое движений: эти методы не читают сумму 800 и не доказывают существование проводок.

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

  1. Четыре булевых сообщения Истина подтверждают типы, затем пять фактических значений состояния.

  2. В коде нет УстановитьИспользованиеИтогов и ПересчитатьИтоги; настройка базы этим уроком не меняется.

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

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

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

  1. Отключённые текущие итоги не означают нулевой актуальный остаток.

  2. Настройки итогов влияют на способ и производительность расчёта, не заменяют сами бухгалтерские движения.

  3. Не включайте пересчёт рабочей базы автоматически по результату этого просмотра.

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

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

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

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

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