Документ «Операция (бухгалтерский и налоговый учёт)»

«Операция» — это ручной ввод проводок: бухгалтер сам задаёт Дт/Кт, субконто и суммы в двух таблицах — бухгалтерский учёт (регистр Типовой) и налоговый учёт (регистр Налоговый). В отличие от типовых документов, проводки не вычисляются программой — нет процедуры ОбработкаПроведения, движения вы вводите вручную. Используется для нестандартных операций, исправления ошибок, сторно и заполнения по шаблонам из справочника «Типовые операции». В разделе «Закрытие месяца» — это инструмент «дозаписать то, что не сделали типовые документы».

Бухгалтерия для Казахстана, ред. 3.0 · v3.0.72.1 · обновлено 2026-06-04

🎯 Что это и зачем

Большинство проводок в Бухгалтерии для Казахстана формируют типовые документы (реализация, поступление, начисление зарплаты, амортизация, закрытие месяца) — там Дт/Кт собирает программа по учётной политике. Но всегда остаётся хвост операций, которые ни один типовой документ не закрывает:

Для всего этого служит документ «Операция (бухгалтерский и налоговый учёт)» (метаданные — Документ.ОперацияБух). Его ключевая особенность: счета Дт/Кт задаёт человек, а не алгоритм. Программа лишь помогает — подставляет субконто по видам субконто счёта, переносит проводки из БУ в НУ по таблице соответствия, ставит знак «минус» при сторно и проверяет заполнение.

Чем «Операция» отличается от «Закрытия месяца». «Закрытие месяца» (Документ.ЗакрытиеМесяца) — это регламентный документ-дирижёр: он запускает набор регламентных операций (амортизация, переоценка валюты, расчёт себестоимости, финансовый результат, КПН) и формирует их проводки автоматически. «Операция» — это ручной документ для одной конкретной хозяйственной записи, которую вы вводите сами. Они дополняют друг друга: то, что не закрыл регламент, добивают «Операцией».

Кто работает: главный бухгалтер и опытные бухгалтеры — ручной ввод проводок требует понимания плана счетов и корреспонденций. Частота — по необходимости (чаще всего на закрытии периода).

🧭 Где найти

Раздел «Операции» → пункт «Операции (бухгалтерский и налоговый учёт)» (журнал операций). Новый документ — кнопкой «Создать». Список операций также доступен из «Журнала операций», где видны проводки всех документов.

📷 СКРИН 01
СКРИН 01 — раздел «Операции», открытый журнал «Операции (бухгалтерский и налоговый учёт)» с кнопкой «Создать». (AccountingKZ30 во Fresh; маршрут: Операции → Операции (бух. и налог. учёт))
⚠️ Пробел в навигации [KZ30-OPB-04]. В navigation-map.json маршрут для Документ.ОперацияБух отсутствует (есть только Документ.ЗакрытиеМесяца → раздел «Операции»). Точное название пункта меню во Fresh нужно сверить в интерфейсе — оно может отличаться («Операции», «Операции, введённые вручную», «Журнал операций»). Раздел определён как «Операции» по принадлежности к подсистеме регламентированного учёта. См. поле issues.

👤 Часть 1. Для пользователя

Проходим по шагам: от пустого документа до проведённой ручной операции, плюс сторно и заполнение по типовой операции.

Урок 1. Ручная операция (ввод проводок руками)

Когда: нужно внести проводку, которую не делает ни один типовой документ.

Шаг 1. Создаём документ

Раздел «Операции» → «Операции (бух. и налог. учёт)» → «Создать». Откроется форма операции с двумя вкладками движений: «Бухгалтерский учёт» (регистр Типовой) и «Налоговый учёт» (регистр Налоговый).

📷 СКРИН 02
СКРИН 02 — пустая форма операции, видны вкладки БУ и НУ.

Шаг 2. Заполняем шапку

📷 СКРИН 03
СКРИН 03 — заполненная шапка операции (Организация, Дата, Содержание).
💡 Подсказка. Содержание из шапки автоматически проставляется в каждую строку проводок, где поле «Содержание» строки оставлено пустым.

Шаг 3. Вводим проводки БУ (вкладка «Бухгалтерский учёт»)

Кнопкой «Добавить» создаём строку и заполняем: - Счёт Дт и Счёт Кт — из плана счетов КЗ (например, Дт 7210 «Административные расходы» — Кт 1610 «Краткосрочные авансы выданные»; банк — 1030, касса — 1010). - Субконто Дт 1–3 / Субконто Кт 1–3 — программа покажет только те субконто, которые заданы для выбранного счёта (контрагент, договор, статья затрат и т. д.). - Сумма — сумма проводки в тенге. - Количество, Валюта, Валютная сумма — появляются, только если счёт количественный/валютный.

📷 СКРИН 04
СКРИН 04 — вкладка «Бухгалтерский учёт» с введённой строкой проводки и заполненными субконто.
⚠️ Важно. При смене счёта в строке привязанные субконто очищаются — это нормально, заполните их заново под новый счёт. Не оставляйте субконто «от старого счёта».

Шаг 4. Налоговый учёт (вкладка «Налоговый учёт») — при необходимости

Если операция отражается и в НУ (учёт КПН), переходим на вкладку «Налоговый учёт». Можно ввести строки вручную или нажать «Заполнить НУ из БУ» — программа перенесёт проводки БУ в НУ по таблице соответствия счетов. - В НУ для каждого заполненного счёта обязателен вид учёта: Вид учёта Дт (если задан Счёт Дт) и Вид учёта Кт (если задан Счёт Кт). Это налоговые «виды учёта» (например, относимый/не относимый на вычеты) — без них документ не проведётся.

📷 СКРИН 05
СКРИН 05 — вкладка «Налоговый учёт»; кнопка «Заполнить НУ из БУ» и колонки «Вид учёта Дт/Кт».
💡 Подсказка. Если НУ уже заполнен, «Заполнить НУ из БУ» спросит подтверждение перед очисткой — чтобы не затереть введённое вручную.

Шаг 5. Проводим

«Провести» или «Записать и закрыть». Сумма всех проводок по дебету БУ автоматически попадёт в реквизит «Сумма операции» в шапке (для контроля). Проверить результат — отчётами «Оборотно-сальдовая ведомость», «Карточка счёта» или печатной формой «Бухгалтерская справка (С-1)» (меню «Печать»).

📷 СКРИН 06
СКРИН 06 — проведённая операция; в шапке заполнена «Сумма операции».
⚠️ Важно. Программа не проверяет, что сумма по Дт равна сумме по Кт, — за равенство (баланс проводки) отвечаете вы. Обязательное условие проведения — заполненная Организация и (для строк НУ) вид учёта по каждому счёту.

Урок 2. Сторно / исправление ошибки

Когда: нужно отменить ошибочную проводку или скорректировать ранее проведённый документ.

  1. В журнале операций (или из исходного документа) выбираем команду создания сторно/корректировки ранее введённого документа.
  2. Программа создаёт новую операцию, заполняет реквизит «Сторнируемый документ» (он становится обязательным) и копирует проводки исходного документа.
  3. Суммы корректировки вводятся со знаком, отменяющим исходное движение (сторно «красным»), либо как разница до правильного значения.
  4. Проводим — движения исходной записи будут скорректированы в регистрах БУ и НУ.
📷 СКРИН 07
СКРИН 07 — операция-корректировка с заполненным полем «Сторнируемый документ».
💡 Подсказка. Признак того, что операция — корректировка, программа хранит в служебном поле «Способ заполнения» (значение Корректировка). Если вы заполняете операцию обычным способом «Вручную», ссылка на сторнируемый документ сбрасывается автоматически при записи.

Урок 3. Заполнение по типовой операции (шаблон)

Когда: операция повторяется из месяца в месяц (списание, перераспределение) — её удобно описать один раз шаблоном.

  1. Открываем справочник «Типовые операции» → выбираем нужный шаблон → команда создания операции на основании.
  2. Программа спросит параметры (например, Контрагент, Договор, Сумма) — заполняем их в форме запрашиваемых параметров.
  3. По формулам шаблона программа сама заполнит проводки БУ и НУ, подставив параметры (см. Часть 2 — это делает процедура ЗаполнитьНаОснованииТиповойОперации).
  4. Проверяем заполненные проводки, при необходимости правим суммы/субконто и проводим.
📷 СКРИН 08
СКРИН 08 — форма запроса параметров типовой операции.
📷 СКРИН 09
СКРИН 09 — проводки, автоматически заполненные по шаблону типовой операции.
⚠️ Важно. Все обязательные параметры типовой операции должны быть заполнены, иначе формулы не вычислятся и появятся сообщения об ошибках вычисления полей.

🛠 Часть 2. Для программиста

Источник: реальный код релиза 3.0.72.1 (Documents/ОперацияБух/Ext/ObjectModule.bsl), плюс разбор objects/Документ_ОперацияБух.md и business-logic/Документ_ОперацияБух_*.md.

Структура объекта

Ключевой реквизит шапки (обязательный — ShowError): Организация. Условно обязательный (ShowError только в режиме корректировки): СторнируемыйДокумент. Прочие реквизиты — DontCheck: Дата, Номер, Содержание, СуммаОперации (вычисляемая, сумма по дебету БУ), ТиповаяОперация, СтруктурноеПодразделение, Ответственный, Автор, Комментарий, СпособЗаполнения (служебное: "Вручную" / "Корректировка" / др.).

Наборы движений (вводятся пользователем, НЕ вычисляются кодом): - Движения.Типовой — регистр бухгалтерии РегистрБухгалтерии.Типовой (БУ): СчетДт, СчетКт, СубконтоДт1..3, СубконтоКт1..3, Сумма, Количество*, Валюта*, ВалютнаяСумма*, СтруктурноеПодразделениеДт/Кт, НомерЖурнала, Содержание. - Движения.Налоговый — регистр бухгалтерии РегистрБухгалтерии.Налоговый (НУ): то же + обязательные ВидУчетаДт, ВидУчетаКт.

Служебные табличные части: ЗапрашиваемыеПараметры (Имя/Представление/Значение — для типовой операции), ТаблицаРегистровНакопления и ТаблицаРегистровСведений (актуализируемые списки имён регистров, по которым реально есть движения; заполняются в ПередЗаписью). Через форму настройки документ может писать в десятки прикладных регистров накопления/сведений (НДС, акциз, ОПВ/ИПН, амортизация ОС и т. д.), но это «конструктор» под нетиповые сценарии.

⚠️ Несостыковка [KZ30-OPB-01]. Разбор objects/Документ_ОперацияБух.md называет Типовой/Налоговый «AccumulationRegister». Реальный код оперирует ими как регистрами бухгалтерии: в ПередЗаписью стоит проверка ТипЗнч(НаборЗаписей) = Тип("РегистрБухгалтерииНаборЗаписей.Типовой"). Это РегистрБухгалтерии (Дт/Кт-проводки), а не регистр накопления. См. поле issues.

Жизненный цикл (обработчики ObjectModule)

Обработчик Что делает (по реальному коду 3.0.72.1)
ОбработкаЗаполнения Заполняет шапку (ЗаполнениеДокументов.ЗаполнитьШапкуДокумента + валюта регл. учёта). При основании-структуре — копирует свойства. При основании-документе — копирует реквизиты (кроме Дата/Номер/Проведён/Автор/Ответственный), формирует «Содержание: …», ставит СторнируемыйДокумент и СпособЗаполнения = "Корректировка"
ПриКопировании Ставит Дата = НачалоДня(ТекущаяДатаПользователя())
ОбработкаПроверкиЗаполнения Если в НУ есть строки — построчная проверка: при заполненном СчётДт/СчётКт обязателен ВидУчётаДт/ВидУчётаКт. Вне режима корректировки из проверки исключается СторнируемыйДокумент
ПередЗаписью Главная серверная логика (см. ниже): штампует Организацию/Период в наборы, чинит валюту проводок при выключенном валютном учёте, актуализирует списки регистров, сбрасывает СторнируемыйДокумент при способе «Вручную», синхронизирует активность движений с пометкой удаления
ОбработкаПроведения Отсутствует. Документ не вычисляет проводки — движения формирует пользователь в табличных частях. Это принципиальное отличие от типовых документов

Экспортная процедура ЗаполнитьНаОснованииТиповойОперации(ТО, Очистить = Истина) — движок заполнения проводок по шаблону типовой операции (формулы через Выполнить()).

Как формируется проведение — реальный код (3.0.72.1)

Главное и контринтуитивное: в модуле объекта нет ОбработкаПроведения. Проводки — это содержимое наборов Движения.Типовой и Движения.Налоговый, которое вводит пользователь (или заполняет типовая операция). Вся серверная «магия» при записи сосредоточена в ПередЗаписью — она готовит уже введённые движения к записи, но не придумывает счета Дт/Кт.

Источник: ObjectModule.bsl, процедура ПередЗаписью (стр. 96), сокращённо по ключевым ветвям:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

    Если ОбменДанными.Загрузка Тогда
        Возврат;                                  // при загрузке обмена — пропуск логики
    КонецЕсли;

    Для Каждого НаборЗаписей ИЗ Движения Цикл
        Если НаборЗаписей.Количество() = 0 Тогда
            Продолжить;
        КонецЕсли;

        ПустаяТаблица   = НаборЗаписей.ВыгрузитьКолонки();
        ЕстьОрганизация = ПустаяТаблица.Колонки.Найти("Организация") <> Неопределено;
        ЕстьПериод      = ПустаяТаблица.Колонки.Найти("Период")      <> Неопределено;
        Если НЕ (ЕстьОрганизация ИЛИ ЕстьПериод) Тогда
            Продолжить;
        КонецЕсли;

        ТаблицаДвижений = НаборЗаписей.Выгрузить();
        Если ЕстьОрганизация Тогда
            ТаблицаДвижений.ЗаполнитьЗначения(Организация, "Организация");   // штамп организации
        КонецЕсли;
        Если ЕстьПериод Тогда
            ТаблицаДвижений.ЗаполнитьЗначения(Дата, "Период");              // штамп периода = Дата документа
        КонецЕсли;

        // Для проводок БУ при ВЫКЛЮЧЕННОМ валютном учёте — проставить валюту регл. учёта
        Если ТипЗнч(НаборЗаписей) = Тип("РегистрБухгалтерииНаборЗаписей.Типовой") Тогда
            Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьВалютныйУчет") Тогда
                ВалютаУчета = ОбщегоНазначенияБКВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();
                Для Каждого Проводка Из ТаблицаДвижений Цикл
                    Если Проводка.СчетДт.Валютный Тогда
                        Проводка.ВалютаДт        = ВалютаУчета;
                        Проводка.ВалютнаяСуммаДт = Проводка.Сумма;
                    КонецЕсли;
                    Если Проводка.СчетКт.Валютный Тогда
                        Проводка.ВалютаКт        = ВалютаУчета;
                        Проводка.ВалютнаяСуммаКт = Проводка.Сумма;
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
        КонецЕсли;

        НаборЗаписей.Загрузить(ТаблицаДвижений);

        // Актуализируем списки регистров, по которым реально есть движения
        ИмяРегистра = НаборЗаписей.Метаданные().Имя;
        Если Метаданные.РегистрыНакопления.Содержит(НаборЗаписей.Метаданные()) Тогда
            ДобавитьРегистрНакопления(ИмяРегистра);
        ИначеЕсли Метаданные.РегистрыСведений.Содержит(НаборЗаписей.Метаданные()) Тогда
            ДобавитьРегистрСведений(ИмяРегистра);
        КонецЕсли;
    КонецЦикла;

    Если СпособЗаполнения = "Вручную" Тогда
        СторнируемыйДокумент = Неопределено;       // ручной ввод не является корректировкой
    КонецЕсли;

    СинхронизироватьАктивностьДвиженийСПометкойУдаления();

КонецПроцедуры

Разбор по шагам: - Штамп шапки в строки движений. В каждый набор, где есть колонки Организация/Период, проставляется Организация из шапки и Период = Дата документа. То есть пользователь вводит проводку, а привязку к организации/дате ставит код — единообразно для всех регистров. - Валюта при выключенном валютном учёте. Если опция ИспользоватьВалютныйУчет выключена, но в проводке валютный счёт, код подставляет валюту регламентированного учёта и приравнивает валютную сумму к сумме. Это защита от «пустой валюты» на валютных счетах. - Актуализация списков регистров. ДобавитьРегистрНакопления / ДобавитьРегистрСведений ведут ТаблицаРегистровНакопления / ТаблицаРегистровСведений — фиксируют, по каким регистрам реально записаны движения (без дублей). - Сброс корректировки. При СпособЗаполнения = "Вручную" ссылка СторнируемыйДокумент обнуляется — обычная ручная операция не считается сторно. - Активность ↔ пометка удаления. СинхронизироватьАктивностьДвиженийСПометкойУдаления() (стр. 43): помеченный на удаление документ получает неактивные движения, снятие пометки — активирует. Помеченный на удаление не должен иметь активных движений.

Движок типовых операций — ЗаполнитьНаОснованииТиповойОперации (стр. 402)

Заполнение по шаблону — это интерпретатор формул. Для каждой строки шаблона (ТО.Типовой и ТО.Налоговый) счёт, субконто, сумма, количество, валюта вычисляются процедурой ЗначениеПоля(...), которая либо берёт значение из шаблона, либо исполняет формулу через Выполнить():

// ЗначениеПоля: если в шаблоне задана формула — вычислить её, иначе взять значение шаблона
Стр = Стр + "Значение = " + ЗаменитьПараметры(Формула, Проводки) + ";";
Попытка
    Выполнить(Стр);                              // вычисление формулы поля проводки
Исключение
    ...СообщитьПользователю("Ошибка при вычислении значения поля по формуле: %1 - %2", ...);
КонецПопытки;

Конструкции вида Проводка1.СубконтоДт1 в формулах препроцессятся ЗаменитьПараметры в обращения к набору записей по коду вида субконто (ПланыВидовХарактеристик.ВидыСубконтоТиповые.НайтиПоКоду(...)). Поддерживаются: АлгоритмПриВводе (до), АлгоритмПослеВвода (после), условие строки (ШаблонЗаписи.Условие — не прошедшие условие проводки удаляются), ФормулаСодержания, ФормулаСуммыОперации.

⚠️ Несостыковка [KZ30-OPB-02]. Разбор objects/Документ_ОперацияБух.md приписывает ПередЗаписью «обнуление начальных остатков». В реальном коде 3.0.72.1 такой логики нет — ПередЗаписью делает штамп Организации/Периода, фикс валюты, актуализацию регистров, сброс СторнируемыйДокумент и синхронизацию активности. Описание в objects/ неточно. См. поле issues.

Движения по регистрам

Документ не имеет фиксированного «профиля движений» — он пишет туда, куда ввёл пользователь.

Регистр Тип / движение Что пишет
Типовой РегистрБухгалтерии (БУ) Проводки Дт/Кт БУ, введённые пользователем (счета, субконто, сумма, валюта, кол-во)
Налоговый РегистрБухгалтерии (НУ) Проводки Дт/Кт НУ + обязательные ВидУчетаДт/ВидУчетаКт
Прикладные регистры накопления/сведений Накопление / Сведения Опционально, через форму настройки состава регистров (НДС, акциз, ОПВ/ИПН, амортизация ОС и др.) — для нетиповых сценариев
⚠️ Про Дт/Кт. Конкретные счета здесь не зашиты в конфигурацию и не вычисляются — их вводит бухгалтер. Поэтому «эталонной» таблицы проводок (как у реализации) у этого документа нет и быть не может. Для финансового результата на закрытии месяца в плане счетов КЗ используются, например: фин. результат — 5610 «Нераспределённая прибыль (непокрытый убыток) отчётного периода», доходы — счета 6xxx, расходы — 7xxx/8xxx, расходы по КПН — 7710 «Расходы по корпоративному подоходному налогу». Но какие именно счета поставить в конкретной операции — решение пользователя. Российские 90/91/99/84 в плане счетов КЗ не применяются.

Валидации (ОбработкаПроверкиЗаполнения)

Зависимости (общие модули)

ЗаполнениеДокументов (заполнение шапки), ОбщегоНазначения / ОбщегоНазначенияБК / ОбщегоНазначенияБКВызовСервераПовтИсп (реквизиты, валюта регл. учёта, наборы по организации/подразделению), СтроковыеФункцииКлиентСервер (парсинг/подстановка в формулах типовых операций), ПланыВидовХарактеристик.ВидыСубконтоТиповые (субконто в формулах), УправлениеДоступом / ОбщегоНазначенияБК.ЗаполнитьНаборыПоОрганизацииСтурктурномуПодразделению (RLS по организации и подразделению). В ManagerModule — печать «Бухгалтерская справка (С-1)» (УправлениеПечатью, привилегированный режим) и блокируемые реквизиты простой версии.

💼 Партнёру / внедренцу. Жалоба «операция не проводится» почти всегда означает одно из двух: (1) не заполнена Организация, либо (2) в налоговом учёте у счёта не указан вид учёта (Дт/Кт). Жалоба «проводки кривые» к этому документу неприменима в привычном смысле — здесь нет автоформирования: что бухгалтер ввёл, то и записалось. Если проводки должны были собраться автоматически — пользователь перепутал инструмент: для авто-проводок нужен типовой документ или типовая операция (шаблон). На закрытии месяца «Операция» — это ручная «дозапись», а не замена Документ.ЗакрытиеМесяца.
🧩 Заметки для разработчика.
  1. Нет ОбработкаПроведения. Не ищите её — движения формирует пользователь/форма. Программная запись операции = заполнить Движения.Типовой/Движения.Налоговый, выставить Записывать = Истина нужным наборам, записать с РежимЗаписи = Проведение.
  2. ПередЗаписью обязательна к учёту при программной записи: организация и период проставятся из шапки автоматически; для валютных счетов при выключенном валютном учёте валюта подставится сама.
  3. Типовые операции исполняют код через Выполнить() — это серверный интерпретатор формул. Любая ошибка формулы не падает, а выдаётся через СообщитьПользователю. Будьте осторожны с источником формул (по сути — выполнение произвольного кода в шаблоне).
  4. Активность ≠ пометка удаления. Движения можно деактивировать командой формы, не удаляя документ; помеченный на удаление документ обязан иметь неактивные движения (СинхронизироватьАктивностьДвиженийСПометкойУдаления).
  5. БУ↔НУ независимы, но синхронизируемы кнопкой «Заполнить НУ из БУ» (через регистр соответствия счетов БУ/НУ; логика — в ФормаДокумента). При наличии данных в НУ запрашивается подтверждение очистки.

🔗 Связанные разделы

🆕 Что нового

Версия Изменение Тип
3.0.72.1 Первичное описание (на релизе 3.0.72.1) 🆕