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