Документ «Комплектация номенклатуры»

Документ собирает комплект (набор) из компонентов или, наоборот, разбирает комплект на составляющие — без производственного процесса. Списывает одни ТМЗ со склада и приходует другие, перенося их стоимость, ведёт параллельный учёт по складу, ГТД и (при необходимости) постоянным разницам КПН. Раздел «Номенклатура и склад».

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

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

Иногда товар нужно превратить в другой товар простой сборкой, без производства: собрать подарочный набор из отдельных позиций, скомплектовать готовый комплект мебели, набор инструментов, ассорти. И обратная задача — разобрать ранее собранный комплект на компоненты, чтобы продать их по отдельности.

Документ «Комплектация номенклатуры» делает это одним проведением:

При этом не возникает ни выручки, ни НДС, ни взаиморасчётов с контрагентом — это внутренняя складская операция, перемещение стоимости между позициями номенклатуры. Меняется только то, какие ТМЗ и в каком количестве лежат на складе.

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

💡 Если для комплекта заведена спецификация, не заполняйте компоненты руками — кнопка «Заполнить» рассчитает их по нормам и количеству комплектов автоматически.

🧭 Где найти в программе

Раздел «Номенклатура и склад» → пункт «Комплектация номенклатуры». Откроется журнал документов; новый создаём кнопкой «Создать».

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

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

Проходим по шагам: от пустого документа до проведённой сборки и проверки движений. Затем — разборка, заполнение из спецификации и нюанс с импортными ГТД.

Урок 1. Комплектация (сборка комплекта)

Когда: на складе из отдельных компонентов собрали готовый комплект.

Шаг 1. Создаём документ и выбираем вид операции

«Создать» → в шапке выбираем Вид операции = «Комплектация». Это первое и самое важное поле: от него зависит вся логика проведения и состав видимых полей.

📷 СКРИН 02
СКРИН 02 — новый документ, поле «Вид операции» с выбором «Комплектация» / «Разукомплектация».

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

📷 СКРИН 03
СКРИН 03 — заполненная шапка документа комплектации.

Шаг 3. Заполняем компоненты

В табличной части «Комплектующие» перечисляем, из чего собран комплект. По каждой строке: - Номенклатура компонента; - Количество компонента (на указанное в шапке число комплектов); - Единица измерения и Коэффициент (обычно = 1) — подставятся сами; - Счёт учёта (БУ) компонента — подтянется автоматически; - Доля стоимости — для комплектации заполнять не обязательно (в проводках комплектации она не используется — см. Часть 2).

📷 СКРИН 04
СКРИН 04 — табличная часть «Комплектующие» с компонентами.
💡 Если у комплекта есть спецификация — нажмите «Заполнить» (см. Урок 3), и компоненты с количествами проставятся по рецепту.

Шаг 4. Проводим и проверяем движения

«Провести» или «Записать и закрыть». Чтобы убедиться, что компоненты списались, а комплект оприходовался, откройте отчёт о движениях документа — Дт/Кт и/или движения по регистру товаров.

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

Урок 2. Разукомплектация (разборка комплекта)

Когда: ранее собранный комплект разбираем обратно на компоненты.

Отличия от Урока 1: 1. Вид операции = «Разукомплектация». 2. В шапке Номенклатура — это комплект, который разбираем (он спишется со склада). 3. В табличной части «Комплектующие» — позиции, которые получаем на склад в результате разборки. 4. Доля стоимости в строках теперь работает: по ней стоимость разобранного комплекта распределяется между компонентами. Сумма долей по строкам должна давать 100 %.

💡 Логика «зеркальна» комплектации: при разукомплектации списывается комплект, приходуются компоненты.
⚠️ При распределении количества по компонентам из-за округления в строке иногда может получиться отрицательное количество — программа об этом предупредит (запись в журнал регистрации), но проведение не прервёт. Проверьте доли стоимости и количества.

Урок 3. Заполнение компонентов из спецификации

Чтобы не вводить компоненты вручную:

  1. В шапке заполните Номенклатуру комплекта и Количество.
  2. В табличной части «Комплектующие» нажмите «Заполнить».
  3. Выберите спецификацию (рецепт сборки) из доступных для этой номенклатуры.
  4. Система рассчитает количество каждого компонента: норма из спецификации × количество комплектов × коэффициент.
⚠️ Кнопка «Заполнить» не сработает, если не указана номенклатура комплекта — об этом будет сообщение.
💡 Кроме «Заполнить», в табличную часть можно вставлять строки через буфер обмена (копировать/вставить из другого документа или таблицы).

Урок 4. Импортные товары и номера ГТД

Если организация ведёт учёт товаров по номерам ГТД (грузовых таможенных деклараций), у импортных позиций нужно указать источник происхождения:

  1. Заполните шапку и компоненты.
  2. Для строки с импортным товаром откройте номера ГТД (команда «Открыть номера ГТД» на строке) и распределите количество по конкретным номерам ГТД — сумма должна совпадать с количеством в строке.
  3. Проведите документ.
💡 Табличная часть «Номера ГТД» заполняется автоматически перед записью — вручную её редактировать не нужно.
⚠️ При смене номенклатуры в строке связанные номера ГТД очищаются — их придётся указать заново.

Урок 5. Печать

У документа есть печатная форма «Комплектация номенклатуры» (кнопка «Печать»). Форма многоязычная; набор дополнительных колонок печати настраивается константой конфигурации.

📷 СКРИН 06
СКРИН 06 — меню «Печать» документа и печатная форма «Комплектация номенклатуры».

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

Источник истины — реальный код релиза 3.0.72.1 (Documents/КомплектацияНоменклатуры/Ext/ObjectModule.bsl), прочитан целиком. Дополнительно — разбор objects/ и business-logic/ (ObjectModule, ManagerModule, ФормаДокумента). Где разбор objects/ расходится с кодом, верен код — расхождения помечены ниже.

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

Реквизиты шапки. Обязательные (ShowError): ВидОперации, Организация, Склад, Номенклатура, Количество, Коэффициент, СчетУчетаБУ. Условно-обязательные (зависят от КПН — см. ниже): ВидУчетаНУ, СчетУчетаНУ. Прочие: ЕдиницаИзмерения, СтруктурноеПодразделение, НомерГТД, УчитыватьКПН (флаг), РучнаяКорректировка (флаг), Автор, Ответственный, Комментарий.

Табличные части: - Комплектующие — компоненты: Номенклатура, Количество, ЕдиницаИзмерения, Коэффициент, ДоляСтоимости, СчетУчетаБУ, СчетУчетаНУ, НомерГТД, КлючСвязи. - НомераГТД — служебная таблица детализации по ГТД (КлючСвязи, НомерГТД, Количество; есть устаревшие поля Удалить…). Заполняется автоматически в ПередЗаписью.

⚠️ Расхождение [KZ30-KN-0002]. Разбор objects/ в одном месте упоминает кнопку «Подбор» и табличную часть «Товары». В реальном объекте табличная часть называется «Комплектующие», а заполнение идёт через «Заполнить» (спецификация) и буфер обмена. Ориентируйтесь на «Комплектующие».

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

Обработчик Что делает
ОбработкаЗаполнения Если заполняется по документу-основанию — ЗаполнитьПоДокументуОснования; если по структуре — переносит значения свойств (удаляя Автор). Затем ЗаполнениеДокументов.ЗаполнитьШапкуДокумента
ОбработкаПроверкиЗаполнения Формирует список непроверяемых реквизитов в зависимости от вида операции и поддержки КПН; проверяет балансовость счетов построчно; делегирует СчетаУчетаВДокументах.ПроверитьЗаполнение
ПриКопировании Заново заполняет шапку (валюта регл. учёта), очищает НомераГТД при копировании
ПередЗаписью При проведении и учёте товаров по ГТД — заполняет таблицу НомераГТД (отдельная ветка для разукомплектации); СчетаУчетаВДокументах.ЗаполнитьПередЗаписью
ОбработкаПроведения Готовит наборы записей; при РучнаяКорректировка — выходит; иначе формирует движения (ветки комплектация / разукомплектация)
ЗаполнитьНаборыЗначенийДоступа (экспорт) Наборы RLS по организации/подразделению/складу через УчетТоваров

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

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

Источник: ObjectModule.bsl, процедура ОбработкаПроведения (стр. 140), приведена целиком:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

    // ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ДОКУМЕНТА
    ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект);

    Если РучнаяКорректировка Тогда
        Возврат;                                   // движения заполняет пользователь вручную
    КонецЕсли;

    ПараметрыПроведения = Документы.КомплектацияНоменклатуры.ПодготовитьПараметрыПроведения(Ссылка, Отказ);

    Если Отказ Тогда
        Возврат;
    КонецЕсли;

    // ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ИНФОРМАЦИОННОЙ БАЗЫ

    Если ПараметрыПроведения.Реквизиты[0].ВидОперации = Перечисления.ВидыОперацийКомплектацияНоменклатуры.Комплектация Тогда

        // Таблица списанных товаров - комплектация
        ТаблицаСписанныеТоварыКомплектация = УчетТоваров.ПодготовитьТаблицуСписанныеТовары(
                ПараметрыПроведения.СписаниеТоваровКомплектацияТаблица, ПараметрыПроведения.Реквизиты, Отказ);

        ТаблицаКомплектующиеКомплектация = УчетТоваров.ПодготовитьТаблицуКомплектующихКомплектация(
                ТаблицаСписанныеТоварыКомплектация, ПараметрыПроведения.Реквизиты, Отказ);

        // Формирование движений
        УчетТоваров.СформироватьДвиженияКомплектация(ТаблицаКомплектующиеКомплектация,
                    ПараметрыПроведения.Реквизиты, Движения, Отказ);

    Иначе // разукомплектация

        // Таблица списанных товаров - разукомплектация
        СписаниеТоваровРазукомплектацияТаблица =
        Документы.КомплектацияНоменклатуры.ПодготовитьТаблицуСписаниеТоваровРазукомплектация(
                ПараметрыПроведения.СписаниеТоваровРазукомплектацияТаблица, ПараметрыПроведения.Реквизиты);

        // При распределении из-за округления возможно отрицательное количество — проверяем
        ПроверитьТаблицуСписанияНаОтрицательныеЗначения(СписаниеТоваровРазукомплектацияТаблица);

        ТаблицаСписанныеТоварыРазукомплектация = УчетТоваров.ПодготовитьТаблицуСписанныеТовары(
                СписаниеТоваровРазукомплектацияТаблица, ПараметрыПроведения.Реквизиты, Отказ);

        ТаблицаКомплектующиеРазукомплектация = УчетТоваров.ПодготовитьТаблицуКомплектующихРазукомплектация(
                СписаниеТоваровРазукомплектацияТаблица, ТаблицаСписанныеТоварыРазукомплектация, ПараметрыПроведения.Реквизиты, Отказ);

        // Формирование движений
        УчетТоваров.СформироватьДвиженияКомплектация(ТаблицаКомплектующиеРазукомплектация,
                ПараметрыПроведения.Реквизиты, Движения, Отказ);

    КонецЕсли;

    // КОНТРОЛЬ ПО РЕГИСТРУ "ТОВАРЫ ОРГАНИЗАЦИЙ"
    НомераГТДСервер.ВыполнитьКонтрольТоварыОрганизаций(ПараметрыПроведения.ТаблицаСписанияТоварыОрганизаций,
            ПараметрыПроведения.Реквизиты, , Отказ);

    // ФОРМИРОВАНИЕ ДВИЖЕНИЙ — Товары организаций
    НомераГТДСервер.СформироватьДвиженияТоварыОрганизаций(ПараметрыПроведения.ТаблицаОприходованияТоварыОрганизаций,
            ПараметрыПроведения.Реквизиты, Движения, Отказ);

    НомераГТДСервер.СформироватьДвиженияТоварыОрганизаций(ПараметрыПроведения.ТаблицаСписанияТоварыОрганизаций,
            ПараметрыПроведения.Реквизиты, Движения, Отказ);

    // Отражение ПР в НУ
    ПроцедурыНалоговогоУчета.ОтразитьПостоянныеРазницыВНУ(ПараметрыПроведения.Реквизиты, Движения, Отказ);

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

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

Шаг кода Что делает
ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению Готовит наборы записей всех регистров документа
Если РучнаяКорректировка … Возврат Авто-проведение полностью пропускается — движения заполняет пользователь
Документы.…ПодготовитьПараметрыПроведения Из ManagerModule: собирает временные таблицы (списание/оприходование) и реквизиты документа
ветка Комплектация Готовит таблицы списанных товаров и компонентов, вызывает УчетТоваров.СформироватьДвиженияКомплектация
ветка Разукомплектация То же зеркально + ПроверитьТаблицуСписанияНаОтрицательныеЗначения (проверка округления долей)
НомераГТДСервер.ВыполнитьКонтрольТоварыОрганизаций Контроль остатков по регистру товаров (отрицательные остатки)
НомераГТДСервер.СформироватьДвиженияТоварыОрганизаций (×2) Движения по складскому регистру: оприходование и списание (с разбивкой по ГТД)
ПроцедурыНалоговогоУчета.ОтразитьПостоянныеРазницыВНУ Постоянные разницы в НУ (для КПН)

Где формируются бухгалтерские записи. Дт/Кт по плану счетов формирует УчетТоваров.СформироватьДвиженияКомплектация — единый вызов для обеих веток (передаётся уже подготовленная таблица «комплектующих»). Именно туда, а не в ObjectModule, нужно смотреть, чтобы узнать точные счета и суммы. ManagerModule.ПодготовитьПараметрыПроведения готовит исходные таблицы через запросы (СписаниеТоваровКомплектация, СписаниеТоваровРазукомплектация, оприходование/списание «Товары организаций»).

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

Из реального кода ObjectModule прямо видны два направления движений; бухгалтерские/налоговые регистры пишет делегированный модуль УчетТоваров.

Регистр Кто пишет (из кода) Что отражает
ТоварыОрганизаций (накопление, остатки) НомераГТДСервер.СформироватьДвиженияТоварыОрганизаций ×2 Складское движение: расход одних ТМЗ и приход других (в разрезе организации, склада, номенклатуры, ГТД)
Бухгалтерский план счетов (БУ) УчетТоваров.СформироватьДвиженияКомплектация Перенос стоимости между счетами учёта компонентов и комплекта
Налоговый учёт / постоянные разницы ПроцедурыНалоговогоУчета.ОтразитьПостоянныеРазницыВНУ Постоянные разницы в НУ (КПН), если применимо
⚠️ Расхождение [KZ30-KN-0003] — источник истины. Разбор objects/ утверждает, что ОбработкаПроведения напрямую пишет в регистры бухгалтерии Типовой и Налоговый «плоскими» проводками и называет складской регистр ТоварыОрганизацийБУ. В реальном коде ObjectModule этих прямых движений нет: складской регистр называется ТоварыОрганизаций, а бухгалтерские записи формирует общий модуль УчетТоваров.СформироватьДвиженияКомплектация. Конкретные имена регистров бухгалтерии и счета берите из модуля УчетТоваров и из отчёта «Дт/Кт» на проведённом документе, а не из objects/.

Иллюстрация Дт/Кт (НЕ из кода документа — для понимания экономики). Счета — казахстанские (товары 1320/1330), точные коды определяет учётная политика и счета учёта номенклатуры:

⚠️ Это иллюстрация, а не цитата проводок из документа. Источник истины по Дт/Кт — УчетТоваров.СформироватьДвиженияКомплектация + отчёт «Дт/Кт». Российские счета (10/41/43) здесь неприменимы.

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

🐞 Баг в коде (нашли при разборе) [KZ30-KN-0004]. В ПроверитьТаблицуСписанияНаОтрицательныеЗначения ветка определения ИмяКорСубконто содержит копипаст-ошибку: условие на КорСубконтоБУ3 проверяется дважды, а присваивается строка "КорСубконтоБУ2" (см. ObjectModule.bsl, стр. ~229–232). Из-за этого случай КорСубконтоБУ2 фактически недостижим, и в тексте предупреждения может оказаться неверное имя субконто. На само проведение не влияет (только на текст диагностического сообщения), но при доработке учитывайте.

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

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

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

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

🆕 Что нового

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