ІНСТРУКЦІЯ
для розробників програмного забезпечення звітування в електронній формі
з використання системи подання звітності до Держстату в електронному вигляді з використанням WEB-сервісу обміну документами та квитанціями
Призначення
Система «WEB-сервіс обміну документами та квитанціями в електронній формі» (далі - Система) призначена для подання звітності та отримання квитанцій (далі - Документи) до системи «Приймальний шлюз системи електронної звітності Держстату (далі - Приймальний шлюз Держстату) по прямому Internet-з’єднанню за протоколом SOAP (Simple Object Access Protocol). Система транспортує Документи, завірені кваліфікованим електронним підписом (далі - КЕП), в зашифрованому вигляді.
Для криптографічних перетворень використовуються сертифіковані засоби КЕП, що відповідають законодавству України. Такі засоби наразі використовуються для підписання і шифрування електронних документів, що подаються до Державної податкової служби України.
Функції системи
- Транспортування звітності від респондентів до приймального шлюзу Держстату;
- Транспортування квитанцій від Приймального шлюзу Держстату до респондентів.
Схема функціонування системи

Архітектура системи
До складу системи входять:
- WEB-сервіс обміну документами та квитанціями, який працює під управлінням Microsoft Internet Information Services і здійснює обмін з клієнтами.
- Приймальний шлюз Держстату.
- Клієнтське програмне забезпечення для передачі звітності за протоколом SOAP.
- Складова частина АРМ підготовки та обробки звітності, що здійснює взаємодію з WEB-сервісом обміну документами та квитанціями.
Протокол обміну
Обмін здійснюється за протоколом SOAP.
Протокол SOAP забезпечує обмін інформацією з сервером незалежно від платформи клієнта.
Адреса сервера: http://directzvit.ukrstat.gov.ua/websrv/gate.asmx
Детальний опис протоколу наведений у прикладі, розміщеному за вищезазначеним посиланням.
Вимоги до формату Документів
Всі Документи, що передаються до WEB-сервісу обміну документами та квитанціями, мають бути створеними відповідно до наказу Держкомстату від 12.01.2011 №3 «Про затвердження Порядку подання електронної звітності до органів державної статистики».
Порядок обміну
- Клієнт SOAP передає Документи до WEB-сервісу обміну документами та квитанціями викликом Send.
- Клієнт SOAP перевіряє наявність квитанцій викликом GetMessages або GetMessagesEx.
- Клієнт SOAP отримує квитанції викликом Receive або ReceiveAll.
- Після успішної обробки, Клієнт SOAP вилучає оброблені квитанції викликом Delete. У виклику Delete передається перелік кодів документів, одержаних викликом GetMessages або GetMessagesEx, і підписаних КЕП респондента.
Функції і структури обміну
Функції і структури обміну наведені в Додатку 1 і Додатку 2 до цього документу.
Додаток 1
Опис методів, які використовуються при обміні Документами
Функції обміну
-
Відправити документ на шлюз
ProcessResult Send( string fileName, string senderEMail, byte[] data );
fileName – ім'я файлу документа;
senderEMail – адреса електронної пошти відправника документа на яку буде відправлено відповіді, якщо за певний час користувач їх не вилучив викликом методу Delete;
data - зміст документа в форматі електронного конверта шлюзу.
-
Отримати список кодів повідомлень для одержувача
ProcessResult GetMessages( byte[] signedEDRPOU, out string[] messagesList );
signedEDRPOU – ЄДРПОУ/ДРФО одержувача;
messagesList – перелік кодів повідомлень, у вигляді тексту, кожен код з нового рядку. -
Отримати список кодів повідомлень для одержувача з визначенням адреси електронної пошти
ProcessResult GetMessagesEx( byte[] signedEDRPOU, string senderEmail, out string[] messagesList );
signedEDRPOU – ЄДРПОУ/ДРФО одержувача;
senderEmail - адреса електронної пошти відправника документа (така сама як у виклику Send);
messagesList – перелік кодів повідомлень, у вигляді тексту, кожен код з нового рядку. -
Отримати повідомлення
ProcessResult Receive( byte[] signedMsgId, out string fileName, out byte[] messageData );
signedMsgId – рядок з кодом повідомлення;
fileName – ім'я файлу повідомлення;
messageData – зміст повідомлення в форматі електронного конверта шлюзу.
-
Отримати всі повідомлення
ProcessResult ReceiveAll( byte[] signedEmail, byte needDelete, out Message[] messages, out byte complete );
signedEmail – адреса електронної пошти відправника документа (така сама як у виклику Send), підписана КЕП (блок XXX_SIGN);
needDelete – ознака необхідності вилучення повідомлень (0/1);
messages – повідомлення;
complete – ознака відсутності на час виклику повідомлень, що не повернуті користувачу.
-
Вилучити повідомлення
ProcessResult Delete( byte[] signedMsgId );
signedMsgId – перелік кодів повідомлень, у вигляді тексту, кожен код з нового рядку, підписаний КЕП (блок XXX_SIGN).
Додаток 2
Коди помилок
GATE_OK (0) - Успішно
GATE_SEND_FAILED (1) - Помилка збереження вхідного повідомлення
GATE_EMPTY_FILENAME (2) - Не визначено ім'я файлу
GATE_EMPTY_MESSAGE (3) - Блок документу не визначено
GATE_FILENAME_TOOLONG (4) - Некоректне ім'я файлу
GATE_FILENAME_INVALID (5) - Недопустимі символи в імені файлу
GATE_PARSESIGN_FAILED (6) - Помилка перевірки підпису
GATE_DB_INTERNAL (7) - Помилка роботи з базою повідомлень
GATE_MSGID_INVALID (8) - Некоректний код повідомлення
GATE_MSGID_ABSENT (9) - Відсутнє запитане повідомлення
GATE_EMPTY_EMAIL (10) - Не визначено адресу електронної пошти
GATE_TEMPORARY_UNAVAIL (11) - Сервіс тимчасово недоступний
GATE_INVALID_PARAMS (12) - Некоректні параметри