Как перенести приходный кассовый ордер из УТ 11 в БП 3 при отсутствии ставок НДС?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Бухгалтерский учет Торговля и дистрибуция
← На главную

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

В чем причина различий в структуре метаданных

Проанализируем архитектурные особенности конфигураций «Управление торговлей» и «Бухгалтерия предприятия»:

  1. Развитие метаданных в УТ 11: В ранних редакциях УТ 11 (до версии 11.3) в документе ПриходныйКассовыйОрдер в табличной части РасшифровкаПлатежа колонок со ставками и суммами НДС не было вовсе. Разработчики платформенных решений добавили эти реквизиты начиная с релиза 11.3 (и сохранили в 11.4 и 11.5) для реализации требований 54-ФЗ (онлайн-кассы) и упрощения интеграции с бухгалтерскими системами.
  2. Порядок ведения взаиморасчетов: Если расчеты с контрагентом ведутся «По расчетным документам» или «По заказам», в строке платежа в УТ явно зафиксирован объект расчетов (документ РеализацияТоваровУслуг или ЗаказКлиента). Из них можно извлечь информацию о ставках. Если же взаиморасчеты ведутся «По договорам в целом», кассовый ордер содержит лишь ссылку на договор, и в документе оплаты нет прямого указания на номенклатурный состав и ставки налога.
  3. Смешанные ставки в одном первичном документе: Если в документе отгрузки присутствуют позиции с разными ставками (например, 10% и 20%), частичная оплата требует пропорционального распределения общей суммы платежа по нескольким строкам.

Зачем ставка НДС обязательна в БП 3.0

Рассмотрим, почему нельзя просто проигнорировать заполнение реквизита СтавкаНДС в БП 3.0. На счетах бухгалтерского учета расчетов с покупателями (счета 62.01 и 62.02) субконто по ставкам НДС действительно не ведется. Однако колонка СтавкаНДС в табличной части кассовых документов выполняет критически важные функции:

  1. Формирование счетов-фактур на аванс: По значению ставки НДС в строке регламентная операция Формирование записей книги продаж (или обработка Регистрация счетов-фактур на аванс) определяет расчетную ставку (20/120 или 10/110) для создания документа СчетФактураВыданный.
  2. Движения по регистрам НДС: Пустое значение приводит к некорректным записям в регистре накопления НДС с авансов, что искажает книгу продаж и декларацию по НДС.
  3. Проблема обратного пересчета: Рассчитать сумму НДС по формуле «Сумма * 20 / 120» непосредственно из общей суммы платежа математически некорректно. Из-за построчного округления копеек в первичной накладной расчетная сумма НДС с общей суммы оплаты может разойтись с исходным документом на несколько копеек.

Решение 1: Обновление конфигурации УТ до актуального релиза

Наиболее простое и архитектурно правильное решение — выполнить обновление «Управление торговлей» до версии 11.3 или выше. Начиная с релиза 11.3 разработчики 1С штатно добавили реквизиты СтавкаНДС и СуммаНДС в табличную часть РасшифровкаПлатежа документа ПриходныйКассовыйОрдер. Документы кассы заполняются ставками налога в момент их создания в УТ, и при типовом обмене через универсальный формат EnterpriseData они переносятся в БП 3.0 без дополнительных настроек.

Решение 2: Использование алгоритмов типовой синхронизации EnterpriseData

Разберем, как штатный модуль менеджера обмена через универсальный формат обходит проблему отсутствия явных ставок:

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

Решение 3: Реализация алгоритма в правилах обмена (КД 2 или КД 3)

Если обновление УТ невозможно и обмен осуществляется с помощью нетиповых правил конвертации данных, реализуем расчет ставок программно. Проанализируем пример логики в обработчике события ПередОбработкой или ПриВыгрузке правила конвертации объекта ПриходныйКассовыйОрдер.

Для корректного разбиения строк по постоплате запросом получаем структуру задолженности из связанного документа реализации и формируем результирующую таблицу:


// Создаем результирующую таблицу для выгрузки в БП
ТаблицаРасшифровки = Новый ТаблицаЗначений;
ТаблицаРасшифровки.Колонки.Добавить("Сделка");
ТаблицаРасшифровки.Колонки.Добавить("СтавкаНДС");
ТаблицаРасшифровки.Колонки.Добавить("СуммаПлатежа");
ТаблицаРасшифровки.Колонки.Добавить("СуммаНДС");

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	ТЧ.СтавкаНДС КАК СтавкаНДС,
|	СУММА(ТЧ.СуммаСНДС) КАК СуммаСНДС,
|	СУММА(ТЧ.СуммаНДС) КАК СуммаНДС
|ИЗ
|	Документ.РеализацияТоваровУслуг.Товары КАК ТЧ
|ГДЕ
|	ТЧ.Ссылка = &ДокументРеализации
|СГРУППИРОВАТЬ ПО
|	ТЧ.СтавкаНДС";

Запрос.УстановитьПараметр("ДокументРеализации", ОбъектРасчетов);
Результат = Запрос.Выполнить().Выгрузить();

ОстатокПлатежа = Источник.СуммаДокумента;
ВсегоПоДокументу = Результат.Итог("СуммаСНДС");

Если ВсегоПоДокументу > 0 Тогда
	Для Каждого Стр Из Результат Цикл
		НоваяСтрока = ТаблицаРасшифровки.Добавить();
		НоваяСтрока.Сделка = ОбъектРасчетов;
		НоваяСтрока.СтавкаНДС = Стр.СтавкаНДС;
		
		// Рассчитываем пропорциональную часть суммы
		Доля = Стр.СуммаСНДС / ВсегоПоДокументу;
		СуммаСтроки = Окр(Источник.СуммаДокумента * Доля, 2);
		
		НоваяСтрока.СуммаПлатежа = СуммаСтроки;
		// Балансируем округление НДС построчно
		НоваяСтрока.СуммаНДС = Окр(Стр.СуммаНДС * (СуммаСтроки / Стр.СуммаСНДС), 2);
	КонецЦикла;
КонецЕсли;

Для предотвращения погрешности округления копеек в последней строке таблицы разницу между общей суммой платежа и суммой полученных строк необходимо прибавить к строке с наибольшей суммой (выполнить балансировку остатка копеек).

Если кассовый ордер оформлен на аванс без привязки к конкретному заказу, в обработчике ПослеЗагрузки на стороне конфигурации «Бухгалтерия предприятия» устанавливаем ставку НДС из реквизитов договора контрагента или учетной политики организации-получателя:


Для Каждого Стр Из Объект.РасшифровкаПлатежа Цикл
	Если Не ЗначениеЗаполнено(Стр.СтавкаНДС) Тогда
		Если Объект.Организация.ПлательщикНДС Тогда
			// Подставляем основную ставку налога
			Стр.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
			Стр.СуммаНДС = Окр(Стр.СуммаПлатежа * 20 / 120, 2);
		Иначе
			Стр.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
			Стр.СуммаНДС = 0;
		КонецЕсли;
	КонецЕсли;
КонецЦикла;

Применение одного из предложенных вариантов обеспечивает корректную выгрузку документов в БП 3.0, исключает ручные корректировки бухгалтером и гарантирует правильное автоматическое заполнение книги продаж при регистрации счетов-фактур на аванс.

← На главную