При формировании универсального передаточного документа (УПД) в типовых конфигурациях 1С («1С:Бухгалтерия предприятия», «1С:Управление торговлей», «1С:ERP») пользователи нередко сталкиваются с ситуацией: если табличная часть содержит от 5 до 15 строк, первая страница распечатывается наполовину пустой, а почти вся таблица вместе с подвалом переносится на вторую страницу. Пользователи и руководство часто просят убрать этот нерациональный разрыв, чтобы первая страница заполнялась полностью, а на второй оставался лишь небольшой остаток строк с подписями. Разберем, чем обусловлено такое поведение программы, законно ли вносить изменения в печатную форму УПД и как технически решить эту задачу.
Поведение печатной формы обусловлено двумя факторами — особенностями программного кода 1С и юридическими требованиями к оформлению первичных документов.
В коде типовых конфигураций перед выводом очередной строки табличной части выполняется проверка свободного пространства на странице с помощью метода ТабличныйДокумент.ПроверитьВывод(). Механизм работает по следующему принципу:
ПроверитьВывод() рассчитывает физические границы листа на основании настроек принтера по умолчанию в операционной системе. Разные драйверы, заданные непечатаемые поля или работа на сервере под управлением Linux без настроенного принтера могут искажать расчет, заставляя платформу делать разрыв еще раньше.Проанализируем правовую сторону вопроса. Опасения бухгалтеров связаны со статусом УПД как документа, служащего основанием для вычета по НДС.
Согласно п. 2 ст. 169 Налогового кодекса РФ, ошибки в счетах-фактурах и УПД, не препятствующие налоговым органам идентифицировать продавца, покупателя, наименование товаров (работ, услуг), их стоимость, а также ставку и сумму налога, не являются основанием для отказа в принятии НДС к вычету. Законодательство не регламентирует количество строк, которое должно выводиться на одной странице, и не запрещает плотное заполнение первого листа.
УПД со статусом «1» объединяет в себе счет-фактуру и первичный учетный документ. С 1 января 2013 года (согласно Федеральному закону № 402-ФЗ «О бухгалтерском учете») формы первичных учетных документов не являются строго унифицированными, а сама форма УПД носит рекомендательный характер. Добавлять дополнительные реквизиты или оптимизировать перенос строк допустимо, главное — сохранять все обязательные реквизиты счета-фактуры и первичного документа.
Важное юридическое правило: в арбитражной практике критически оцениваются документы, в которых на последнем листе стоят только подписи и печати сторон без какой-либо содержательной части. Такой лист легко признать сфальсифицированным или замененным. Поэтому перед подвалом на последнем листе всегда должна оставаться хотя бы одна строка товарной позиции либо итоговая строка по документу. Полностью переносить все строки на первый лист, оставляя подписи в одиночестве на втором, категорически нельзя.
Если требуется уместить документ на одной странице или уменьшить пустое пространство без доработки конфигурации, выполним следующие шаги:
Главное — Параметры страницы (или значок шестеренки) и уменьшим верхнее и нижнее поля до 5–6 мм. За счет этого полезная площадь листа увеличится, и во многих случаях документ из 5–8 строк умещается целиком на одной странице вместе с подвалом.Таблица — Вид — Отображать заголовки. Найдем строку, над которой отображается пунктирная линия разрыва страницы, выделим ее и выполним команду Таблица — Настройки печати — Удалить разрыв страницы. Если после этого шапка таблицы продублировалась на втором листе вручную, выделим лишние строки и удалим их через стандартное контекстное меню.Если заказчик требует системного решения во внешней печатной форме или расширении конфигурации, переработаем алгоритм вывода табличной части. Основная задача — проверять вместимость строки без обязательного подтягивания всего подвала, пока мы не дойдем до конца таблицы.
Разберем пример доработки цикла вывода строк номенклатуры:
КоличествоСтрок = ТаблицаТоваров.Количество();
НомерСтроки = 0;
Для Каждого СтрТовар Из ТаблицаТоваров Цикл
НомерСтроки = НомерСтроки + 1;
ОбластьСтрока.Параметры.Заполнить(СтрТовар);
// Если это последняя строка, проверяем ее вывод вместе с подвалом
Если НомерСтроки = КоличествоСтрок Тогда
МассивПроверки = Новый Массив;
МассивПроверки.Добавить(ОбластьСтрока);
МассивПроверки.Добавить(ОбластьИтоги);
МассивПроверки.Добавить(ОбластьПодвал);
Если НЕ ТабличныйДокумент.ПроверитьВывод(МассивПроверки) Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
Иначе
// Для обычных строк проверяем только саму строку
Если НЕ ТабличныйДокумент.ПроверитьВывод(ОбластьСтрока) Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
// Выводим итоги и подвал
ТабличныйДокумент.Вывести(ОбластьИтоги);
ТабличныйДокумент.Вывести(ОбластьПодвал);
Для корректного автоматического повторения шапки таблицы при естественном разрыве страниц настроим свойство ПовторятьПриПечатиСтроки у табличного документа, указав диапазон строк шапки, вместо ручной вставки области шапки в коде:
ТабличныйДокумент.ПовторятьПриПечатиСтроки = ТабличныйДокумент.Область("R5:R6");
При таком подходе первая страница документа будет максимально заполнена номенклатурой. Если на первой странице остается место для последней строки, но не влезает подвал, на вторую страницу будет аккуратно перенесена последняя позиция вместе с итоговой строкой и блоком подписей, что полностью соответствует требованиям проверяющих органов и исключает пустые разрывы.