При ведении учета в типовых конфигурациях для Казахстана пользователи и разработчики часто сталкиваются с ситуацией: если исходящий электронный счет-фактура (ЭСФ) был создан и отправлен непосредственно в личном кабинете веб-портала ИС ЭСФ, то при выполнении стандартного обмена в 1С этот документ не появляется в журнале «ЭСФ выданные». При этом входящие документы и обновления статусов уже имеющихся в базе счетов-фактур приходят без сбоев.
Разберем архитектурные причины такого поведения типовых конфигураций, проанализируем параметры API ИС ЭСФ для получения изменений и рассмотрим способы загрузки недостающих документов в учетную систему.
Проанализируем базовый принцип, заложенный разработчиками типовых конфигураций («1С:Бухгалтерия для Казахстана», «1С:ERP», «1С:Комплексная автоматизация»). В системе реализована концепция единой точки ввода:
РеализацияТМЗиУслуг формирует учетный документ СчетФактураВыданный, на основании которого создается ЭСФ со статусом «К передаче».INBOUND) и только обновление статусов уже зарегистрированных в базе исходящих документов.Если бы 1С автоматически создавала документ «ЭСФ выданный» при обнаружении любого исходящего документа на портале, в системе возникали бы «разорванные» цепочки учета: электронный документ присутствовал бы в базе, но не имел бы под собой проведенных документов реализации и проводок по бухгалтерскому и налоговому учету.
Выясним, как работает веб-сервис синхронизации ИС ЭСФ. Для получения изменений со стороны учетной системы отправляется SOAP-запрос queryUpdatesRequest:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:esf="esf">
<soapenv:Header/>
<soapenv:Body>
<esf:queryUpdatesRequest>
<sessionId>[sessionId]</sessionId>
<lastEventDate>[lastEventDate]</lastEventDate>
<lastInvoiceId>[lastInvoiceId]</lastInvoiceId>
<direction>[direction]</direction>
<limit>[limit]</limit>
<fullInfoOnStatusChange>true</fullInfoOnStatusChange>
</esf:queryUpdatesRequest>
</soapenv:Body>
</soapenv:Envelope>
Рассмотрим назначение ключевых параметров этого запроса подробнее:
lastEventDate и lastInvoiceId — пара параметров, задающая точку отсчета синхронизации. Портал возвращает события, произошедшие строго после указанного момента. Если необходимо восстановить данные с произвольной даты (например, при запуске новой информационной базы), в первом запросе передается нужная начальная дата в lastEventDate, а lastInvoiceId устанавливается равным 0.direction — направление выборки документов. Параметр может принимать значения для фильтрации входящего или исходящего потока, либо запрашивать все потоки сразу.limit — ограничение на количество записей в одном ответе (пагинация). Если изменений за период больше установленного лимита, требуется организовать циклический опрос, подставляя в каждый следующий запрос значения lastEventDate и lastInvoiceId из последнего полученного элемента.fullInfoOnStatusChange — управление полнотой возвращаемых данных. По умолчанию при изменении статуса документа портал возвращает служебную информацию без самого тела (бланка) ЭСФ, так как структура подписанного документа неизменна. Установка значения true принудительно заставляет веб-сервис возвращать полный объект InvoiceInfo вместе с телом счета-фактуры.Если требуется разово или периодически перенести исходящие документы, созданные непосредственно на портале, рассмотрим штатный способ через обмен файлами:
Если перед нами стоит задача полной автоматизации или первичного наполнения новой базы всеми документами с портала, проанализируем необходимые шаги по модификации алгоритмов обмена в 1С:
lastInvoiceId = 0, lastEventDate = ДатаНачала).queryUpdates до тех пор, пока сервер возвращает непустой список документов, передавая в каждую следующую итерацию идентификаторы из последней строки предыдущего пакета.fullInfoOnStatusChange = true), инициализируем создание нового документа ЭСФ (выданный) и заполняем его реквизиты.Важное ограничение: Загрузка исходящего ЭСФ в базу (как через XML, так и через API) лишь регистрирует сам факт наличия электронного счета-фактуры. Она не формирует автоматически первичные учетные документы РеализацияТМЗиУслуг и СчетФактураВыданный. Для полноценного восстановления бухгалтерского учета потребуется сопоставить номенклатуру, контрагентов и договоры, после чего создать учетные документы-основания вручную или с помощью специализированных обработок сопоставления.