У одностороннего регистра есть Счет и ВидДвижения. Итог двух положительных сумм 1500 отличается от учебного знакового результата 0.
Где и как запускать
Полный серверный общий модуль своей отдельной конфигурации УчебнаяБухгалтерия85.
Подготовка
Создайте НОВУЮ пустую файловую базу с именем корневой конфигурации УчебнаяБухгалтерия85, управляемым режимом блокировок. Это отдельный стенд, не УТ/КА2/УНФ/БП и не копия с рабочими данными.
Планы счетов → УчебныеСчета85: код Строка 20, Максимальное количество субконто 0, без флагов учёта. Создайте два предопределённых негрупповых счёта: УчебныйАктив, код DEMO-A, вид Активный; УчебныйПассив, код DEMO-P, вид Пассивный. Оба не забалансовые. Не создавайте счёт 41/60 и не называйте опыт реальным планом бухучёта.
Документы → УчебнаяОперация85: номер Строка 40, автонумерация выключена. Без пользовательских реквизитов, проведения, обработчиков, подписок, планов обмена и внешних вызовов.
Регистры бухгалтерии → УчебныеПроводки85: план УчебныеСчета85, Корреспонденция включена. Единственное измерение МеткаОперации: Строка 80, Балансовый включён, проверка заполнения Показывать ошибку. Единственный ресурс Сумма: Число 15,2, Балансовый включён. Реквизитов нет. Длина уточнения периода 3.
Создайте второй регистр УчебныеОдносторонние85 с теми же планом, измерением, ресурсом и длиной уточнения периода, но Корреспонденция выключена. У обоих единственный регистратор УчебнаяОперация85. Модули наборов и документа пустые, кроме отдельной экспортной учебной процедуры в последнем уроке.
Обновите конфигурацию базы данных и убедитесь, что предопределённые счета созданы как данные. Создайте серверный общий модуль УчебнаяБухгалтерияПримеры с флагом Сервер. Вставьте весь модуль одного урока, вызовите УчебнаяБухгалтерияПримеры.ВыполнитьПример() из серверной команды своей обработки.
Первые семь задач не записывают данные. Восьмая кратковременно записывает собственный документ и проводки в собственной транзакции, которую обязательно отменяет. Девятая относится к модулю собственного набора, а не общему модулю.
Отмена транзакции не отменяет письма, HTTP и внешние файлы. Поэтому у собственного документа и наборов не должно быть таких обработчиков или подписок. Привилегированный режим не включается.
Процедура ВыполнитьПример() Экспорт
Если Метаданные.Документы.Количество() <> 1
ИЛИ Метаданные.ПланыСчетов.Количество() <> 1
ИЛИ Метаданные.РегистрыБухгалтерии.Количество() <> 2
ИЛИ Метаданные.Документы.Найти("УчебнаяОперация85") = Неопределено
ИЛИ Метаданные.ПланыСчетов.Найти("УчебныеСчета85") = Неопределено Тогда
ВызватьИсключение "Разрешены только собственные документ, план счетов и два регистра";
КонецЕсли;
Если Метаданные.ПланыСчетов.УчебныеСчета85.МаксКоличествоСубконто <> 0 Тогда
ВызватьИсключение "В этом опыте план счетов без субконто";
КонецЕсли;
Для Каждого ИмяРегистра Из СтрРазделить("УчебныеПроводки85,УчебныеОдносторонние85", ",") Цикл
Описание = Метаданные.РегистрыБухгалтерии.Найти(ИмяРегистра);
Если Описание = Неопределено Тогда
ВызватьИсключение "Не найден собственный регистр " + ИмяРегистра;
КонецЕсли;
Если Описание.Корреспонденция <> (ИмяРегистра = "УчебныеПроводки85")
ИЛИ Описание.ПланСчетов.Имя <> "УчебныеСчета85"
ИЛИ Описание.Измерения.Количество() <> 1
ИЛИ Описание.Ресурсы.Количество() <> 1
ИЛИ Описание.Реквизиты.Количество() <> 0
ИЛИ Описание.Измерения.Найти("МеткаОперации") = Неопределено
ИЛИ Описание.Ресурсы.Найти("Сумма") = Неопределено
ИЛИ Описание.ДлинаУточненияПериода <> 3 Тогда
ВызватьИсключение "Схема собственного регистра отличается от учебной";
КонецЕсли;
КонецЦикла;
СчетДебета = ПланыСчетов.УчебныеСчета85.УчебныйАктив;
СчетКредита = ПланыСчетов.УчебныеСчета85.УчебныйПассив;
Если СчетДебета.Пустая() ИЛИ СчетКредита.Пустая() Тогда
ВызватьИсключение "Нужны два собственных предопределённых счёта";
КонецЕсли;
Если СчетДебета.ПолучитьОбъект() = Неопределено ИЛИ СчетКредита.ПолучитьОбъект() = Неопределено Тогда
ВызватьИсключение "Данные собственных счетов не созданы";
КонецЕсли;
СвояСсылка = Документы.УчебнаяОперация85.ПолучитьСсылку(Новый УникальныйИдентификатор);
Односторонний = РегистрыБухгалтерии.УчебныеОдносторонние85.СоздатьНаборЗаписей();
Односторонний.Отбор.Регистратор.Установить(СвояСсылка);
Односторонний.ДобавитьДебет();
Дебет = Односторонний.Получить(0);
ЗаполнитьСвоюОдностороннююЗапись(Дебет, СвояСсылка, СчетДебета);
Односторонний.ДобавитьКредит();
Кредит = Односторонний.Получить(1);
ЗаполнитьСвоюОдностороннююЗапись(Кредит, СвояСсылка, СчетДебета);
Сообщить(Дебет.ВидДвижения = ВидДвиженияБухгалтерии.Дебет);
Сообщить(Кредит.ВидДвижения = ВидДвиженияБухгалтерии.Кредит);
Сообщить(Односторонний.Итог("Сумма") = 1500);
Сообщить(СвойЗнаковыйРезультат(Односторонний) = 0);
Кредит.Активность = Ложь;
Сообщить(Односторонний.Итог("Сумма") = 1500);
Сообщить(СвойЗнаковыйРезультат(Односторонний) = 750);
Односторонний.УстановитьАктивность(Ложь);
Сообщить(Не Дебет.Активность И Не Кредит.Активность);
Сообщить(СвойЗнаковыйРезультат(Односторонний) = 0);
КонецПроцедуры
Процедура ЗаполнитьСвоюОдностороннююЗапись(Запись, СвояСсылка, Счет)
Запись.Период = Дата(2026, 9, 15, 10, 0, 0);
Запись.Регистратор = СвояСсылка;
Запись.Активность = Истина;
Запись.Счет = Счет;
Запись.МеткаОперации = "DEMO-BOOK";
Запись.Сумма = 750;
КонецПроцедуры
Функция СвойЗнаковыйРезультат(Набор)
Результат = 0;
Для Каждого Запись Из Набор Цикл
Если НЕ Запись.Активность Тогда
Продолжить;
КонецЕсли;
Если Запись.ВидДвижения = ВидДвиженияБухгалтерии.Дебет Тогда
Результат = Результат + Запись.Сумма;
Иначе
Результат = Результат - Запись.Сумма;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункцииРазбор по шагам
Использовать другой собственный регистр с выключенной корреспонденцией. Не обращаться в нём к СчетДт/СчетКт.
ДобавитьДебет и ДобавитьКредит вызываются без присваивания результата; собственные новые записи берутся по индексам 0 и 1.
Обе суммы 750, счёт один. Итог суммирует 1500; отдельная учебная функция учитывает направление и активность, получает 0.
Выключить активность только кредита: Итог всё ещё 1500, знаковый результат активных строк 750.
УстановитьАктивность(Ложь) отключает все записи собственного набора; знаковый результат снова 0.
Как проверить результат
Восемь сообщений Истина: направления, сумма 1500 и знаковые значения 0,750,0.
Обе записи в памяти; функция не является запросом реального бухгалтерского остатка.
Ожидаемый результат
Различие корреспонденции и одностороннего направления разобрано на реальных записях.
На что обратить внимание
ДобавитьДебет/ДобавитьКредит имеют смысл только без корреспонденции.
Итог не исключает неактивные записи и не меняет знак кредита автоматически.
СвойЗнаковыйРезультат — арифметика данного одного счёта в памяти, не универсальный баланс активных, пассивных и активно-пассивных счетов.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.