При настройке обмена данными между конфигурациями «Управление торговлей» и «Бухгалтерия предприятия» разработчики нередко сталкиваются с несовпадением структуры реквизитов платежных документов. В документе ПриходныйКассовыйОрдер в конфигурации БП 3.0 в табличной части РасшифровкаПлатежа обязательно присутствуют реквизиты СтавкаНДС и СуммаНДС. В то же время в исходных данных УТ информация о ставках налога в кассовых документах может отсутствовать либо не совпадать по структуре. Разберем причины возникновения этой коллизии, выясним требования бухгалтерской конфигурации и рассмотрим проверенные способы переноса данных.
Проанализируем архитектурные особенности конфигураций «Управление торговлей» и «Бухгалтерия предприятия»:
ПриходныйКассовыйОрдер в табличной части РасшифровкаПлатежа колонок со ставками и суммами НДС не было вовсе. Разработчики платформенных решений добавили эти реквизиты начиная с релиза 11.3 (и сохранили в 11.4 и 11.5) для реализации требований 54-ФЗ (онлайн-кассы) и упрощения интеграции с бухгалтерскими системами.РеализацияТоваровУслуг или ЗаказКлиента). Из них можно извлечь информацию о ставках. Если же взаиморасчеты ведутся «По договорам в целом», кассовый ордер содержит лишь ссылку на договор, и в документе оплаты нет прямого указания на номенклатурный состав и ставки налога.Рассмотрим, почему нельзя просто проигнорировать заполнение реквизита СтавкаНДС в БП 3.0. На счетах бухгалтерского учета расчетов с покупателями (счета 62.01 и 62.02) субконто по ставкам НДС действительно не ведется. Однако колонка СтавкаНДС в табличной части кассовых документов выполняет критически важные функции:
Формирование записей книги продаж (или обработка Регистрация счетов-фактур на аванс) определяет расчетную ставку (20/120 или 10/110) для создания документа СчетФактураВыданный.НДС с авансов, что искажает книгу продаж и декларацию по НДС.Наиболее простое и архитектурно правильное решение — выполнить обновление «Управление торговлей» до версии 11.3 или выше. Начиная с релиза 11.3 разработчики 1С штатно добавили реквизиты СтавкаНДС и СуммаНДС в табличную часть РасшифровкаПлатежа документа ПриходныйКассовыйОрдер. Документы кассы заполняются ставками налога в момент их создания в УТ, и при типовом обмене через универсальный формат EnterpriseData они переносятся в БП 3.0 без дополнительных настроек.
Разберем, как штатный модуль менеджера обмена через универсальный формат обходит проблему отсутствия явных ставок:
Товары и Услуги связанного документа реализации или заказа. Происходит группировка строк по ставкам НДС с расчетом удельного веса каждой ставки в общей сумме задолженности. Сумма поступившего платежа пропорционально раскладывается по строкам с соответствующими ставками.Если обновление УТ невозможно и обмен осуществляется с помощью нетиповых правил конвертации данных, реализуем расчет ставок программно. Проанализируем пример логики в обработчике события ПередОбработкой или ПриВыгрузке правила конвертации объекта ПриходныйКассовыйОрдер.
Для корректного разбиения строк по постоплате запросом получаем структуру задолженности из связанного документа реализации и формируем результирующую таблицу:
// Создаем результирующую таблицу для выгрузки в БП
ТаблицаРасшифровки = Новый ТаблицаЗначений;
ТаблицаРасшифровки.Колонки.Добавить("Сделка");
ТаблицаРасшифровки.Колонки.Добавить("СтавкаНДС");
ТаблицаРасшифровки.Колонки.Добавить("СуммаПлатежа");
ТаблицаРасшифровки.Колонки.Добавить("СуммаНДС");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТЧ.СтавкаНДС КАК СтавкаНДС,
| СУММА(ТЧ.СуммаСНДС) КАК СуммаСНДС,
| СУММА(ТЧ.СуммаНДС) КАК СуммаНДС
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК ТЧ
|ГДЕ
| ТЧ.Ссылка = &ДокументРеализации
|СГРУППИРОВАТЬ ПО
| ТЧ.СтавкаНДС";
Запрос.УстановитьПараметр("ДокументРеализации", ОбъектРасчетов);
Результат = Запрос.Выполнить().Выгрузить();
ОстатокПлатежа = Источник.СуммаДокумента;
ВсегоПоДокументу = Результат.Итог("СуммаСНДС");
Если ВсегоПоДокументу > 0 Тогда
Для Каждого Стр Из Результат Цикл
НоваяСтрока = ТаблицаРасшифровки.Добавить();
НоваяСтрока.Сделка = ОбъектРасчетов;
НоваяСтрока.СтавкаНДС = Стр.СтавкаНДС;
// Рассчитываем пропорциональную часть суммы
Доля = Стр.СуммаСНДС / ВсегоПоДокументу;
СуммаСтроки = Окр(Источник.СуммаДокумента * Доля, 2);
НоваяСтрока.СуммаПлатежа = СуммаСтроки;
// Балансируем округление НДС построчно
НоваяСтрока.СуммаНДС = Окр(Стр.СуммаНДС * (СуммаСтроки / Стр.СуммаСНДС), 2);
КонецЦикла;
КонецЕсли;
Для предотвращения погрешности округления копеек в последней строке таблицы разницу между общей суммой платежа и суммой полученных строк необходимо прибавить к строке с наибольшей суммой (выполнить балансировку остатка копеек).
Если кассовый ордер оформлен на аванс без привязки к конкретному заказу, в обработчике ПослеЗагрузки на стороне конфигурации «Бухгалтерия предприятия» устанавливаем ставку НДС из реквизитов договора контрагента или учетной политики организации-получателя:
Для Каждого Стр Из Объект.РасшифровкаПлатежа Цикл
Если Не ЗначениеЗаполнено(Стр.СтавкаНДС) Тогда
Если Объект.Организация.ПлательщикНДС Тогда
// Подставляем основную ставку налога
Стр.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
Стр.СуммаНДС = Окр(Стр.СуммаПлатежа * 20 / 120, 2);
Иначе
Стр.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
Стр.СуммаНДС = 0;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Применение одного из предложенных вариантов обеспечивает корректную выгрузку документов в БП 3.0, исключает ручные корректировки бухгалтером и гарантирует правильное автоматическое заполнение книги продаж при регистрации счетов-фактур на аванс.