Документ «Возврат ТМЗ поставщику»
Документ оформляет возврат поставщику ранее поступивших товаров, услуг и основных средств (а также материалов из переработки): списывает ценности со склада, корректирует взаиморасчёты и НДС, формирует проводки БУ и НУ. Зеркало документа «Поступление товаров и услуг» в разделе «Покупка».
🎯 Что это и зачем
Товар пришёл бракованный, сорт не тот, поставили лишнее или не по договору — ценности нужно вернуть поставщику и откатить в учёте то, что дало поступление. Документ «Возврат ТМЗ поставщику» делает это одним проведением: списывает возвращаемое со склада, уменьшает задолженность перед поставщиком (или формирует его долг перед нами), корректирует НДС, ранее принятый к зачёту, и при необходимости снимает с учёта возвращаемое основное средство.
Документ покрывает четыре ситуации (через вид операции и набор табличных частей):
- возврат ТМЗ — таблица «Товары»;
- возврат услуг — таблица «Услуги» (сторнирование принятых ранее затрат по услуге);
- возврат ОС — таблица «ОС» (бракованное/ошибочно принятое основное средство до ввода в эксплуатацию);
- возврат материалов из переработки — вид операции «Из переработки», только таблица «Товары» (возврат давальческого сырья).
Кто работает: бухгалтеры и кладовщики. Создаётся как с нуля, так и на основании поступления товаров или полученного счёта-фактуры — тогда шапка и строки заполняются автоматически.
🧭 Где найти в программе
Раздел «Покупка» → пункт «Возврат ТМЗ поставщику» (журнал документов); новый создаём кнопкой «Создать». Чаще всего документ удобнее открывать из поступления — кнопкой «Создать на основании».
navigation-map.json объекта Документ.ВозвратТоваровПоставщику нет. Раздел «Покупка» определён по подсистеме объекта и по зеркальному документу «Поступление товаров и услуг» (он в «Покупке»). Точное имя пункта меню сверьте в конкретной конфигурации Fresh — оно может отличаться («Возвраты поставщикам» и т. п.).👤 Часть 1. Для пользователя
Проходим по шагам, как в курсе: от пустого документа (или основания) до проведённого возврата и проверки проводок.
Урок 1. Возврат товаров на основании поступления
Когда: вернуть поставщику товар, который ранее пришёл по конкретному поступлению (брак, пересортица, излишек). Это самый частый и самый безопасный путь — реквизиты и цены подтянутся из исходного документа.
Шаг 1. Создаём на основании
Открываем нужное «Поступление товаров и услуг» → «Создать на основании» → «Возврат ТМЗ поставщику». Либо из журнала возвратов: «Создать» → выбрать основание.
Шаг 2. Проверяем шапку
Из основания подставятся: Организация, Контрагент (поставщик), Договор, Склад, валюта и курс взаиморасчётов. Если склад не определился — система подставит склад по умолчанию.
Шаг 3. Правим строки «Товары»
Табличная часть «Товары» заполнится позициями из поступления. Оставляем только то, что реально возвращаем: лишние строки удаляем, количество уменьшаем до возвращаемого. Цена, ставка и счета НДС/учёта подтянутся из основания.
Шаг 4. Проверяем итоги
Внизу формы — Сумма документа и НДС. Убеждаемся, что суммы соответствуют возвращаемому объёму.
Шаг 5. Проводим
«Провести» или «Записать и закрыть». Чтобы проверить учёт — открываем Дт/Кт (движения документа).
Шаг 6. Регистрируем счёт-фактуру (если нужно)
Если по возврату оформляется счёт-фактура — нажимаем команду регистрации СФ в панели документа. Создастся связанный «Счёт-фактура полученный»; его признак проведения далее синхронизируется с возвратом автоматически.
Урок 2. Возврат услуг
Отличия от товаров: 1. Заполняем таблицу «Услуги»: Номенклатуру (вид «Услуга»), Содержание, Количество, Цену, Ставку НДС. 2. Указываем счёт затрат (БУ и при необходимости НУ) — на него сторнируется ранее принятая стоимость услуги. 3. Склад для услуг не требуется.
Урок 3. Возврат основного средства
Когда: возвращаем поставщику ошибочно принятое или бракованное ОС.
- Заполняем шапку (Организация, Контрагент, Договор).
- Переходим на закладку «ОС», подбираем основное средство.
- Указываем Сумму возврата, Ставку НДС, при аналитическом учёте — Подразделение и МОЛ.
- При необходимости заполняем Событие ОС.
Урок 4. Возврат материалов из переработки
Когда: ранее передали давальческое сырьё/материалы переработчику, теперь возвращаем неиспользованное.
- Вид операции → «Из переработки».
- Заполняем Контрагента (переработчик) и Договор.
- Заполняем только таблицу «Товары».
ПередЗаписью) — заполнять их бессмысленно. Также не проверяются и не используются счёт расчётов с контрагентом и счёт отнесения себестоимости БУ — логика возврата давальческого сырья отличается от обычной закупки.Урок 5. Ручной возврат без основания
Если основания нет — создаём документ с нуля: заполняем шапку (Организация, Контрагент, Договор, Склад), затем таблицу «Товары» через «Подбор», указываем количество и цену. Счета учёта и ставки НДС подставятся автоматически по номенклатуре и настройкам; при необходимости правим.
🛠 Часть 2. Для программиста
Источник: реальный код релиза 3.0.72.1 (Documents/ВозвратТоваровПоставщику/Ext/ObjectModule.bsl, 607 строк — прочитан целиком), плюс разбор objects/ и business-logic/. Расхождения авто-разбора с кодом помечены как ошибки и исправлены ниже.
Структура объекта
Ключевые реквизиты шапки (обязательность — по ОбработкаПроверкиЗаполнения, зависит от вида операции и наличия строк): ВидОперации, Организация, Контрагент, ДоговорКонтрагента, СчетУчетаРасчетовСКонтрагентом, ВалютаДокумента, КурсВзаиморасчетов, КратностьВзаиморасчетов, Склад (обязателен только при непустой таблице «Товары»), СчетОтнесенияСебестоимостиБУ / СчетОтнесенияСебестоимостиНУ, ВидУчетаНУ. Управляющие флаги: УчитыватьНДС, УчитыватьКПН, НДСВключенВСтоимость, ОтложитьПринятиеНДСКЗачету, РучнаяКорректировка. Спецреквизит СчетУчетаРасчетовПоВозвратам (в коде — признак УказанСчетВозвратов) переключает схему зачёта авансов.
Перечисление вида операции: Перечисление.ВидыОперацийВозвратТоваровПоставщику со значениями Покупка (обычный возврат) и ИзПереработки.
Табличные части: Товары (ТМЗ: номенклатура, кол-во, цена, ставка/счёт НДС, счета учёта БУ/НУ, НомерГТД), Услуги (+ Содержание, счета затрат БУ/НУ с субконто), ОС (основное средство, сумма, счета учёта, подразделение, МОЛ), УчастникиСовместнойДеятельности.
Жизненный цикл (обработчики ObjectModule)
| Обработчик | Что делает (по реальному коду) |
|---|---|
ЗаполнитьНаборыЗначенийДоступа (Экспорт) |
RLS: наборы доступа по Организации / Структурному подразделению / Складу через УчетТоваров |
ОбработкаЗаполнения |
При вводе на основании → ЗаполнитьПоДокументуОснования; если склад пуст — склад по умолчанию. При Структура — ЗаполнитьЗначенияСвойств. Иначе — ЗаполнениеДокументов.ЗаполнитьШапкуДокумента |
ПриКопировании |
Перезаполняет шапку валютой регл. учёта при копировании |
ОбработкаПроверкиЗаполнения |
Динамически собирает массив непроверяемых реквизитов по виду операции / флагам НДС/КПН / наличию строк; построчная проверка ТЧ; проверка статусов ОС запросом |
ПередЗаписью |
При ИзПереработки очищает ОС и Услуги; чистит данные СД; считает СуммаДокумента; синхронизирует пометку удаления со счётом-фактурой; заполняет договор |
ПриЗаписи |
Синхронизирует данные документа и СчетФактураПолученный; при отказе — сообщение об ошибке |
ОбработкаПроведения |
Готовит наборы и параметры, формирует движения через профильные модули учёта; сворачивает проводки; отражает ПР в НУ; синхронизирует СФ |
ОбработкаУдаленияПроведения |
Снимает признак проведения у связанного СчетФактураПолученный |
objects/ утверждает, что ОбработкаЗаполнения поддерживает основание РасходнаяНакладная. В реальном коде (строки 393–403) поддерживаются только ПоступлениеТоваровУслуг и СчетФактураПолученный. РасходнаяНакладная — выдумка авто-разбора.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) — движения заполняет пользователь.
- Ветвление по виду операции определяет, дополнять ли себестоимость и распределять ли авансы; для «Из переработки» товары лишь помечаются ОтражатьВБухгалтерскомУчете = Истина, без распределения авансов.
- УказанСчетВозвратов (по реквизиту СчетУчетаРасчетовПоВозвратам): если счёт указан — авансы по товарам не распределяются, используется отдельная таблица возвратов; если не указан — зачёт авансов распределяется по стоимости списанных товаров.
- Перед формированием движений — контроль остатков регистра «Товары организаций» (НомераГТДСервер.ВыполнитьКонтрольТоварыОрганизаций).
- Порядок строгий: списание товаров → товары организаций → зачёт авансов → доходы/расходы → ОС (серия) → ФА → НДС → переоценка валюты (последней) → свёртка проводок → постоянные разницы НУ.
- В конце — синхронизация признака проведения со связанным СчетФактураПолученный (обратная — в ОбработкаУдаленияПроведения).
objects/ подаёт «плоские» проводки (Дт 3310 Кт 1320, Дт 3310 Кт 2410, сторно НДС в регистр КорректировкаНДСКВозмещению). Реальный код таких строк не содержит: счета вычисляются модулями УчетТоваров / УчетДоходовРасходов / УчетОС / УчетНДСИАкциза по учётной политике, а движения НДС формирует УчетНДСИАкциза.СформироватьДвиженияВозвратТоваровПоставщику (имя конечного регистра НДС в документе не задаётся). Точные Дт/Кт и регистры сверяйте по отчёту «Дт/Кт» на проведённом документе — он источник истины. «Плоские» Дт/Кт из objects/ — иллюстрация ожидаемой картины, не утверждение о коде.УчетТоваров, УчетДоходовРасходов, УчетОС, УчетНДСИАкциза, УчетнаяПолитикаСервер. Чек-лист при настройке у клиента: (1) счета учёта номенклатуры и расчётов; (2) флаги УчитыватьНДС / УчитыватьКПН и поддержка временных разниц по налогу на прибыль (ПроцедурыНалоговогоУчета.ПоддержкаУчетаВременныхРазницПоНалогуНаПрибыль); (3) включён ли аналитический учёт ОС по подразделениям/МОЛ (от этого зависит обязательность этих полей); (4) для переработки — отдельная схема без счёта расчётов и счёта себестоимости БУ; (5) спецсчёт возвратов (СчетУчетаРасчетовПоВозвратам) меняет распределение авансов.Валидации (ОбработкаПроверкиЗаполнения, строки 62–217)
Это самая объёмная процедура модуля. Логика построена «от обратного»: собирается массив непроверяемых реквизитов, исключаемый из стандартной проверки, плюс отдельная построчная проверка табличных частей.
- Параметры построчной проверки задаются в начале:
ПроверятьЗаполнениеСчетаУчетаНДС(=УчитыватьНДС И НЕ НДСВключенВСтоимость И ПользовательУправляетСчетамиУчета),ПроверятьЗаполнениеСчетаУчетаНУ(= есть строки «Товары»),ПроверятьСтатусыОС(= есть строки «ОС»). - Вид операции
ИзПереработки→ из проверки исключаютсяУслуги,ОС,СчетУчетаРасчетовСКонтрагентом,СчетОтнесенияСебестоимостиБУи (если в ТЧ что-то осталось) построчные поля ОС/Услуг — они всё равно будут очищены при записи. Складисключается из обязательных, если таблица «Товары» пуста (строки 86–90).- НУ-счета проверяются только при
УчитыватьКПНи поддержке временных разниц по налогу на прибыль либо приВидУчетаНУ = НУ; иначе исключаютсяВидУчетаНУ,СчетОтнесенияСебестоимостиНУ,Товары.СчетУчетаНУ,Услуги.СчетЗатратНУ,ОС.СчетУчетаНУ. - НДС-поля (
СтавкаНДС,НДСВидОборота,НДСВидПоступления, счёт НДС) исключаются, если организация не плательщик НДС, либоНЕ УчитыватьНДС, либо вид операцииИзПереработки, либоОтложитьПринятиеНДСКЗачету. - Аналитика ОС:
ОС.ПодразделениеОрганизациииОС.МОЛОрганизациипроверяются только если в учётной политике включён соответствующий аналитический учёт (УправлениеВнеоборотнымиАктивамиСервер.ВедетсяАналитическийУчётОС…). - Построчная проверка (
ПроверитьЗаполнениеТабличнойЧастиПострочно): для «Товары» — счёт НДС при ненулевой ставке и счёт НУ при заполненном небалансовом счёте БУ; для «ОС» — статусы. - Проверка статусов ОС — отдельный пакетный запрос
СформироватьЗапросПоТабличнойЧастиОС(строки 473–604) к регистру сведенийСостоянияОСОрганизаций: для каждого ОС из строки определяется, снято ли с учёта и поступало ли в организацию. Если ОС снято с учёта — ошибка «Основное средство „…“ снято с учёта…»; если не поступало и не принято — ошибка «…не поступало в указанную организацию». - Финал —
СчетаУчетаВДокументах.ПроверитьЗаполнение(...).
Движения по регистрам (по источникам — сверять с отчётом «Дт/Кт»)
| Регистр | Тип / роль | Что пишет (источник истины — модуль) |
|---|---|---|
Товары организаций (партии/ГТД) |
Накопление | Контроль и движение партий (НомераГТДСервер) |
| Регистры товаров на складе | Накопление / расход | Списание возвращаемых ТМЗ (УчетТоваров) |
| Бухгалтерия (БУ) / Налоговый (НУ) | Проводки | Взаиморасчёты, доходы/расходы, ОС, переоценка валюты — формируют УчетДоходовРасходов, УправлениеВзаиморасчетамиСервер, УчетОС |
| Регистры НДС | Накопление | Корректировка зачётного НДС (УчетНДСИАкциза) |
СоставОС, СостоянияОСОрганизаций, СобытияОСОрганизаций и пр. ОС/налоговые |
Сведения/накопление | При возврате ОС (УчетОС, УправлениеВнеоборотнымиАктивамиСервер) |
ОбработкаПроведения не указаны — документ передаёт таблицы в модули. Не полагайтесь на список регистров из objects/ дословно (там встречаются неточные имена вроде КорректировкаНДСКВозмещению); конечный набор движений смотрите в форме «Движения документа».Зависимости (общие модули)
УчетТоваров (списание, наборы доступа), НомераГТДСервер (партии/ГТД), УправлениеВзаиморасчетамиСервер (зачёт авансов), УчетДоходовРасходов (доходы/расходы, переоценка валюты), УчетОС и УправлениеВнеоборотнымиАктивамиСервер (ОС и ФА), УчетНДСИАкциза (НДС, синхронизация СФ), ПроцедурыНалоговогоУчета (ПР/ВР, плательщик НДС), УчетнаяПолитикаСервер (плательщик налога на прибыль), СчетаУчетаВДокументах (заполнение и проверка счетов), ЗаполнениеДокументов / РаботаСДоговорамиКонтрагентов (шапка, договор), ОбщегоНазначения*.
- Вид операции — главный переключатель.
ИзПереработкименяет и проведение (нет распределения авансов, товары лишь помечаются к отражению в БУ), и запись (ПередЗаписьючиститОС/Услуги), и валидацию (исключает счёт расчётов и себестоимости БУ). Любая доработка должна учитывать обе ветки.РучнаяКорректировка = Истина→ раннийВозвратвОбработкаПроведения(стр. 262): движения заполняет пользователь, авто-логика не работает.- Статусы ОС проверяются запросом, а не по реквизиту: пакет в
СформироватьЗапросПоТабличнойЧастиОСвозвращает «снятые с учёта» и «не поступившие» поСостоянияОСОрганизаций. При доработке аналитики ОС правьте и этот запрос.- Синхронизация СФ — в четырёх точках (
ПередЗаписью,ПриЗаписи,ОбработкаПроведения,ОбработкаУдаленияПроведения), всегда с метаданнымСчетФактураПолученный. Не перепутайте с «выданным».- Спецсчёт возвратов (
УказанСчетВозвратов) — нетривиальная развилка распределения авансов; тестируйте оба пути.- Свёртка проводок (
СвернутьДвиженияРегистровБухгалтерии) выполняется после всех движений — учитывайте при отладке дублей.
🔗 Связанные разделы
- postuplenie-tmz-i-uslug — документ-основание (зеркальная закупка)
- schet-faktura-poluchennyy — связанный счёт-фактура (синхронизация проведения)
- vozvrat-tmz-ot-pokupatelya — зеркальный документ продажного контура
- realizaciya-tmz-i-uslug — структурный «брат-близнец» по архитектуре проведения
🆕 Что нового
| Версия | Изменение | Тип |
|---|---|---|
| 3.0.72.1 | Первичное описание (на релизе 3.0.72.1) | 🆕 |