При программном создании документов поступления в конфигурациях на базе 1С:Бухгалтерия предприятия 3.0 (включая специализированные поставки, такие как 1С:Предприниматель) разработчики часто сталкиваются с вопросом: в какие реквизиты объекта ДокументОбъект.ПоступлениеТоваровУслуг необходимо записать входящий номер и дату счета-фактуры? На форме документа эти поля присутствуют, однако при попытке найти их в структуре реквизитов документа в конфигураторе они отсутствуют.
Разберем архитектуру хранения этих данных в типовых решениях «1С:Предприятие 8.3» и рассмотрим несколько способов программной регистрации входящего счета-фактуры.
Проанализируем, как устроен механизм регистрации входящего НДС. В типовой конфигурации документ Поступление (акт, накладная) физически не содержит реквизитов для хранения номера, даты или ссылки на счет-фактуру. Связь между документами строится снизу вверх со стороны документа СчетФактураПолученный:
ДокументыОснования документа СчетФактураПолученный (в реквизите ДокументОснование).СчетФактураПолученный и связать его с уже записанным документом поступления.Рассмотрим наиболее лаконичный вариант, применяемый в коде типовой конфигурации. В общем модуле УчетНДСВызовСервера реализована экспортная функция, позволяющая создать и провести счет-фактуру одной строкой кода.
Разберем по шагам последовательность действий:
Посмотрим на пример кода:
// 1. Записываем и проводим созданный документ поступления
ДокументПоступлениеОбъект.Записать(РежимЗаписиДокумента.Проведение);
СсылкаНаПТУ = ДокументПоступлениеОбъект.Ссылка;
// 2. Определяем входящие реквизиты поставщика
НомерВходящегоСФ = "СФ-12345";
ДатаВходящегоСФ = ТекущаяДата();
// 3. Вызываем типовой метод создания документа
УчетНДСВызовСервера.СоздатьСчетФактуруПолученныйНаОсновании(
СсылкаНаПТУ,
НомерВходящегоСФ,
ДатаВходящегоСФ
);
Данная функция автоматически заполняет шапку, табличные части и выполняет проведение документа с формированием всех необходимых движений по регистрам учета НДС.
Если требуется полный контроль над созданием объекта, установкой флагов (например, отражения вычета НДС) или вызов выполняется в контексте фонового задания, разберем универсальный объектный способ через метод Заполнить().
Посмотрим на пример реализации:
// 1. Фиксируем проведение документа поступления
ДокументПоступлениеОбъект.Записать(РежимЗаписиДокумента.Проведение);
СсылкаНаПоступление = ДокументПоступлениеОбъект.Ссылка;
// 2. Создаем новый объект счета-фактуры
НовыйСФ = Документы.СчетФактураПолученный.СоздатьДокумент();
// 3. Заполняем реквизиты по документу-основанию
// Метод вызывает типовую процедуру ОбработкаЗаполнения в модуле объекта
НовыйСФ.Заполнить(СсылкаНаПоступление);
// 4. Указываем входящие номер и дату от поставщика
НовыйСФ.НомерВходящегоДокумента = "СФ-12345";
НовыйСФ.ДатаВходящегоДокумента = ТекущаяДата();
// 5. Настраиваем признак вычета НДС в книге покупок
НовыйСФ.ОтразитьВычетНДСВКнигеПокупок = Истина;
// 6. Проводим документ
НовыйСФ.Записать(РежимЗаписиДокумента.Проведение);
В сценариях сложного обмена данными (например, при загрузке через правила конвертации данных или из внешних систем), когда метод Заполнить() недоступен или неприменим, заполнение выполняется вручную.
Рассмотрим структуру ключевых реквизитов, обязательных для заполнения:
ВидСчетаФактуры — устанавливаем значение Перечисления.ВидыСчетовФактурПолученных.НаПоступление.Организация, Контрагент, ДоговорКонтрагента — копируются из документа поступления.НомерВходящегоДокумента и ДатаВходящегоДокумента — номер и дата счета-фактуры поставщика.ДокументыОснования — добавляем строку и заполняем реквизит ДокументОснование ссылкой на документ поступления.Главное — заполняются суммы взаиморасчетов, ставки и суммы НДС.Проанализируем ключевые особенности, которые необходимо учитывать при разработке:
Ссылка), а не объектную переменную.Поступление (акт, накладная). Документ СчетФактураПолученный при проведении формирует записи в регистре накопления НДС Покупки (книга покупок) и проводку вычета (Дт 68.02 — Кт 19) только при установленном флаге ОтразитьВычетНДСВКнигеПокупок = Истина.Контрагент + НомерВходящегоДокумента + ДатаВходящегоДокумента. Перед созданием нового документа рекомендуется программно проверять базу на наличие уже зарегистрированного счета-фактуры от данного контрагента с такими же реквизитами.