Почему при подборе товаров в 1С:УНФ 3.0.12.237 подставляется неверная ставка НДС (20% вместо корректной), и как это исправить?

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

В релизах конфигурации «1С:Управление нашей фирмой» (УНФ) версии 3.0.12.237 (и частично в 3.0.12.226) многие пользователи столкнулись с неприятной ошибкой в работе документов продаж. Суть проблемы заключается в том, что при добавлении товара вручную ставка НДС определяется корректно (например, 22% или другая специфическая ставка из карточки), а при использовании механизма «Подбор» программа игнорирует настройки и принудительно устанавливает 20%.

В этой статье мы подробно разберем, почему возникает эта ошибка, какие механизмы платформы задействованы, и рассмотрим способы решения — от установки официального патча до программного исправления ситуации через расширения конфигурации.

Суть проблемы и диагностика

Прежде чем приступать к исправлению, давайте проанализируем симптомы. Ошибка проявляется следующим образом:

  1. Вы открываете документ (например, «Заказ покупателя» или «Расходная накладная»).
  2. Если вы добавляете строку в табличную часть нажатием кнопки «Добавить» и выбираете номенклатуру вручную, система корректно считывает ставку НДС из карточки номенклатуры (например, 22%).
  3. Если вы нажимаете кнопку «Подбор», выбираете тот же самый товар в корзину и переносите его в документ, в колонке «% НДС» появляется значение 20%, игнорируя настройки номенклатуры.

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

Разбираемся в технической части: Почему это происходит?

Чтобы понять, как исправить ошибку программно (если патч недоступен), нам нужно углубиться в логику работы конфигурации. Рассмотрим ключевые отличия в обработке событий.

1. Прямое добавление (работает корректно)

Когда вы выбираете товар в строке табличной части, срабатывает событие ПриИзменении поля «Номенклатура». В этот момент система обращается к серверному методу, который получает все данные о товаре (цену, единицу измерения, ставку НДС) непосредственно из базы данных, актуальные на текущий момент, и заполняет строку.

2. Добавление через Подбор (работает некорректно)

Механизм подбора работает иначе. Форма подбора накапливает данные во временной структуре (часто это таблица значений или массив структур). Чтобы лучше понять этот процесс, можно изучить, как работает кэш обработок подбора и как данные передаются из корзины в документ.

В версии 3.0.12.237 в процедуре обработки результатов подбора (обычно это ОбработатьДобавлениеСтрокиЗапасов или аналогичная в общем модуле или модуле формы) допущена логическая ошибка.

Параметр, отвечающий за пересчет НДС, либо не передается, либо установлен в значение Ложь. В результате система берет ставку НДС, которая была зафиксирована в форме подбора (а там она может определяться по умолчанию как 20% или не обновляться динамически), и просто копирует ее в документ без сверки с карточкой номенклатуры и настройками договора.

Способ 1: Установка официального патча (Рекомендуемый)

Разработчики 1С признали наличие данной ошибки и выпустили специальное исправление. Для решения проблемы необходимо установить патч EF_00_00812245.

Как установить патч:

  1. Перейдите в раздел Администрирование -> Обслуживание.
  2. Раскройте группу Обновление программы.
  3. Убедитесь, что у вас включена опция загрузки исправлений (патчей).
  4. Запустите поиск обновлений. Система должна найти патч EF_00_00812245.
  5. Установите его и перезапустите сеанс.

Этот патч корректирует общий модуль, отвечающий за обработку подбора, заставляя систему учитывать настройки налогообложения организации и индивидуальные ставки товаров при переносе из корзины.

Способ 2: Программное исправление через Расширение

Если по каким-то причинам вы не можете установить патч (например, у вас сильно доработанная конфигурация), проблему можно решить через расширение.

Нам необходимо перехватить момент добавления строки из подбора и принудительно вызвать пересчет НДС.

Пример реализации в расширении

Мы будем использовать расширение для формы документа. Наша задача — после стандартного добавления строк пробежаться по ним и перезаполнить ставку НДС, если она отличается от эталонной.


&НаКлиенте
Процедура Расш_ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) Вместо ОбработкаВыбора
    
    // Сначала даем отработать типовому механизму
    ПродолжитьВызов(ВыбранноеЗначение, ИсточникВыбора);
    
    // Проверяем, что это результат подбора
    Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") 
       ИЛИ ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда
        
        // Запускаем пересчет НДС для строк документа
        ПересчитатьНДСВДокументе();
        
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Процедура ПересчитатьНДСВДокументе()
    
    // Получаем объект документа для чтения настроек
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    
    Для Каждого СтрокаТЧ Из Объект.Запасы Цикл
        
        // Получаем актуальную ставку из карточки номенклатуры
        ДанныеНоменклатуры = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтрокаТЧ.Номенклатура, "СтавкаНДС");
        РеальнаяСтавка = ДанныеНоменклатуры.СтавкаНДС;
        
        Если СтрокаТЧ.СтавкаНДС <> РеальнаяСтавка Тогда
             СтрокаТЧ.СтавкаНДС = РеальнаяСтавка;
             // Здесь также может потребоваться вызов типовых процедур пересчета сумм
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры

Также вы можете реализовать дополнительный контроль, используя подходы из расширения для проверки заполнения накладных и заказов, чтобы система выдавала предупреждение, если ставка НДС в документе не соответствует основной ставке товара.

Дополнительные настройки, влияющие на НДС

Если патч установлен, но проблема сохраняется, проверьте следующие настройки:

  1. Настройки Договора контрагента.

    В карточке договора может быть явно указан вид цен или тип налогообложения, который диктует ставку НДС.

  2. Настройки Склада (Структурной единицы).

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

  3. Справочник «Ставки НДС».

    Проверьте элементы справочника в разделе Компания -> Налоги -> Ставки НДС. Убедитесь, что числовое значение ставки заполнено корректно.

Резюме

Проблема с подстановкой 20% НДС вместо 22% при подборе в УНФ 3.0.12.237 является признанной ошибкой релиза.

← На главную