Документ «Выработка ОС»
Документ регистрирует фактическую выработку основных средств за период (моточасы, пробег, объём продукции и т.п.) для тех ОС, у которых амортизация начисляется производственным способом (пропорционально объёму продукции/работ). Это не бухгалтерский документ: он не делает проводок Дт/Кт, а пишет только в регистр накопления ВыработкаОС. Эти данные затем читает расчёт амортизации при «Закрытии месяца».
🎯 Что это и зачем
Для большинства ОС амортизация считается по сроку (линейно). Но для оборудования, транспорта и техники, которые изнашиваются «по нагрузке», корректнее списывать стоимость пропорционально фактической выработке: станок отработал столько-то часов, машина прошла столько-то километров, печь выпустила столько-то тонн.
Чтобы система могла рассчитать такую амортизацию, ей нужно знать сколько единиц выработки дало каждое ОС за месяц. Эту натуральную цифру и вводит документ «Выработка ОС». Он:
- собирает по организации (и при необходимости — по подразделению) список ОС с производственным способом начисления амортизации;
- по каждому ОС фиксирует параметр выработки (единицу измерения) и количество за период;
- при проведении записывает эти данные в регистр накопления
ВыработкаОС.
Дальше документ «Начисление амортизации ОС» / регламент «Закрытие месяца» берёт накопленную выработку из этого регистра и вычисляет сумму амортизации к списанию.
Кто работает: бухгалтер по учёту ОС (или ответственный за оборудование), как правило раз в месяц, в конце периода. Документ первичный — на основании других документов не вводится.
🧭 Где найти в программе
Раздел «ОС и НМА» (подсистема «Внеоборотные активы» → «Основные средства») → группа документов по основным средствам → «Выработка ОС». Откроется журнал; новый документ создаём кнопкой «Создать».
navigation-map.json объект Документ.ВыработкаОС отсутствует, поэтому точный пункт меню во Fresh по карте подтвердить нельзя. Раздел определён по метаданным: документ входит в подсистему ВнеоборотныеАктивы → ОсновныеСредства (проверено по Subsystems/ВнеоборотныеАктивы/Subsystems/ОсновныеСредства.xml). В интерфейсе BK 3.0 эта подсистема отображается как раздел «ОС и НМА» (синоним подсистемы — «Внеоборотные активы»). Точный путь сверьте в своей базе.👤 Часть 1. Для пользователя
Проходим по шагам: от пустого документа до проведённой выработки и проверки, что данные легли в регистр.
Урок 1. Ввод выработки за месяц
Когда: в конце отчётного периода, когда известны фактические показатели работы ОС (часы, пробег, объём).
Шаг 1. Создаём документ
«Создать». Откроется новая «Выработка ОС». У документа нет видов операции — он один на все случаи.
Шаг 2. Заполняем шапку
- Дата — поставьте дату окончания периода (по умолчанию — начало текущего дня). Дата важна: по ней система подбирает актуальные ОС, их инвентарные номера и параметры выработки.
- Организация — обязательно. Определяет, какие ОС попадут в подбор.
- Структурное подразделение — необязательно; заполняйте, если ведёте выработку в разрезе подразделений/мест эксплуатации.
- Ответственный — подставится текущий пользователь, при необходимости измените.
ДатаПриИзменении). Менять только время (в пределах одного дня) можно безопасно — пересчёта не будет.Шаг 3. Заполняем таблицу ОС
Самый быстрый путь — кнопка «Заполнить → По ОС» (ЗаполнитьПоОС). Система подберёт все ОС организации, у которых задан производственный способ начисления амортизации и установлен признак «Начислять амортизацию», и подставит для каждого:
- Основное средство;
- Параметр выработки (единицу измерения — моточасы, км, шт. и т.п.);
- Инвентарный номер (по состоянию на дату документа, только для отображения).
Альтернативы: «Подбор» (Подбор) — выбрать ОС вручную из справочника; «Заполнить по наименованию» (ЗаполнитьПоНаименованию) — найти ОС по названию; или строки добавлять руками кнопкой «Добавить».
Шаг 4. Вводим количество выработки
Для каждой строки в колонке Количество укажите фактическую выработку за период (например, 150 моточасов, 2500 км). Строки по ОС, которые в этом месяце не эксплуатировались, удалите (или оставьте с нулём — см. предупреждение ниже).
Шаг 5. Записываем и проводим
«Провести» или «Записать и закрыть».
Шаг 6. Проверяем результат
У этого документа нет отчёта «Дт/Кт», потому что он не делает бухгалтерских проводок. Чтобы убедиться, что данные приняты, откройте движения документа по регистру (кнопка «ещё → Движения документа» / «Перейти») и посмотрите регистр накопления «Выработка ОС»: там должны появиться строки с организацией, ОС, параметром выработки и количеством.
Урок 2. Режим «Ручная корректировка»
Когда: нужно сохранить документ как черновик с данными, но не записывать движения в регистр (например, цифры ещё уточняются).
- Откройте документ, установите флаг «Ручная корректировка».
- Заполните/исправьте таблицу, запишите документ.
- При проведении движения по регистру не сформируются — документ останется «пустым» для учёта.
- Когда данные финализированы — снимите флаг «Ручная корректировка» и проведите заново.
ВыработкаОС. Если выработка «не доходит» до расчёта амортизации — первым делом проверьте этот флаг.Урок 3. Корректировка ранее введённого периода
- Найдите документ в журнале (форма списка) и откройте.
- При необходимости снимите проведение.
- Исправьте Количество, добавьте/удалите строки. При смене дня даты инвентарные номера пересчитаются автоматически.
- Проведите заново. Регистр перепишется новыми значениями.
🛠 Часть 2. Для программиста
Источник: реальный код релиза 3.0.72.1 (Documents/ВыработкаОС/Ext/ObjectModule.bsl и …/ManagerModule.bsl), метаданные регистра AccumulationRegisters/ВыработкаОС.xml, плюс разбор objects/ и business-logic/.
Структура объекта
Реквизиты шапки:
| Реквизит | Тип | Заполнение | Назначение |
|---|---|---|---|
Организация |
СправочникСсылка.Организации | ShowError | Контур учёта; фильтр для подбора ОС. Единственный обязательный реквизит шапки. |
СтруктурноеПодразделение |
СправочникСсылка.ПодразделенияОрганизаций | DontCheck | Подразделение эксплуатации; участвует в фильтре, если включена поддержка структурных подразделений. |
РучнаяКорректировка |
Булево | DontCheck | Флаг черновика: при Истина проведение не пишет движений. |
Ответственный |
СправочникСсылка.Пользователи | DontCheck | Заполняется текущим пользователем. |
Автор |
СправочникСсылка.Пользователи | DontCheck | Служебный; удаляется из структуры заполнения в ОбработкаЗаполнения. |
Комментарий |
Строка | DontCheck | Произвольный текст. |
Табличная часть ОС:
| Колонка | Тип | Назначение |
|---|---|---|
ОсновноеСредство |
СправочникСсылка.ОсновныеСредства | ОС, по которому фиксируется выработка. Уникально в пределах документа (проверка дублей). |
ПараметрВыработки |
СправочникСсылка.ПараметрыВыработкиОС | Единица измерения выработки (моточасы, км, т, шт.). |
Количество |
Число | Фактическая выработка за период. |
ИнвентарныйНомер |
(реквизит формы / строки) | Заполняется автоматически по дате документа; только для отображения. |
Регистр-приёмник: РегистрНакопления.ВыработкаОС — тип Обороты (Turnovers), измерения ОсновноеСредство, ПараметрВыработки, ресурс Количество. Документ — единственный регистратор (в RegisterRecords документа только этот регистр).
Жизненный цикл (обработчики ObjectModule)
| Обработчик | Что делает |
|---|---|
ОбработкаЗаполнения |
Удаляет служебный «Автор» из структуры заполнения; заполняет шапку через ЗаполнениеДокументов.ЗаполнитьШапкуДокумента (валюта регл. учёта). |
ОбработкаПроверкиЗаполнения |
Проверяет отсутствие дублей в ТЧ ОС по ОсновноеСредство (УправлениеВнеоборотнымиАктивамиСервер). |
ОбработкаПроведения |
Готовит наборы записей; при РучнаяКорректировка или нулевой выработке — выходит; иначе вызывает УчетОС.СформироватьДвиженияВыработкаОС. |
ПередЗаписью |
Пропускает обработку при ОбменДанными.Загрузка (заглушка). |
ПриКопировании |
Ставит Дата = НачалоДня(ТекущаяДатаПользователя()). |
Примечание:
ОбработкаУдаленияПроведенияв модуле не переопределена — при отмене проведения движения чистятся стандартным механизмом наборов записей.
Как формируется проведение — реальный код (3.0.72.1)
Главное и принципиальное: документ не делает бухгалтерских проводок. ОбработкаПроведения пишет ровно один регистр накопления — ВыработкаОС — и делегирует это общему модулю УчетОС. Источник: ObjectModule.bsl, процедура ОбработкаПроведения (стр. 30), приведена целиком:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ДОКУМЕНТА
ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект);
Если РучнаяКорректировка Тогда
Возврат; // черновик: движений нет
КонецЕсли;
ПараметрыПроведения = Документы.ВыработкаОС.ПодготовитьПараметрыПроведения(Ссылка, Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
// Если не удалось получить параметры и Отказ не выставлен — просто выходим
Если ПараметрыПроведения = Неопределено Тогда
Возврат;
КонецЕсли;
// ФОРМИРОВАНИЕ ДВИЖЕНИЙ
Если ПараметрыПроведения.ВыработкаОСРеквизитыТаблицаОС.Количество() <> 0 Тогда
УчетОС.СформироватьДвиженияВыработкаОС(ПараметрыПроведения.ВыработкаОСРеквизитыТаблицаОС,
Движения, Отказ);
КонецЕсли;
КонецПроцедуры
Разбор:
- РучнаяКорректировка = Истина → Возврат сразу после подготовки наборов. Движения не формируются вообще — документ остаётся черновиком.
- ПодготовитьПараметрыПроведения (см. ManagerModule) собирает через менеджер временных таблиц набор ВыработкаОСРеквизитыТаблицаОС — это построчная таблица «реквизиты документа × строки ТЧ ОС» (Период, Регистратор, Организация, ОС, ПараметрВыработки, Количество).
- …ВыработкаОСРеквизитыТаблицаОС.Количество() <> 0 — здесь Количество() это число строк таблицы значений, а не сумма выработки. То есть движения пишутся, только если в подготовленной таблице есть хотя бы одна строка. На практике пустая ТЧ → пустая таблица → движений нет.
- УчетОС.СформироватьДвиженияВыработкаОС(…, Движения, Отказ) — само формирование записей регистра ВыработкаОС вынесено в общий модуль УчетОС; документ передаёт ему подготовленную таблицу и коллекцию Движения.
Подбор ОС для заполнения (важно для понимания, какие ОС вообще попадают в документ). ManagerModule.ЗаполнитьТабличнуюПоОС строит запрос по двум регистрам сведений и жёстко фильтрует по производственному способу:
// ManagerModule.bsl, фрагмент запроса ЗаполнитьТабличнуюПоОС
// ИЗ РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(...)
// , РегистрСведений.НачислениеАмортизацииОСБухгалтерскийУчет.СрезПоследних(...)
// ГДЕ ... .НачислятьАмортизацию = &Начислять
// И ... .СпособНачисленияАмортизации = &СпособНачисленияАмортизации
Запрос.УстановитьПараметр("Период", Объект.Дата);
Запрос.УстановитьПараметр("СпособНачисленияАмортизации",
Перечисления.СпособыНачисленияАмортизацииОС.Производственный);
Запрос.УстановитьПараметр("Начислять", Истина);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
То есть в документ автоматически подтягиваются только ОС, у которых на дату документа способ = Производственный и НачислятьАмортизацию = Истина. Если таких нет — выводится СообщитьПользователю("…Элементы с производственным способом… отсутствуют.") и таблица не заполняется.
Движения по регистрам
| Регистр | Тип | Что пишет |
|---|---|---|
РегистрНакопления.ВыработкаОС |
Обороты (приход выработки) | По каждой строке ТЧ: Период (= дата документа), Регистратор, измерения ОсновноеСредство, ПараметрВыработки, ресурс Количество. Запись делает УчетОС.СформироватьДвиженияВыработкаОС. |
Бухгалтерские проводки (Журнал проводок/типовой) |
— | Не формируются. Документ не пишет Дт/Кт. |
Регистр устроен как «оборотный»: он накапливает выработку периода. Запись в него выполняет служебная процедура набора (RecordSetModule.ДобавитьДвижение → ОбщегоНазначенияБК.ВыполнитьДвижениеПоРегистру), проставляя Период и Активность = Истина.
business-logic/Документ_ВыработкаОС_ObjectModule.md утверждает, что документ «реализует логику учёта выбытия или списания основных средств» и «проведение с формированием бухгалтерских проводок». Это неверно. Реальный код (ОбработкаПроведения, выше) не списывает ОС и не делает ни одной проводки Дт/Кт — он пишет единственный регистр накопления ВыработкаОС (натуральные показатели выработки). Файл objects/Документ_ВыработкаОС.md описывает назначение корректно (регистрация выработки для амортизации). Достоверным считать код и objects/.ВыработкаОС. Для справки, тамошняя типовая проводка по производственной амортизации ОС в КЗ: Дт 8410/7210/7480 — Кт 2420 «Амортизация ОС» (конкретный счёт затрат зависит от параметров учёта ОС и учётной политики; российские 02/20/26 не применяются). Сверять — по отчёту «Дт/Кт» на документе начисления амортизации, а не здесь.Валидации (ОбработкаПроверкиЗаполнения)
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
УправлениеВнеоборотнымиАктивамиСервер.ПроверитьОтсутствиеДублейВТабличнойЧасти(
ЭтотОбъект, "ОС", Новый Структура("ОсновноеСредство"), Отказ);
КонецПроцедуры
- Уникальность ОС в ТЧ
ОСпоОсновноеСредство— два одинаковых ОС запрещены, иначеОтказ. - Обязательность
Организация— на уровне метаданных (ShowError), запись без организации блокируется. - Поля
ПараметрВыработкииКоличествона уровне модуля не валидируются (нет проверкиКоличество > 0). Контроль значений — на совести пользователя; нулевая суммарная выработка просто не даёт движений.
Зависимости (общие модули)
| Модуль | Зачем |
|---|---|
УчетОС |
СформироватьДвиженияВыработкаОС — запись регистра ВыработкаОС. |
УправлениеВнеоборотнымиАктивамиСервер |
Проверка дублей в ТЧ; получение инвентарных номеров; подбор ОС. |
ПроведениеСервер |
ПодготовитьНаборыЗаписейКПроведению. |
ЗаполнениеДокументов |
ЗаполнитьШапкуДокумента (валюта регл. учёта). |
ОбщегоНазначения / ОбщегоНазначенияБК / ОбщегоНазначенияБКВызовСервера(ПовтИсп) |
Утилиты, разделители пакетов запросов, движение по регистру. |
Документы.ВыработкаОС (ManagerModule) |
ПодготовитьПараметрыПроведения, ЗаполнитьТабличнуюПоОС. |
Регистры сведений ПервоначальныеСведенияОСБухгалтерскийУчет, НачислениеАмортизацииОСБухгалтерскийУчет |
Источник подбора ОС (срезы последних на дату документа). |
НачислениеАмортизацииОСБухгалтерскийУчет (расчёт) |
Потребитель регистра ВыработкаОС — читает выработку при расчёте амортизации. |
НачислениеАмортизацииОСБухгалтерскийУчет, туда и смотреть.
- Никаких Дт/Кт. Не ищите в этом документе проводки и не добавляйте отчёт «Дт/Кт» — регистратор только для
РегистрНакопления.ВыработкаОС(тип «Обороты»).Количество() <> 0— это число строк, а не сумма выработки (этоКоличество()таблицы значений). Не путайте при доработках: документ с пустой ТЧ движений не создаёт, но строка сКоличество = 0в ТЧ — создаст (нулевой оборот).- Подбор завязан на способ = Производственный (
Перечисления.СпособыНачисленияАмортизацииОС.Производственный) иНачислятьАмортизацию = Истинана дату документа. Меняете правила подбора — правьте запрос вManagerModule.ЗаполнитьТабличнуюПоОС.- Дата управляет инвентарными номерами и срезами регистров сведений. Смена дня даты в форме (
ДатаПриИзменении) пересчитывает инвентарные номера; время в пределах дня игнорируется.РучнаяКорректировка— стандартный шорткат: первыйВозвратвОбработкаПроведения. Учитывайте при автотестах проведения.
🔗 Связанные разделы
- vyrabotka-nma — зеркальный документ выработки для НМА (амортизация НМА пропорционально объёму)
- nachislenie-amortizacii-os — расчёт амортизации ОС, потребитель регистра «Выработка ОС»
- prinyatie-k-uchetu-os — где задаётся производственный способ начисления амортизации
- zakrytie-mesyaca — регламент, в рамках которого начисляется амортизация
🆕 Что нового
| Версия | Изменение | Тип |
|---|---|---|
| 3.0.72.1 | Первичное описание (на релизе 3.0.72.1) | 🆕 |