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