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