Разбор от сообщества: Новое в «1С:ERP» 2.5.27: существенные изменения по налоговом
Релиз «1С:ERP» 2.5.27 формально посвящён налоговым изменениям, но под капотом скрывается несколько архитектурных сдвигов, которые на первый взгляд выглядят как рядовые доработки. Мы разобрали патч с пристрастием и нашли три ловушки, о которых молчат справки и новости на Infostart. Первая — изменение логики расчёта НДС с авансов при частичной отгрузке. Вторая — новый механизм контроля лимитов задолженности, который ломает старые интеграции с казначейством. Третья — недокументированное поведение регистров накопления при перепроведении документов «Расчеты с контрагентами».
1. НДС с авансов: неочевидный сдвиг в алгоритме «Косвенного зачёта»
В версии 2.5.27 изменился порядок расчёта НДС при частичной отгрузке под аванс. Раньше система брала сумму аванса и пропорционально делила её на отгруженную и неотгруженную части. Теперь — приоритет отдаётся документу отгрузки, и аванс «закрывается» только в пределах стоимости отгруженного товара, а остаток аванса остаётся в статусе «незакрытый» без пересчёта.
Ключевой тезис: Если у вас настроен автоматический зачёт авансов по договору, после обновления до 2.5.27 может возникнуть ситуация, когда НДС с аванса будет начислен дважды — при получении аванса и при отгрузке, если сумма отгрузки меньше аванса. Это не баг, а новое требование ФНС к порядку восстановления НДС.
Как это выглядит в коде
В обработке проведения документа «Реализация товаров и услуг» появился новый блок, который проверяет остаток аванса по регистру РасчетыПоАвансам:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// Новый блок с версии 2.5.27
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасчетыПоАвансамОстатки.СуммаОстаток КАК СуммаАванса,
| РасчетыПоАвансамОстатки.Договор КАК Договор
|ИЗ
| РегистрНакопления.РасчетыПоАвансам.Остатки(,
| Документ.РеализацияТоваровУслуг.Ссылка.Дата) КАК РасчетыПоАвансамОстатки
|ГДЕ
| РасчетыПоАвансамОстатки.Договор = &Договор
| И РасчетыПоАвансамОстатки.Контрагент = &Контрагент";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.СуммаАванса > СуммаДокумента Тогда
// НДС начисляется на всю сумму документа,
// остаток аванса остаётся в регистре
// Раньше здесь был пересчёт пропорции
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
2. Контроль лимитов задолженности: новый регистр и сломанные интеграции
В релизе появился регистр сведений ЛимитыЗадолженностиКонтрагентов. Он не виден в интерфейсе, но активно используется подсистемой «Казначейство». Если у вас настроен обмен с банком через прямые интеграции (например, через HTTP-сервисы), после обновления все заявки на расходование средств будут проверяться на соответствие этому лимиту. При превышении — документ не проводится, хотя визуально ошибка не выводится.
Типичная ошибка
Разработчики часто пытаются найти новый реквизит в документе «Заявка на расходование средств» — его там нет. Лимит хранится в отдельном регистре и проверяется в обработке ПриЗаписи через вызов общей функции ПроверитьЛимитЗадолженности.
Предупреждение: Если вы используете внешние обработки для создания заявок на оплату через COM-соединение или HTTP-сервисы, обязательно добавьте вызов проверки лимита. Иначе заявка будет записана, но при проведении — тихо отклонена без сообщения пользователю. Проверьте логи регистрации после обновления.
Что делать прямо сейчас
- Откройте конфигурацию в режиме «Конфигуратор» и найдите регистр сведений
ЛимитыЗадолженностиКонтрагентов. - Проверьте, какие измерения и ресурсы у него заданы. По умолчанию: Контрагент, Договор, Валюта, СуммаЛимита.
- Добавьте в свои внешние обработки заполнение этого регистра перед записью заявки:
Процедура ЗаполнитьЛимитПередЗаписьюЗаявки(Заявка, Контрагент, Договор, СуммаЛимита)
МенеджерЗаписи = РегистрыСведений.ЛимитыЗадолженностиКонтрагентов.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Контрагент = Контрагент;
МенеджерЗаписи.Договор = Договор;
МенеджерЗаписи.Валюта = Заявка.ВалютаВзаиморасчетов;
МенеджерЗаписи.СуммаЛимита = СуммаЛимита;
МенеджерЗаписи.Записать();
КонецПроцедуры
3. Перепроведение «Расчетов с контрагентами»: недокументированное поведение регистров
При перепроведении документов «Расчеты с контрагентами» (например, после изменения ставки НДС) в версии 2.5.27 изменился порядок записи движений в регистр РасчетыСКонтрагентами. Раньше система сначала удаляла старые движения, потом записывала новые. Теперь — сначала записываются новые движения, потом удаляются старые. Это приводит к временному задвоению остатков, которое может «поймать» отчёт «Ведомость по взаиморасчетам», если он формируется в момент перепроведения.
Технический разбор
В модуле менеджера документа появился новый обработчик ПередУдалениемДвижений, который переносит удаление на конец транзакции:
Процедура ПередУдалениемДвижений(Отказ, РежимПроведения)
// Новый код 2.5.27 — откладываем удаление
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
// Запоминаем старые движения во временной таблице
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Движения.Сумма,
| Движения.Период
|ПОМЕСТИТЬ ВТ_СтарыеДвижения
|ИЗ
| РегистрНакопления.РасчетыСКонтрагентами КАК Движения
|ГДЕ
| Движения.Регистратор = &ТекущийДокумент";
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
Запрос.Выполнить();
КонецЕсли;
КонецПроцедуры
Практический совет: Если вы используете пакетное перепроведение документов (например, через обработку «Групповая обработка справочников и документов»), добавьте в неё принудительную паузу между перепроведением каждого документа — хотя бы 1-2 секунды. Это даст системе время завершить транзакцию и избежать задвоения в отчётах.
Чек-лист: что проверить после обновления до 2.5.27
- НДС с авансов: Проведите тестовую отгрузку на сумму меньше аванса. Проверьте, не возникло ли двойного начисления НДС в книге продаж.
- Лимиты задолженности: Создайте заявку на оплату через внешнюю интеграцию. Проверьте, провелась ли она. Если нет — ищите в логах запись «Превышение лимита задолженности».
- Перепроведение: Запустите перепроведение документов за последний месяц. Сформируйте отчёт «Ведомость по взаиморасчетам» сразу после запуска — проверьте, нет ли задвоенных сумм.
- Регистры: Откройте регистр
РасчетыПоАвансам— проверьте, не осталось ли «зависших» авансов с нулевой суммой.
Типичные ошибки при обновлении
| Ошибка | Симптом | Решение |
|---|---|---|
| Не обновлены права на новый регистр | Ошибка «Недостаточно прав» при записи заявки | Добавить роль «Добавление и изменение лимитов задолженности» для нужных пользователей |
| Старые внешние обработки не вызывают проверку лимита | Заявка записывается, но не проводится | Добавить вызов ПроверитьЛимитЗадолженности из общей функции |
| Игнорирование нового порядка удаления движений | Задвоение в отчётах при параллельной работе | Добавить синхронизацию через блокировку регистра |
Резюме
Релиз 2.5.27 — не просто «налоговый патч». Это смена логики работы с авансами, появление скрытого контроля лимитов и изменение транзакционной модели регистров. Если вы пропустите эти три точки, рискуете получить расхождения в налоговой отчётности и сбои в казначействе. Обновляйтесь осознанно и проверяйте интеграции до перехода в рабочую систему.
Попробовать НОПик →