При работе с интеграцией с государственной системой «Честный ЗНАК» часто возникают ситуации, когда типовые механизмы заполнения данных ведут себя неочевидно. Одной из распространенных проблем является автоматическое проставление ставки НДС 20% в табличной части Товары документа Вывод из оборота ИС МП, даже если в документе-основании ставка НДС была «Без НДС» или «0%». Рассмотрим, как разобраться в причинах этого поведения и как найти решение.
Первое, что необходимо осознать: типовые конфигурации, такие как 1С:Бухгалтерия, содержат жестко прописанные алгоритмы заполнения данных для интеграционных документов. Когда вы вызываете метод Заполнить(), система не всегда просто копирует значения из реквизитов основания. Часто она обращается к специальным модулям, которые «диктуют» правила заполнения в соответствии с требованиями законодательства и форматами обмена ИС МП.
Основные причины возникновения проблемы:
РеквизитФормыВЗначение для подготовки объекта, последующий вызов процедур заполнения перекрывает ваши данные.Не пытайтесь угадать логику — используйте отладчик 1С. Это единственный надежный способ понять, в какой момент происходит подмена значения ставки. Поставьте точку останова в месте вызова процедуры заполнения и проследите, какие значения возвращают функции, отвечающие за выбор НДС.
Особое внимание обратите на работу метода:
ТекущийОбъект = РеквизитФормыВЗначение("Объект");
ТекущийОбъект.Заполнить(Объект.ДокументОснование);
// Установите точку останова здесь и посмотрите,
// какие данные попали в объект после заполнения
ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект");
В конфигурации 1С:Бухгалтерия (редакция 3.0) логика заполнения документов Вывод из оборота ИС МП вынесена в специализированный общий модуль. Вам необходимо найти функцию ТекстЗапросаЗаполненияВыводаИзОборотаИСМПИзПрикладногоДокумента. Именно в этом месте сосредоточены правила формирования данных, которые могут принудительно назначать ставку НДС.
Разберем, что именно нужно сделать:
Интеграция ИСМПБП.Товары.СтавкаНДС для каждой строки. Вы увидите, что разработчики могли добавить жесткое условие для конкретных типов документов-оснований.Помните, что прямая модификация типового кода — это риск при обновлении конфигурации. Вместо редактирования кода напрямую:
ИнтеграцияИСПереопределяемый. Это позволяет переопределить логику заполнения без снятия всей конфигурации с поддержки.Пример логики исправления в расширении:
// После вызова стандартного заполнения пройдитесь по строкам:
Для Каждого СтрокаТовара Из Объект.Товары Цикл
Если УсловиеДляВашегоСлучая Тогда
СтрокаТовара.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
КонецЕсли;
КонецЦикла;
Проблема автоматического проставления НДС в Выводе из оборота ИС МП кроется не в ошибке вашего кода, а в специфической логике типовой интеграции, которая стремится привести данные к формату, ожидаемому «Честным ЗНАКом». Решение задачи заключается в поиске «ответственного» модуля (в данном случае Интеграция ИСМПБП) и внесении корректировок в процедуру заполнения через механизмы расширения. Всегда проверяйте содержимое табличной части документа-основания и то, как оно интерпретируется в запросах системы интеграции — зачастую там уже скрыт ответ на вопрос о приоритете настроек.