За январские праздники начал разработку/прототипирование сайта для консультаций и обучения по Таро картам .
Карты Таро – уникальный эзотерический инструмент, с помощью которого таролог погружается в информационный поток и формулирует предсказание на основе посыла карт.
Колода Райдера Уэйта состоит из 78 карт: 22 аркана – старшие и 56 – младшие. Каждая карта обладает своим уникальным названием. В том или ином сочетании посыл каждой может быть усилен или нивелирован. В отличие от высших арканов, младшие делятся на 4 масти, на каждой из которых есть либо числовое обозначение, либо портретное. В зависимости от того, какое количество карт той или иной масти или старшинства выпало в раскладе, предсказание может меняться.
Функционал сайта для консультаций и обучения по Таро картам следующий:
можно добавлять свои курсы
регистрироваться и в перспективе оплачивать услуги
раскладывать онлайн расклады
записываться на курсы
читать материалы по Арканам (Старшим и младшим)
редактировать информацию по Арканам
у каждого зарегистрированного пользователя доступен личный кабинет с доступом к определенному курсу и тд
редактировать мета теги страниц/ настройки сайта/пользователей и тд
Язык разработки Python, Mysql — база данных
Сайт/платформу можно купить, базовая стоимость 30.000 рублей
andrey@businessarchitecture.ru, телефон 89309468161
def main():
link = «https://coinmarketcap.com/all/views/all/»
links = get_urls(get_html(link))
for lin in links:
data = get_price(lin)
print (data[‘name’], data[‘cast’])
def get_price(lin):
data = requests.get(lin)
soup = BeautifulSoup(data.text,’lxml’)
name = soup.find(‘h2’).text.strip()
cast = soup.find(‘div’, class_=»priceValue»).text.strip()
data = {«name»: name, «cast»: cast}
return data
def get_html(url):
r = requests.get(url)
return r.text
def get_urls(html):
links = []
soup = BeautifulSoup(html,’lxml’)
tds = soup.find(‘tbody’).find_all(‘div’,class_=’cmc-table__column-name—narrow-layout’)
for td in tds:
a = td.find(‘a’).get(‘href’)
links.append(‘https://coinmarketcap.com’+a)
return links
Создание новой заявки-нового объекта и создание для данного объекта акта выполненных строительных работ, печать акта выполненных строительных работ и предоставление его клиенту. Список работ грузится на сайт в Excel формате, дополнительные работы инженер может указать или переименовать уже существующие работы, новая заявка сохраняется в базу данных и инженер/клиент может иметь к ней постоянный доступ.
Проект готов на 90 процентов
Есть возможность предоставить (продать) полностью исходный код или выделить ежемесячный доступ на компанию/работника
Бек: Python, Flask, Mysql база данных, SQLAchemy
Фронт: Html, Javascript
Batch является языком программирования, используется для создания файлов сценарий которые можно выполнять на операционной системе Windows, обычно эти файлы имею окончание *.bat или *.cmd. При выполнении они открывают окно «Command Prompt», обычно это окно имеет черный фон, белый шрифт.
Файлы batch (*.bat, *.cmd) называются файлами сценарий (script file), они могут содержать команды вмешивающиеся в операционную систему.
@echo off
SetLocal EnableDelayedExpansion
set now=%DATE: =0% %TIME: =0%
set d=%date:~0,2%
set m=%date:~3,2%
set y=%date:~6,4%
rem ~0,2% для времени меньше 10 часов вместо ведущего нуля выводит пробел
if %d:~0,1%==0 set d=%d:~1%
if %m:~0,1%==0 set m=%m:~1%
set /a feb=y%%4
if %feb%==0 (set feb=29) else (set feb=28)
rem самописная функция для нахождения предыдущего дня
set /a tok=m-1
if %tok%==0 set tok=12
for /f «tokens=%tok%» %%i in («31 %feb% 31 30 31 30 31 31 30 31 30 31») do (
set /a d-=1
if !d!==0 (
set d=%%i
set m=%tok%
if !m!==12 set /a y-=1
)
)
set d=0%d%
set m=0%m%
set yesterday=%y%_%m:~-2%_%d:~-2%
set yesterdaylog=%d:~-2%_%m:~-2%_%y%
echo «delete and arhiving for yesterday = » %yesterday%
echo «delete and arhiving path log for yesterday = » %yesterdaylog%
rem считаем и удаляем каталог с бакапом созданный неделю назад
set T_Date=%date%
IF %T_DATE:~0,1%==0 (
set /A T_DAY=%T_DATE:~1,1%) else (
set /A T_DAY=%T_DATE:~0,2%)
IF %T_DATE:~3,1%==0 (
set /A T_MONTH=%T_DATE:~4,1%) else (
set /A T_MONTH=%T_DATE:~3,2%)
set /A T_YEAR=%T_DATE:~6,4%
rem за сколько дней удалять бакап (до 28 дней, т.к. скрипт, при «отрицательном» дне всегда делает — 1 месяц)
rem ************************
set back_day=28
rem ************************
set /A T_DAY=%T_DAY%-%back_day%
IF %T_DAY% LEQ 0 SET /A T_MONTH=%T_MONTH%-1
IF %T_MONTH%== 0 SET /A T_YEAR=%T_YEAR%-1
IF %T_MONTH%== 0 SET /A T_MONTH=12
IF %T_MONTH%==1 Set /A DIM=31
IF %T_MONTH%==2 Set /A DIM=28
IF %T_MONTH%==3 Set /A DIM=31
IF %T_MONTH%==4 Set /A DIM=30
IF %T_MONTH%==5 Set /A DIM=31
IF %T_MONTH%==6 Set /A DIM=30
IF %T_MONTH%==7 Set /A DIM=31
IF %T_MONTH%==8 Set /A DIM=31
IF %T_MONTH%==9 Set /A DIM=30
IF %T_MONTH%==10 Set /A DIM=31
IF %T_MONTH%==11 Set /A DIM=30
IF %T_MONTH%==12 Set /A DIM=31
IF %T_DAY% LEQ 0 SET /A T_DAY=%T_DAY%+%DIM%
IF %T_DAY% LSS 10 SET T_DAY=0%T_DAY%
IF %T_MONTH% LSS 10 SET T_MONTH=0%T_MONTH%
set DateArchive=%T_YEAR%_%T_MONTH%_%T_DAY%
rem Устанавливаем пути рабочей директории и директории для хранения архивов ConnectUPSH
set WorkDirConnectUPSH=»C:\SBBOL_20180216\ConnectUPSH»
set LogDirConnectUPSH=»C:\SBBOL_20180216\ARCHIVE\log_ConnectUPSH»
rem Устанавливаем пути рабочей директории и директории для хранения архивов DataToReturn
set WorkDirDataToReturn=»C:\SBBOL_20180216\dataToReturn»
set LogDirDataToReturn=»C:\SBBOL_20180216\ARCHIVE\log_DataToReturn»
rem Устанавливаем пути рабочей директории и директории для хранения архивов Exceptions
set WorkDirExceptions=»C:\SBBOL_20180216\Exceptions»
set LogDirExceptions=»C:\SBBOL_20180216\ARCHIVE\log_Exceptions»
rem Устанавливаем пути рабочей директории и директории для хранения архивов IncomingData
set WorkDirIncomingData=»C:\SBBOL_20180216\incomingData»
set LogDirIncomingData=»C\ARCHIVE\log_IncomingData»
rem Устанавливаем пути рабочей директории и директории для хранения архивов SendedToSbbol
set WorkDirSendedToSbbol=»C:\SBBOL_20180216\SendedToSbbol»
set LogDirSendedToSbbol=»C:\SBBOL_20180216\ARCHIVE\log_SendedToSbbol»
rem Устанавливаем пути рабочей директории и директории для хранения архивов log
set WorkDirlog=»C:\SBBOL_20180216\log»
set LogDirlog=»C:\SBBOL_20180216\ARCHIVE\Log»
if exist «%WorkDirConnectUPSH%\connectUPSH_%yesterday%.txt» «C:\Program Files\7-Zip\7z.exe» a -ssw -mx9 -r0 %LogDirConnectUPSH%\connectUPSH_%yesterday% %WorkDirConnectUPSH%\connectUPSH_%yesterday%.txt
if exist «%WorkDirConnectUPSH%\connectUPSH_%yesterday%.txt» del %WorkDirConnectUPSH%\connectUPSH_%yesterday%.txt
if exist «%WorkDirDataToReturn%\dataToReturn_%yesterday%.txt» «C:\Program Files\7-Zip\7z.exe» a -ssw -mx9 -r0 %LogDirDataToReturn%\dataToReturn_%yesterday% %WorkDirDataToReturn%\dataToReturn_%yesterday%.txt)
if exist «%WorkDirDataToReturn%\dataToReturn_%yesterday%.txt» del %WorkDirDataToReturn%\dataToReturn_%yesterday%.txt
if exist «%WorkDirExceptions%\error_%yesterday%.txt» «C:\Program Files\7-Zip\7z.exe» a -ssw -mx9 -r0 %LogDirExceptions%\error_%yesterday% %WorkDirExceptions%\error_%yesterday%.txt
if exist «%WorkDirExceptions%\error_%yesterday%.txt» %WorkDirExceptions%\error_%yesterday%.txt
if exist «%WorkDirIncomingData%\incommingData_%yesterday%.txt» «C:\Program Files\7-Zip\7z.exe» a -ssw -mx9 -r0 %LogDirIncomingData%\incommingData_%yesterday% %WorkDirIncomingData%\incommingData_%yesterday%.txt
if exist «%WorkDirIncomingData%\incommingData_%yesterday%.txt» del %WorkDirIncomingData%\incommingData_%yesterday%.txt
if exist «%WorkDirSendedToSbbol%\SendedToSbbol_%yesterday%.txt» «C:\Program Files\7-Zip\7z.exe» a -ssw -mx9 -r0 %LogDirSendedToSbbol%\SendedToSbbol_%yesterday% %WorkDirSendedToSbbol%\SendedToSbbol_%yesterday%.txt
if exist «%WorkDirSendedToSbbol%\SendedToSbbol_%yesterday%.txt» %WorkDirSendedToSbbol%\SendedToSbbol_%yesterday%.txt
echo %yesterdaylog%
if exist «%WorkDirlog%\%yesterdaylog%.txt» «C:\Program Files\7-Zip\7z.exe» a -ssw -mx9 -r0 %LogDirlog%\Log_%yesterdaylog% %WorkDirlog%\%yesterdaylog%.txt
if exist «%WorkDirlog%\%yesterdaylog%.txt» del %WorkDirlog%\%yesterdaylog%.txt
rem удаление файлов за back_day
if exist «%LogDirConnectUPSH%\connectUPSH_%DateArchive%.7z» del %LogDirConnectUPSH%\connectUPSH_%DateArchive%.7z
if exist «%LogDirDataToReturn%\dataToReturn_%DateArchive%.7z» del %LogDirDataToReturn%\dataToReturn_%DateArchive%.7z
if exist «%LogDirExceptions%\error_%DateArchive%.7z» del %LogDirExceptions%\error_%DateArchive%.7z
if exist «%LogDirIncomingData%\incommingData_%DateArchive%.7z» del %LogDirIncomingData%\incommingData_%DateArchive%.7z
if exist «%LogDirSendedToSbbol%\SendedToSbbol_%DateArchive%.7z» del %LogDirSendedToSbbol%\SendedToSbbol_%DateArchive%.7z
if exist «%LogDirlog%\%DateArchive%.7z» del %LogDirlog%\%DateArchive%.7z
удаление файлов c начала года
set /a ArchiveMonth=%T_MONTH% + 1
echo «Delete old file»
for /L %%B in (1,1,%ArchiveMonth%) do (
for /L %%C in (1,1,31) do (
IF %%B LSS %T_MONTH% if exist «%LogDirConnectUPSH%\connectUPSH_%T_YEAR%_%%B_%%C.7z» start ( del %LogDirConnectUPSH%\connectUPSH_%T_YEAR%_%%B_%%C.7z)
IF %%B LSS %T_MONTH% if exist «%LogDirDataToReturn%\dataToReturn_%T_YEAR%_%%B_%%C.7z» start (del %LogDirDataToReturn%\dataToReturn_%T_YEAR%_%%B_%%C.7z)
IF %%B LSS %T_MONTH% if exist «%LogDirExceptions%\error_%T_YEAR%_%%B_%%C.7z» start (del %LogDirExceptions%\error_%T_YEAR%_%%B_%%C.7z)
IF %%B LSS %T_MONTH% if exist «%LogDirIncomingData%\incommingData_%T_YEAR%_%%B_%%C.7z» start (del %LogDirIncomingData%\incommingData_%T_YEAR%_%%B_%%C.7z)
IF %%B LSS %T_MONTH% if exist «%LogDirSendedToSbbol%\SendedToSbbol_%T_YEAR%_%%B_%%C.7z» start (del %LogDirSendedToSbbol%\SendedToSbbol_%T_YEAR%_%%B_%%C.7z)
IF %%B EQU %T_MONTH% IF %%C LEQ %T_DAY% if exist «%LogDirConnectUPSH%\connectUPSH_%T_YEAR%_%%B_%%C.7z» start (del %LogDirConnectUPSH%\connectUPSH_%T_YEAR%_%%B_%%C.7z)
IF %%B EQU %T_MONTH% IF %%C LEQ %T_DAY% if exist «%LogDirDataToReturn%\dataToReturn_%DateArchive%.7z» start (del %LogDirDataToReturn%\dataToReturn_%T_YEAR%_%%B_%%C.7z)
IF %%B EQU %T_MONTH% IF %%C LEQ %T_DAY% if exist «%LogDirDataToReturn%\dataToReturn_%T_YEAR%_%%B_%%C.7z» start del (%LogDirExceptions%\error_%T_YEAR%_%%B_%%C.7z)
IF %%B EQU %T_MONTH% IF %%C LEQ %T_DAY% if exist «%LogDirIncomingData%\incommingData_%T_YEAR%_%%B_%%C.7z» start (del %LogDirIncomingData%\incommingData_%T_YEAR%_%%B_%%C.7z)
IF %%B EQU %T_MONTH% IF %%C LEQ %T_DAY% if exist «%LogDirSendedToSbbol%\SendedToSbbol_%T_YEAR%_%%B_%%C.7z» start (del %LogDirSendedToSbbol%\SendedToSbbol_%T_YEAR%_%%B_%%C.7z)
)
)
Идея: есть СДЮШ и есть дети, которые участвуют в соревнованиях районного/окружного/городского уровня. Логично внедрить сайт/программу для отслеживания результатов каждого конкретного спортсмена. Функционал: регистрируется родитель и указывает своего ребенка, дальше программа находит результаты соревнований по конкретному ребенку и выдает результат родителю, дополнительно программа строит дашборды и выдает рекомендации.
В рамках программного модуля «Передатчик ПС БР» реализован следующий функционал:
создание финансовых сообщений в формате УФЭБС ED101;
создание финансовых сообщений в формате УФЭБС ED501;
создание финансовых сообщений в формате SWIFT MT101;
хранение финансовых сообщений в базе данных;
выгрузка платёжных поручений в pdf формате;
обработка принятых входящих сообщений;
Данный модуль можно считать практически полноценной АБС. Сформированные в АБС реестры будут отправляться в АРМ КБР (автоматизированное рабочее место клиента Банка России) — специальный компьютер в банке в отдельном защищённом контуре, с которого уходят платежи в ЦБ РФ.
Для централизации финансовой деятельности необходимо обработать выписки формата 1CClientBankExchange в формат собственной банковской системы (например записать в базу данных MS SQL или Oracle ). В частности подобные файлы обрабатываются в крупных корпорациях и финансовых организациях.
Первоначально мы имеем сетевую файловую структуру следующего вида
В папку «IN» поступают банковские выписки и после обработки попадают в папку «Archive».
Дополнительно необходимо предусмотреть папку «Error» для ошибочных файлов и папку «Log», где будут вестись логи обработки.
Программа будет написана на языке C#.
Кодировка исходных файлов — Windows-1251. Обработка файла выполняется следующем образом. Мы анализируем каталог, получаем общее количество файлов, потом возвращаемся к первому файлу, разбиваем строку на массив элементов по разделителю «=». После обработки файла он перемещается в архив, исходный файл удаляется.
public static bool ReadFile(string filename)
{
var srcEncoding = Encoding.GetEncoding(1251);
var dstEncoding = Encoding.UTF8;
bool success = false;
try
{
using (StreamReader sr = new StreamReader(filename, encoding: srcEncoding))
{
string headers = sr.ReadLine();
int count = System.IO.File.ReadAllLines(filename).Length;
int i = 0;
logger.Debug("Чтение данных");
PaymentP paymentP = new PaymentP();
while (i < count)
{
string onedouble = sr.ReadLine();
if (Check(onedouble) == true)
{
string[] lines = Regex.Split(onedouble, "[=]");
if (lines[0] != null)
{
if (lines[1] != null)
{
logger.Debug($"{lines[0]} {lines[1]}");
paymentP.TranslateToexport(lines[0], lines[1]);
i++;
success = true;
}
if (lines[1] == null)
{
logger.Debug($"{lines[0]}");
i++;
success = true;
}
}
}
else
{
i++;
success = true;
}
}
Export(paymentP);
paymentP=null;
}
}
catch
{
logger.Debug("Ошибка чтения файла");
}
return success;
После обработки данные записываются в структуру
public class PaymentP { public string Otpravitel; public string Poluchatel; public DateTime DataSozdaniya; public DateTime VremyaSozdaniya; public string RaschSchet; public string Dokument; public string Nomer; public DateTime Data; public string Summa; public string PlatelshchikSchet; public string PlatelshchikINN; public string PlatelshchikKPP; public string Platelshchik1; public string PlatelshchikRaschSchet; public string PlatelshchikBank1; public string PlatelshchikBank2; public string PlatelshchikBIK; public string PlatelshchikKorschet; public string PoluchatelSchet; public string PoluchatelINN; public string Poluchatel1; public string PoluchatelRaschSchet; public string PoluchatelBank1; public string PoluchatelBank2; public string PoluchatelBIK; public string PoluchatelKorschet; public string VidPlatezha; public int VidOplaty; public int Ocherednost; public string NaznacheniePlatezha;
И обращаемся к конкретному полю ( реализация вывода выполнена в ознакомительных целях).
Настройки корневого пути файлов мы будем хранить в реестре операционной системы.
Обработанные поля в консоль выводятся следующем образом (для проверки).
В рамках программного модуля «Передатчик ПС БР» предполагается реализовать следующий функционал:
создание финансовых сообщений в формате УФЭБС ED101;
создание финансовых сообщений в формате УФЭБС ED501;
создание финансовых сообщений в формате SWIFT MT101;
хранение финансовых сообщений в базе данных;
выгрузка платёжных поручений в pdf формате;
обработка принятых входящих сообщений;
Данный модуль можно считать практически полноценной АБС. Сформированные в АБС реестры будут отправляться в АРМ КБР (автоматизированное рабочее место клиента Банка России) — специальный компьютер в банке в отдельном защищённом контуре, с которого уходят платежи в ЦБ РФ.
Высокие функциональные требования к современным АБС обусловлены сложностью интеграции программного продукта, необходимостью решения широкого спектра клиентских задач, в связи с этим мой модуль должен иметь следующие критерии:
комплексное обеспечение банковской деятельности (единство документооборота, отчётности, пакетная обработка данных);
лёгкость интеграции, возможность простого модульного расширения функциональности;
защищённость, безопасность;
достоверность данных, оперативное обновление информации, учёт специфики работы коммерческой структуры.
Разработка приложения будет осуществляться в Visual Studio 2017. В качестве хранилища данных будет использоваться MS SQL Server 2019.
Версии программы будут храниться в системе хранения версий – GitHub, репозиторий https://github.com/aovakur/Peredatchik_PSBR. Количество веток – две (master и release). В ветку мастер я буду выкладывать доработанные формы и функции, в ветку релиз буду выкладывать собранный релиз со всеми библиотеками и необходимыми таблицами.
Для сохранения платёжных поручений необходимо разработать меню конфигурации (выбор сервера, базы данных, имя пользователя, пароль).
Разработанное подключение к БД представлено на рисунке 3.3. Имя и пароль пользователя будет скрыто от пользователя. По умолчанию имя пользователя – adminkbr, пароль aA12345678.
Данные для подключения будут храниться в классе DBUtils.cs, инициализация подключения будет происходить в классе DBSQLServerUtils.cs.
Глобальные настройки подключения к БД я установлю в файле app.config.
Доступ к глобальным настройкам будет происходить через СonfigurationManager и вызов функции ReadSetting, обновление через функцию AddUpdateAppSettings.
Счётчик сообщений (ed501, ed101) в течение операционного дня (текущего дня) также будет задан через глобальные настройки:
Если текущий операционной день поменялся, то происходит обнуление счётчика и первому ЭС присваивается номер 1.
Для разработки и тестирования программы я буду использовать локальный Microsoft SQL Server 2019, в будущем таблицу можно будет перенести на облачный сервер или сервер БД в организации.
Подключение к БД будет осуществлять по TCP соединению и 1433 порту. Для работы с MS SQL я буду использовать Microsoft SQL Server Management studio 2018.
Для отображения созданных и принятых электронных сообщений необходимо создать экранную форму (DataGrid).
Форма 1 будет формироваться в классе Form1.cs. Для сохранения платёжного поручения в специализированный формат необходимо разработать глобальные настройки сохранения. Настройки сохранения будут формироваться в классе settings.cs.
Для создания платёжного поручения (форма 0401060 согласно Приложению 2 Положения Банка России от 19 июня 2012 года № 383-П «О правилах осуществления перевода денежных средств» (в редакции Указаний Банка России от 15.07.2013 № 3025-У, от 29.04.2014 № 3248-У, от 19.05.2015 № 3641-У, от 06.11.2015 N 3844-У, от 05.07.2017 N 4449-У и от 11.10.2018 N 4930-У)) необходимо разработать специальный пользовательский интерфейс и механизм автоматического формирования некоторых полей.
Пользовательский интерфейс формы №0401060 представлен ниже
Данная форма является основным функционалом системы, после создания платёжного поручения его реквизиты можно передать в БД, сформировать PDF документ, отправить на печать, сохранить в соответствующий формат (ed101, ed501, MT101). Форма формируется в классе Form2.cs и используя класс pp.cs для создания нового экземпляра класса CreatePP, значения полей будет заполняться через модификатор доступа get и set. Для каждого поля ПП присвоен соответствующее название P1-P110 c модификатором доступа public и переменные p1-110 с модификатором доступа private.
Фрагмент кода приведён ниже:
private string p1;
private string p0;
private int p2;
private int p3;
private string p4;
private string p5;
public string P0
{
get { return p0; }
set { p0 = value; }
}
public int P20
{
get { return p20; }
set { p20 = value; }
}
public string Status
{
get { return status; }
set { status = «Новое»; }
}
public string P1
{
get { return p1; }
set { p1 = «Платежное поручение»; }
}
public string Date_pp()
{
DateTime dt = DateTime.Now;
string curDate = dt.ToShortDateString();
return curDate;
}
Если при сохранении были заполнены не все поля, то программа выделяет пустые поля красным цветом.
Фрагмент кода для проверки поля:
if (textBox10.Text == «»)
{
textBox10.BackColor = Color.Fuchsia;
}
После вызова функции «create_pdf» будет формироваться pdf документ с заполненными полями
В функцию «create_pdf» в качестве параметров будут передаваться значения полей, c помощью fields. SetField данные значения будут проставляться в PDF документ.
PdfReader template = new PdfReader(settings.safepathetemplate);
PdfStamper stamper = new PdfStamper(template, new FileStream(pathsafe, FileMode.Create));
AcroFields fields = stamper.AcroFields;
fields.AddSubstitutionFont(baseFont);
fields.SetField(«p4», p4);
fields.SetField(«p3», p0);
fields.SetField(«p6», p6);
Большинство полей автоматизированы и не требуют участие пользователя.
Автоматически формируется сумма пропью (согласно требованиям ЦБ), подтягивается банк плательщик, плательщик, получатель, банк получателя. По наименованию организации проставляется ИНН, КПП; по наименованию банка проставляется БИК, корреспондентский счёт.
Производим установку и запуск программы «Передатчик ПС БР» от имени пользователя. Заполняем поля платёжного поручения
Формируем документ ED101 и анализируем результат сохранения
C помощью XMLPAD проводим сопоставление нашего файла ED101 и его XSD схемы.
Наш созданный файл ED101 не имеет логических ошибок и может быть успешно перенесён в АРМ КБР (АРМ КБР СПФС) для отправки в ЦБ РФ.
Провести проверку созданного ED501 невозможно из-за отсутствия стандартизированной схемы, атрибутивный состав каждый банк выбирает самостоятельно.
Осуществляем отправку сформированного сообщения через АРМ КБР/ АРМ КБР СПФС в платёжный контур ЦБ РФ.
После отправки ЭС ED101/ED501 я получил ответную квитанцию от ЦБ РФ о о следующем статусе:
<?xml version=»1.0″ encoding=»utf-8″?><soapenv:Envelope xmlns:soapenv=»http://www.w3.org/2003/05/soap-envelope»><soapenv:Header><props:MessageInfo xmlns:props=»urn:cbr-ru:msg:props:v1.3″><props:To>uic:452500055555</props:To><props:From>uic:KBRGATE</props:From><props:MessageID>KBRGATE_guid:786df05a239943f3bc9eca41a6fc430a</props:MessageID><props:CorrelationMessageID>guid:786df05a239943f3bc9eca41a6fc430a</props:CorrelationMessageID><props:MessageType>3</props:MessageType><props:Priority>5</props:Priority><props:CreateTime>2019-08-06T07:46:04Z</props:CreateTime><props:SendTime>2019-08-06T07:46:04Z</props:SendTime></props:MessageInfo><props:AcknowledgementInfo xmlns:props=»urn:cbr-ru:msg:props:v1.3″><props:AcknowledgementType>2</props:AcknowledgementType><props:ResultCode>0000</props:ResultCode><props:ResultText>ЭС поступило в ТШ КБР:uic:777777700011. Информация о исходном сообщении: имя файла: ED997_06104603.dat. Адресная информация исходного сообщения: логический адрес отправителя: uic:452500055555, логический адрес получателя: uic:777777700011. Время формирования квитанции: 2019-08-06 07:46:04</props:ResultText>