После выхода обновлений для конфигурации 1С:Управление производственным предприятием (УПП), начиная с релиза 1.3.219.1, многие пользователи столкнулись с неприятной особенностью: при печати документа Счет-фактура выданный, сформированного на основании реализации, порядок номенклатурных позиций перестает соответствовать исходному документу. Вместо привычного списка, заведенного менеджерами, строки выходят в хаотичном или «перевернутом» порядке. Проанализируем ситуацию и разберем способы решения этой задачи.
Для начала разберем, почему так происходит. В последних релизах 1С:УПП разработчики проводили масштабную оптимизацию механизмов печати, связанную с поддержкой требований по прослеживаемости товаров и новыми правилами заполнения счетов-фактур (постановление №534). Основная логика формирования данных для печати была окончательно перенесена из модулей объектов в модули менеджеров документов.
Проанализируем ситуацию с технической стороны: при формировании печатной формы программа выполняет запрос к базе данных. В релизах 1.3.219.x и 1.3.220.x в текстах запросов, собирающих данные по табличным частям Товары и ГТД, в некоторых местах была утеряна конструкция УПОРЯДОЧИТЬ ПО. В системе 1С (и в СУБД в целом), если порядок сортировки не указан явно, платформа выдает строки так, как их «удобнее» прочитать оптимизатору базы данных. Чаще всего это происходит по физическому порядку записей или по внутреннему идентификатору ID, что и приводит к перемешиванию строк на листе бумаги.
Самый простой и правильный путь для пользователя — это установка актуального обновления. Фирма «1С» признала наличие данной ошибки в механизме формирования печатных форм. Исправление было включено в релиз 1.3.221.1 и выше. Разберем по шагам, что нужно сделать:
Если по каким-то причинам оперативное обновление конфигурации невозможно (например, база сильно доработана), мы можем исправить ошибку самостоятельно в конфигураторе. Нам нужно найти место, где формируется запрос для печати, и добавить принудительную сортировку.
Проанализируем модуль менеджера документа СчетФактураВыданный. Ищем функцию, отвечающую за сбор данных (например, ПечатьСчетовФактур или вспомогательные функции формирования временных таблиц товаров). Выясним, где именно происходит обращение к таблице Товары документа РеализацияТоваровУслуг.
В тексте запроса необходимо найти пакет, который формирует итоговую таблицу для вывода в макет. Нам нужно убедиться, что в нем присутствует НомерСтроки и по нему установлена сортировка. Пример исправления кода запроса:
|ВЫБРАТЬ
| ТЧ_Товары.НомерСтроки КАК НомерСтроки,
| ТЧ_Товары.Номенклатура,
| ...
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК ТЧ_Товары
|ГДЕ
| ТЧ_Товары.Ссылка = &СсылкаНаРеализацию
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки
Обратите внимание на сообщение 7 из обсуждения: использование УПОРЯДОЧИТЬ ПО ID, НомерСтроки может не дать нужного результата, если ID — это внутренний уникальный идентификатор строки, который не совпадает с визуальным порядком в табличной части. Для корректного отображения «как в документе» следует использовать только НомерСтроки.
Если вы не хотите менять типовой код конфигурации, чтобы не усложнять последующие обновления, оптимальным вариантом будет создание или использование внешней печатной формы (ВПФ). Разберем этот алгоритм:
ВнешняяОбработка и добавим в него необходимые функции для формирования печатной формы счета-фактуры.Сортировать("НомерСтроки"), если данные получаются в виде таблицы значений:
ТаблицаДляПечати = Запрос.Выполнить().Выгрузить();
ТаблицаДляПечати.Сортировать("НомерСтроки Возр");
Затем зарегистрируем обработку через меню Сервис — Дополнительные отчеты и обработки — Дополнительные внешние печатные формы. Теперь при нажатии кнопки «Печать» в документе можно будет выбрать исправленный вариант формы.
Посмотрим на ситуацию, когда в счете-фактуре строк меньше, чем в реализации. Это происходит из-за настройки «Объединять одинаковые позиции». Если эта опция включена, система группирует товары с одинаковым наименованием, ценой и ставкой НДС. В этом случае понятие «номер строки» становится размытым, так как несколько строк с разными номерами превращаются в одну.
Совет: Если для ваших покупателей критичен строгий порядок и соответствие каждой строке реализации, проверьте настройки учетной политики и убедитесь, что автоматическое объединение позиций не мешает логике сортировки. Также проанализируйте, не используются ли в документе товары с прослеживаемыми кодами (РНПТ) — в последних релизах УПП такие строки могут дробиться специально для указания разных номеров ГТД, что также влияет на итоговый вид печатной формы.