Документ «Возврат ТМЗ поставщику»

Документ оформляет возврат поставщику ранее поступивших товаров, услуг и основных средств (а также материалов из переработки): списывает ценности со склада, корректирует взаиморасчёты и НДС, формирует проводки БУ и НУ. Зеркало документа «Поступление товаров и услуг» в разделе «Покупка».

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

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

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

Документ покрывает четыре ситуации (через вид операции и набор табличных частей):

Кто работает: бухгалтеры и кладовщики. Создаётся как с нуля, так и на основании поступления товаров или полученного счёта-фактуры — тогда шапка и строки заполняются автоматически.

💡 Это документ закупочного контура: он возвращает то, что мы у поставщика купили. Не путать с зеркальным «Возврат ТМЗ от покупателя» — там покупатель возвращает нам проданное.

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

Раздел «Покупка» → пункт «Возврат ТМЗ поставщику» (журнал документов); новый создаём кнопкой «Создать». Чаще всего документ удобнее открывать из поступления — кнопкой «Создать на основании».

раздел «Покупка», открытый журнал «Возврат ТМЗ поставщику». (AccountingKZ30 во Fresh; маршрут: Покупка → Возврат ТМЗ поставщику)
раздел «Покупка», открытый журнал «Возврат ТМЗ поставщику». (AccountingKZ30 во Fresh; маршрут: Покупка → Возврат ТМЗ поставщику)
⚠️ Пробел в навигационной карте [KZ30-VTP-0003]. В navigation-map.json объекта Документ.ВозвратТоваровПоставщику нет. Раздел «Покупка» определён по подсистеме объекта и по зеркальному документу «Поступление товаров и услуг» (он в «Покупке»). Точное имя пункта меню сверьте в конкретной конфигурации Fresh — оно может отличаться («Возвраты поставщикам» и т. п.).

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

Проходим по шагам, как в курсе: от пустого документа (или основания) до проведённого возврата и проверки проводок.

Урок 1. Возврат товаров на основании поступления

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

Шаг 1. Создаём на основании

Открываем нужное «Поступление товаров и услуг» → «Создать на основании» → «Возврат ТМЗ поставщику». Либо из журнала возвратов: «Создать» → выбрать основание.

📷 СКРИН 02
СКРИН 02 — меню «Создать на основании» в форме поступления.

Шаг 2. Проверяем шапку

Из основания подставятся: Организация, Контрагент (поставщик), Договор, Склад, валюта и курс взаиморасчётов. Если склад не определился — система подставит склад по умолчанию.

заполненная шапка документа возврата.
заполненная шапка документа возврата.

Шаг 3. Правим строки «Товары»

Табличная часть «Товары» заполнится позициями из поступления. Оставляем только то, что реально возвращаем: лишние строки удаляем, количество уменьшаем до возвращаемого. Цена, ставка и счета НДС/учёта подтянутся из основания.

📷 СКРИН 04
СКРИН 04 — табличная часть «Товары» с возвращаемыми позициями.

Шаг 4. Проверяем итоги

Внизу формы — Сумма документа и НДС. Убеждаемся, что суммы соответствуют возвращаемому объёму.

📷 СКРИН 05
СКРИН 05 — блок итогов документа.

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

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

окно «Движения документа: Дт/Кт».
окно «Движения документа: Дт/Кт».

Шаг 6. Регистрируем счёт-фактуру (если нужно)

Если по возврату оформляется счёт-фактура — нажимаем команду регистрации СФ в панели документа. Создастся связанный «Счёт-фактура полученный»; его признак проведения далее синхронизируется с возвратом автоматически.

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

Урок 2. Возврат услуг

Отличия от товаров: 1. Заполняем таблицу «Услуги»: Номенклатуру (вид «Услуга»), Содержание, Количество, Цену, Ставку НДС. 2. Указываем счёт затрат (БУ и при необходимости НУ) — на него сторнируется ранее принятая стоимость услуги. 3. Склад для услуг не требуется.

💡 По услугам нет движения по складу — корректируются только затраты, взаиморасчёты и НДС.

Урок 3. Возврат основного средства

Когда: возвращаем поставщику ошибочно принятое или бракованное ОС.

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

Урок 4. Возврат материалов из переработки

Когда: ранее передали давальческое сырьё/материалы переработчику, теперь возвращаем неиспользованное.

  1. Вид операции → «Из переработки».
  2. Заполняем Контрагента (переработчик) и Договор.
  3. Заполняем только таблицу «Товары».
⚠️ Важно. При виде операции «Из переработки» таблицы «ОС» и «Услуги» при записи очищаются автоматически (обработчик ПередЗаписью) — заполнять их бессмысленно. Также не проверяются и не используются счёт расчётов с контрагентом и счёт отнесения себестоимости БУ — логика возврата давальческого сырья отличается от обычной закупки.

Урок 5. Ручной возврат без основания

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

💡 Чтобы не ошибиться со счётом учёта или НДС — заранее настройте счета учёта номенклатуры и ставки в карточках; тогда строки заполнятся корректно сами.

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

Источник: реальный код релиза 3.0.72.1 (Documents/ВозвратТоваровПоставщику/Ext/ObjectModule.bsl, 607 строк — прочитан целиком), плюс разбор objects/ и business-logic/. Расхождения авто-разбора с кодом помечены как ошибки и исправлены ниже.

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

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

Перечисление вида операции: Перечисление.ВидыОперацийВозвратТоваровПоставщику со значениями Покупка (обычный возврат) и ИзПереработки.

Табличные части: Товары (ТМЗ: номенклатура, кол-во, цена, ставка/счёт НДС, счета учёта БУ/НУ, НомерГТД), Услуги (+ Содержание, счета затрат БУ/НУ с субконто), ОС (основное средство, сумма, счета учёта, подразделение, МОЛ), УчастникиСовместнойДеятельности.

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

Обработчик Что делает (по реальному коду)
ЗаполнитьНаборыЗначенийДоступа (Экспорт) RLS: наборы доступа по Организации / Структурному подразделению / Складу через УчетТоваров
ОбработкаЗаполнения При вводе на основании → ЗаполнитьПоДокументуОснования; если склад пуст — склад по умолчанию. При Структура — ЗаполнитьЗначенияСвойств. Иначе — ЗаполнениеДокументов.ЗаполнитьШапкуДокумента
ПриКопировании Перезаполняет шапку валютой регл. учёта при копировании
ОбработкаПроверкиЗаполнения Динамически собирает массив непроверяемых реквизитов по виду операции / флагам НДС/КПН / наличию строк; построчная проверка ТЧ; проверка статусов ОС запросом
ПередЗаписью При ИзПереработки очищает ОС и Услуги; чистит данные СД; считает СуммаДокумента; синхронизирует пометку удаления со счётом-фактурой; заполняет договор
ПриЗаписи Синхронизирует данные документа и СчетФактураПолученный; при отказе — сообщение об ошибке
ОбработкаПроведения Готовит наборы и параметры, формирует движения через профильные модули учёта; сворачивает проводки; отражает ПР в НУ; синхронизирует СФ
ОбработкаУдаленияПроведения Снимает признак проведения у связанного СчетФактураПолученный
⚠️ Ошибка авто-разбора [KZ30-VTP-0001]. objects/ утверждает, что ОбработкаЗаполнения поддерживает основание РасходнаяНакладная. В реальном коде (строки 393–403) поддерживаются только ПоступлениеТоваровУслуг и СчетФактураПолученный. РасходнаяНакладная — выдумка авто-разбора.
⚠️ Ошибка авто-разбора [KZ30-VTP-0002]. objects/ называет связанный счёт-фактуру «СчетФактураПолученный (тип „Выданный“)». Это противоречиво: во всём коде синхронизация идёт строго с метаданным СчетФактураПолученный (ПередЗаписью, ПриЗаписи, ОбработкаПроведения, ОбработкаУдаленияПроведения). Никакого «Выданного» здесь нет. Также номера строк, которые приводит objects/ (87–94, 429–442, 504–519, 587–608), не соответствуют реальному 607-строчному модулю — они устарели.

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

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

Источник: ObjectModule.bsl, процедура ОбработкаПроведения (строки 257–380), сокращённо ключевые места:

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

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

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

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

    // Ветвление по виду операции: обычный возврат vs «Из переработки»
    Если ПараметрыПроведения.Реквизиты[0].ВидОперации <> Перечисления.ВидыОперацийВозвратТоваровПоставщику.ИзПереработки
        И ТаблицаСписанныеТовары.Количество() > 0 Тогда
        // дополнить себестоимостью из документа и (если не указан счёт возвратов) распределить авансы
        Документы.ВозвратТоваровПоставщику.ЗаполнитьДанныеОСебестоимостиТоваровИзДокумента(...);
        Если НЕ ПараметрыПроведения.Реквизиты[0].УказанСчетВозвратов Тогда
            Документы.ВозвратТоваровПоставщику.РаспределитьАвансыПоСписаннымТоварам(...);
        КонецЕсли;
    ИначеЕсли ПараметрыПроведения.Реквизиты[0].ВидОперации = ...ИзПереработки И ТаблицаСписанныеТовары.Количество() > 0 Тогда
        ТаблицаСписанныеТовары.ЗаполнитьЗначения(ИСТИНА, "ОтражатьВБухгалтерскомУчете");
    КонецЕсли;

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

    // ФОРМИРОВАНИЕ ДВИЖЕНИЙ — каждый модуль пишет «свой» учёт:
    УчетТоваров.СформироватьДвиженияСписаниеТоваров(ТаблицаСписанныеТовары, ..., Движения, Отказ);
    НомераГТДСервер.СформироватьДвиженияТоварыОрганизаций(..., Движения, Отказ);
    УправлениеВзаиморасчетамиСервер.СформироватьДвиженияЗачетАвансов(ТаблицаВзаиморасчеты, ..., Движения, Отказ);
    УчетДоходовРасходов.СформироватьДвиженияВозвратТоваровПоставщику(ТаблицаВозвратТоваровПоставщику, ..., Движения, Отказ);
    УчетОС.СформироватьДвиженияВозвратТоваровПоставщику(ТаблицаВозвратТоваровПоставщику, ..., Движения, Отказ);
    УчетОС.СформироватьДвиженияРегистрацияСобытияОС(...);          // + СоставОС, СостоянияОС, налоги на имущество/землю/транспорт, амортизация
    УправлениеВнеоборотнымиАктивамиСервер.СформироватьДвиженияОбъектыНалоговогоУчетаФА(...);
    УчетНДСИАкциза.СформироватьДвиженияВозвратТоваровПоставщику(ПараметрыПроведения.ТаблицаНДС, ..., Движения, Отказ);

    // Переоценка валютных остатков — ПОСЛЕ всех прочих проводок
    ТаблицаПереоценка = УчетДоходовРасходов.ПодготовитьТаблицуПереоценкаВалютныхОстатковПоПроводкамДокумента(..., Движения, Отказ);
    УчетДоходовРасходов.СформироватьДвиженияПереоценкаВалютныхОстатков(ТаблицаПереоценка, ..., Движения, Отказ);

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

    // Синхронизация признака проведения со связанным счётом-фактурой
    УчетНДСИАкциза.СинхронизацияПризнакаПроведенияУСчетаФактуры(Ссылка, Отказ, Истина, "СчетФактураПолученный");

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

Кто что формирует (вызов → смысл):

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

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

⚠️ Несостыковка [KZ30-VTP-0004]. Авто-разбор objects/ подаёт «плоские» проводки (Дт 3310 Кт 1320, Дт 3310 Кт 2410, сторно НДС в регистр КорректировкаНДСКВозмещению). Реальный код таких строк не содержит: счета вычисляются модулями УчетТоваров / УчетДоходовРасходов / УчетОС / УчетНДСИАкциза по учётной политике, а движения НДС формирует УчетНДСИАкциза.СформироватьДвиженияВозвратТоваровПоставщику (имя конечного регистра НДС в документе не задаётся). Точные Дт/Кт и регистры сверяйте по отчёту «Дт/Кт» на проведённом документе — он источник истины. «Плоские» Дт/Кт из objects/ — иллюстрация ожидаемой картины, не утверждение о коде.
💼 Партнёру / внедренцу. «Проводки не те» → причина почти всегда в учётной политике и счетах учёта, а не в документе. Документ — оркестратор; логика счетов живёт в УчетТоваров, УчетДоходовРасходов, УчетОС, УчетНДСИАкциза, УчетнаяПолитикаСервер. Чек-лист при настройке у клиента: (1) счета учёта номенклатуры и расчётов; (2) флаги УчитыватьНДС / УчитыватьКПН и поддержка временных разниц по налогу на прибыль (ПроцедурыНалоговогоУчета.ПоддержкаУчетаВременныхРазницПоНалогуНаПрибыль); (3) включён ли аналитический учёт ОС по подразделениям/МОЛ (от этого зависит обязательность этих полей); (4) для переработки — отдельная схема без счёта расчётов и счёта себестоимости БУ; (5) спецсчёт возвратов (СчетУчетаРасчетовПоВозвратам) меняет распределение авансов.

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

Это самая объёмная процедура модуля. Логика построена «от обратного»: собирается массив непроверяемых реквизитов, исключаемый из стандартной проверки, плюс отдельная построчная проверка табличных частей.

Движения по регистрам (по источникам — сверять с отчётом «Дт/Кт»)

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

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

УчетТоваров (списание, наборы доступа), НомераГТДСервер (партии/ГТД), УправлениеВзаиморасчетамиСервер (зачёт авансов), УчетДоходовРасходов (доходы/расходы, переоценка валюты), УчетОС и УправлениеВнеоборотнымиАктивамиСервер (ОС и ФА), УчетНДСИАкциза (НДС, синхронизация СФ), ПроцедурыНалоговогоУчета (ПР/ВР, плательщик НДС), УчетнаяПолитикаСервер (плательщик налога на прибыль), СчетаУчетаВДокументах (заполнение и проверка счетов), ЗаполнениеДокументов / РаботаСДоговорамиКонтрагентов (шапка, договор), ОбщегоНазначения*.

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

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

🆕 Что нового

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