При работе с входящими электронными документами в 1С:Управление торговлей 11 пользователи часто сталкиваются с неудобством: система загружает приходные накладные с выключенным флагом «Цена включает НДС». Это происходит даже в тех случаях, когда в соглашении с поставщиком явно указана обратная настройка. В результате бухгалтерам и менеджерам приходится вручную заходить в каждый документ, менять признак и пересчитывать цены, что нередко приводит к «развалу» сумм из-за округлений.
В этой статье мы подробно разберем, почему стандартные настройки игнорируются, проанализируем программные способы решения проблемы (поможет автоматическое заполнение и выполнение обработчиков реквизитов) и выясним, как правильно автоматизировать этот процесс, чтобы избежать ручного труда.
Рассмотрим стандартную логику работы системы. Казалось бы, достаточно установить в Соглашении с поставщиком на вкладке «Условия закупок» признак Цена включает НДС, и все документы должны создаваться в соответствии с этим правилом. Однако при использовании 1С-ЭДО (Библиотеки электронного документооборота) ситуация иная.
Проанализируем механику загрузки: программа получает файл в формате XML (обычно это УПД), утвержденный ФНС — для этой задачи есть загрузка входящих XML-документов из ЭДО в 1С. По стандарту ФНС в электронном документе передаются Цена без НДС, Ставка НДС, Сумма НДС и Итоговая сумма. Чтобы минимизировать риск расхождений в копейках с данными поставщика, 1С при программном создании документа Приобретение товаров и услуг отдает приоритет структуре входящего файла. Поскольку формат XML ориентирован на расчет «от цены без НДС», система принудительно устанавливает этот режим в документе, игнорируя настройки формы и соглашения.
Если вам необходимо быстро внедрить исправление, можно воспользоваться механизмом ИзменениеИКонтроль для корректировки поведения формы документа. Рассмотрим пример кода, который принудительно перебирает строки табличной части Товары и пересчитывает Цена и Сумма в зависимости от установленного флага ЦенаВключаетНДС.
Разберем реализацию процедуры на сервере (если вам потребуется расширить состав хранимых данных, обратите внимание на дополнительные реквизиты табличных частей):
&ИзменениеИКонтроль("ЦенаВключаетНДСПриИзмененииСервер")
Процедура корПриход_ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения)
// Вставка: Пройдемся циклом по всем товарам и пересчитаем суммы вручную
Для Каждого СтрокаТовары Из Объект.Товары Цикл
Если Объект.ЦенаВключаетНДС Тогда
// Если НДС включен, основная сумма в ТЧ должна равняться сумме с НДС
СтрокаТовары.Сумма = СтрокаТовары.СуммаСНДС;
Иначе
// Если НДС не включен, вычитаем сумму налога
СтрокаТовары.Сумма = СтрокаТовары.СуммаСНДС - СтрокаТовары.СуммаНДС;
КонецЕсли;
// Пересчитываем цену за единицу
СтрокаТовары.Цена = ?(СтрокаТовары.Количество = 0, 0, СтрокаТовары.Сумма / СтрокаТовары.Количество);
КонецЦикла;
// Конец вставки
// Вызываем стандартные механизмы пересчета УТ для актуализации итогов
СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
// Используем штатный программный интерфейс для обработки табличной части
ОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
Этот метод позволяет «подхватить» изменение флага, даже если документ был заполнен автоматически. Однако помните, что внесение правок непосредственно в процедуры формы — это «костыль», который может потребовать обновления при выходе новых релизов конфигурации.
Более корректным способом считается использование расширения для перехвата момента создания документа еще до того, как он будет открыт пользователем. Проанализируем ситуацию: в библиотеке электронного документооборота (БЭД) (удобно через расширение для ведения ЭДО в 1С) существуют специализированные точки входа.
Нам необходимо обратить внимание на событие ПриСозданииДокументаПоДаннымЭДО. Реализация в расширении позволяет:
ЦенаВключаетНДС = Истина непосредственно в объекте документа.Это предотвращает лишние вызовы процедур при открытии формы и гарантирует, что данные в регистрах (например, себестоимость) будут формироваться единообразно.
Важно понимать, почему разработчики 1С по умолчанию оставляют флаг «Цена без НДС» для ЭДО. Рассмотрим на примере:
Поставщик отгрузил 1000 единиц товара по цене 100 руб. без НДС. Итого 100 000 руб. НДС (20%) — 20 000 руб. Всего — 120 000 руб.
Если мы принудительно включим флаг «Цена включает НДС», система рассчитает цену как 120 000 / 1000 = 120 руб. В данном примере все ровно. Но если сумма с НДС будет иметь дробную часть, которая при делении на количество даст длинный «хвост», то при обратном умножении мы можем получить итоговую сумму 119 999,99 или 120 000,01. Это создаст конфликт с юридически значимым документом поставщика.
Рекомендация: Если вы используете автоматический пересчет, всегда добавляйте проверку итоговой суммы по документу. Она должна строго совпадать с СуммаСНДС из входящего файла ЭДО. Если возникает расхождение, лучше оставить флаг в значении Ложь для конкретного документа.
В современных версиях программ на базе 1С:Предприятие 8.3 внедряются элементы «умного заполнения». Система запоминает действия пользователя. Если вы несколько раз вручную измените настройки заполнения для конкретного контрагента, программа может предложить сохранить эти параметры в «Настройках заполнения по данным поставщика».
Чтобы проверить это, выполните следующие шаги:
Подведем итог: автоматизация флага Цена включает НДС возможна через программную доработку расширением, но она требует осторожности из-за потенциальных ошибок округления. Для большинства торговых компаний оптимальным является использование штатного механизма формирования розничных цен на основании закупочных, где НДС можно «накручивать» автоматически, не меняя структуру входящего документа от поставщика.