From 27a11ae3ee5a85d0d7679d2b883cc4b8ba7fc3ec Mon Sep 17 00:00:00 2001 From: Raykov-MS Date: Mon, 6 Jul 2026 13:27:10 +0300 Subject: [PATCH] fix 10% write in report to 95% --- app/pipeline/mapping.py | 46 ++- app/pipeline/mapping_table.json | 538 ++++++++++++++++---------------- app/pipeline/report.py | 70 +++-- app/pipeline/service.py | 239 +++++++------- tests/unit/test_mapping.py | 54 +++- tests/unit/test_report.py | 55 ++++ 6 files changed, 583 insertions(+), 419 deletions(-) create mode 100644 tests/unit/test_report.py diff --git a/app/pipeline/mapping.py b/app/pipeline/mapping.py index ffc529f..d326ad4 100644 --- a/app/pipeline/mapping.py +++ b/app/pipeline/mapping.py @@ -85,22 +85,22 @@ def _build_rules(mapping_data: list[dict[str, str | int]]) -> tuple[MappingRule, path = str(row.get("xml_path", "")).strip() if not column or tag in _INVALID_TAGS: continue - candidates = [tag] - if column.startswith("ИНН "): - candidates = ["ИННФЛ", "ИННЮЛ", "ИНН", *candidates] + candidates = list(_extract_tag_candidate_keys(tag)) + if column.startswith("ИНН"): + candidates = ["ИННФЛИП", "ИННФЛ", "ИННЮЛ", "ИНН", *candidates] if column == "Тип участника": candidates = ["Тип", "ТипУчастника", *candidates] if path: - path_tag = path.strip("/").split("/")[-1] - if path_tag and path_tag not in candidates: - candidates.append(path_tag) + for path_tag in _extract_path_candidate_keys(path): + if path_tag not in candidates: + candidates.append(path_tag) rules.append( MappingRule( column_name=column, candidate_keys=tuple(candidates), source=( "participant" - if column in participant_columns or column.startswith("ИНН ") + if column in participant_columns or column.startswith("ИНН") else "any" ), ) @@ -108,6 +108,32 @@ def _build_rules(mapping_data: list[dict[str, str | int]]) -> tuple[MappingRule, return tuple(rules) +def _extract_tag_candidate_keys(tag: str) -> tuple[str, ...]: + candidates: list[str] = [] + for raw_tag in re.split(r"[|,]", tag): + cleaned_tag = raw_tag.strip() + if not cleaned_tag or cleaned_tag in _INVALID_TAGS: + continue + if cleaned_tag not in candidates: + candidates.append(cleaned_tag) + return tuple(candidates) + + +def _extract_path_candidate_keys(path: str) -> tuple[str, ...]: + candidates: list[str] = [] + for raw_path in re.findall(r"/[^\s|]+", path): + parts = [part for part in raw_path.strip("/").split("/") if part] + if not parts: + continue + dotted_path = ".".join(parts) + if dotted_path and dotted_path not in candidates: + candidates.append(dotted_path) + leaf_tag = parts[-1] + if leaf_tag and leaf_tag not in _INVALID_TAGS and leaf_tag not in candidates: + candidates.append(leaf_tag) + return tuple(candidates) + + _MAPPING_DATA = _load_mapping_data() FIXED_REPORT_COLUMNS: tuple[str, ...] = _build_fixed_columns(_MAPPING_DATA) REPORT_MAPPING_RULES: tuple[MappingRule, ...] = _build_rules(_MAPPING_DATA) @@ -154,4 +180,10 @@ def _pick_value(payload: dict[str, str], candidates: tuple[str, ...]) -> str: short = key.split(".")[-1] if short in payload and payload[short]: return payload[short] + dotted_suffix = f".{short}" + for payload_key, payload_value in payload.items(): + if not payload_value: + continue + if payload_key.endswith(dotted_suffix): + return payload_value return "" diff --git a/app/pipeline/mapping_table.json b/app/pipeline/mapping_table.json index 869dc60..f60cce7 100644 --- a/app/pipeline/mapping_table.json +++ b/app/pipeline/mapping_table.json @@ -3,7 +3,7 @@ "index": 1, "column_name": "Имя XML файла", "xml_tag": "-", - "xml_path": "Имя входного файла", + "xml_path": "/ММ/ГГГГ", "multiplies": "нет", "required": "Обязательно", "comment": "Данные берутся из названия входящего файла в формате \"ДД/ММ/ГГГГ\"" @@ -30,7 +30,7 @@ "index": 4, "column_name": "ОКАТО", "xml_tag": "ОКАТОФл", - "xml_path": "/СообщОперКО/ИнформЧасть/ИнфБанк/ОКАТОФл", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/ИнфФилиал/ОКАТОФл", "multiplies": "нет", "required": "необязательно", "comment": "Числовое поле. Код территории кредитной организации. Показатель отсутствует только в случае заграничных кредитных организаций." @@ -39,7 +39,7 @@ "index": 5, "column_name": "БИК", "xml_tag": "БИКФл", - "xml_path": "/СообщОперКО/ИнформЧасть/ИнфБанк/БИКФл", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/ИнфФилиал/БИКФл", "multiplies": "нет", "required": "необязательно", "comment": "числовое поле. Значения может быть пустое." @@ -47,8 +47,8 @@ { "index": 6, "column_name": "Номер филиала", - "xml_tag": "НомФЛ", - "xml_path": "/СообщОперКО/ИнформЧасть/ИнфФилиал/", + "xml_tag": "НомФл", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/ИнфФилиал/НомФл", "multiplies": "нет", "required": "Обязательно", "comment": "Числовое поле, порядковый номер филиала." @@ -57,7 +57,7 @@ "index": 7, "column_name": "Идентификатор записи", "xml_tag": "НомерЗаписи", - "xml_path": "/ СообщОперКО/Операция/НомерЗаписи", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/НомерЗаписи", "multiplies": "нет", "required": "Обязательно", "comment": "Текстовое поле" @@ -66,7 +66,7 @@ "index": 8, "column_name": "Тип записи", "xml_tag": "ТипЗаписи", - "xml_path": "/СообщОперКО/Операция/ТипЗаписи", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/ТипЗаписи", "multiplies": "нет", "required": "Обязательно", "comment": "Не нашла информацию о \"типе записи\" в документации. Есть тип записи ФЭС, таб. 3.2 пункт 4 Это одно и тоже?" @@ -75,7 +75,7 @@ "index": 9, "column_name": "Уникальный номер операции", "xml_tag": "НомерОперация", - "xml_path": "/СообщОперКО/Операция/НомерОперация", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/НомерОперация", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может быть пустым так как данные могут не передаваться в XML" @@ -84,7 +84,7 @@ "index": 10, "column_name": "Признак операции, связанной с фин. терроризма", "xml_tag": "ПризнФТр", - "xml_path": "/СообщОперКО/Операция/ПризнФТр", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/ПризнФТр", "multiplies": "Множится", "required": "обязательно", "comment": "Числовой показатель" @@ -93,7 +93,7 @@ "index": 11, "column_name": "Основание приостановления", "xml_tag": "ОснПриостановление", - "xml_path": "Просмотрела все XML и XSD схемы и не нашла путь тэга", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/ОснПриостановление", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым так как данные могут не передаваться в XML" @@ -102,7 +102,7 @@ "index": 12, "column_name": "Дата совершения(приостановл.)", "xml_tag": "ДатаОперации", - "xml_path": "/СообщОперКО/Операция/ДатаОперации", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/ДатаОперации", "multiplies": "нет", "required": "обязательно", "comment": "Формат дата \"ДД/ММ/ГГГГ\"" @@ -111,7 +111,7 @@ "index": 13, "column_name": "Дата выявления", "xml_tag": "ДатаВыявления", - "xml_path": "/СообщОперКО/Операция/ДатаВыявления", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/ДатаВыявления", "multiplies": "нет", "required": "необязательно", "comment": "Поле дата может оставаться пустым не поступать в XML.." @@ -129,7 +129,7 @@ "index": 15, "column_name": "Призн. Совершения оп. с испол. ЭСП", "xml_tag": "ПризнакОперацияЭСП", - "xml_path": "/СообщОперКО/Операция/ПризнакОперацияЭСП", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/ПризнакОперацияЭСП", "multiplies": "нет", "required": "необязательно", "comment": "Числовое поле, может оставаться пустым и не поступать в XML" @@ -138,7 +138,7 @@ "index": 16, "column_name": "Наименование плат. системы на стороне лица соверш. операцию", "xml_tag": "НаимПлатежнаяСистема1", - "xml_path": "/СообщОперКО/Операция/НаимПлатежнаяСистема1", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/НаимПлатежнаяСистема1", "multiplies": "нет", "required": "необязательно", "comment": "текстовое поле, может оставаться пустым и не поступать в XML" @@ -147,7 +147,7 @@ "index": 17, "column_name": "Наименование плат. системы на стороне получателя", "xml_tag": "НаимПлатежнаяСистема2", - "xml_path": "/СообщОперКО/Операция/НаимПлатежнаяСистема2", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/НаимПлатежнаяСистема2", "multiplies": "нет", "required": "необязательно", "comment": "текстовое поле, может оставаться пустым и не поступать в XML" @@ -156,7 +156,7 @@ "index": 18, "column_name": "Время совершения транзакции с испол. ЭСП", "xml_tag": "ВремяТранзакцияЭСП", - "xml_path": "/СообщОперКО/Операция/ВремяТранзакцияЭСП", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/ВремяТранзакцияЭСП", "multiplies": "нет", "required": "необязательно", "comment": "Указывается точное время операции Пример: 09:37:51 (МСК-01:00) (г. Калининград) ; 11:45:43 (МСК+03:00) (г. Омск) ; 10:50:40 (МСК+00:00) (г. Москва) ." @@ -165,7 +165,7 @@ "index": 19, "column_name": "Код вида операции", "xml_tag": "КодОперации", - "xml_path": "/СообщОперКО/Операция/КодОперации", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/КодОперации", "multiplies": "нет", "required": "необязательно", "comment": "Числовое поле" @@ -174,7 +174,7 @@ "index": 20, "column_name": "Доп. коды", "xml_tag": "ДопКодОперации", - "xml_path": "/СообщОперКО/Операция/ДопКодОперации", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/ДопКодОперации", "multiplies": "Множится", "required": "необязательно", "comment": "Числовое поле, может оставаться пустым и не поступать в XML" @@ -183,7 +183,7 @@ "index": 21, "column_name": "Коды призн. необычной операции", "xml_tag": "ПризнНеобОперации", - "xml_path": "СообщОперКО/Операция/ПризнНеобОперации", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/ПризнНеобОперации", "multiplies": "Множится", "required": "необязательно", "comment": "Числовое поле, может оставаться пустым и не поступать в XML" @@ -192,7 +192,7 @@ "index": 22, "column_name": "Валюта", "xml_tag": "КодВал", - "xml_path": "/СообщОперКО/Операция/КодВал", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/КодВал", "multiplies": "нет", "required": "необязательно", "comment": "Числовое поле, может оставаться пустым и не поступать в XML" @@ -201,7 +201,7 @@ "index": 23, "column_name": "Сумма в валюте проведения", "xml_tag": "СумОперации", - "xml_path": "/СообщОперКО/Операция/СумОперации", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/СумОперации", "multiplies": "нет", "required": "необязательно", "comment": "Числовое поле, допускаются не целые числа. может оставаться пустым и не поступать в XML" @@ -210,7 +210,7 @@ "index": 24, "column_name": "В рубл. эквиваленте", "xml_tag": "СумРуб", - "xml_path": "/СообщОперКО/Операция/СумРуб", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/СумРуб", "multiplies": "нет", "required": "необязательно", "comment": "Числовое поле, допускаются не целые числа. может оставаться пустым и не поступать в XML" @@ -219,7 +219,7 @@ "index": 25, "column_name": "Продаваемая валюта", "xml_tag": "КодВалКонверсия", - "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/КодВалКонверсия", "multiplies": "множится", "required": "необязательно", "comment": "может оставаться пустым и не поступать в XML" @@ -228,7 +228,7 @@ "index": 26, "column_name": "Сумма прод. валюты в ед. соответ. валюты", "xml_tag": "СумКонверсия", - "xml_path": "/СообщОперКО/Операция/СумКонверсия", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/СумКонверсия", "multiplies": "нет", "required": "необязательно", "comment": "текстовый показатель, поле может остаться пустым и не поступать в XML" @@ -237,7 +237,7 @@ "index": 27, "column_name": "Признак валютной операции", "xml_tag": "ПризнВалОперации", - "xml_path": "/СообщОперКО/Операция/ПризнВалОперации", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКо/Операция/ПризнВалОперации", "multiplies": "нет", "required": "необязательно", "comment": "текстовый показатель, поле может остаться пустым и не поступать в XML" @@ -246,7 +246,7 @@ "index": 28, "column_name": "Идентификатор подозрительной деятельности", "xml_tag": "ИдентификаторПД", - "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/ИдентификаторПД", "multiplies": "нет", "required": "обязательно", "comment": "Поле помечено как обязательное, но ни в одном XML и XSD его не нашла." @@ -255,7 +255,7 @@ "index": 29, "column_name": "Код драг. металла", "xml_tag": "КодДрагМеталл", - "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведДрагМеталл", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведДрагМеталл/КодДрагМеталл", "multiplies": "нет", "required": "Обязательно", "comment": "Поле помечено как обязательное, но ни в одном XML и XSD его не нашла." @@ -264,7 +264,7 @@ "index": 30, "column_name": "Наименование металла", "xml_tag": "НаимДрагМеталл", - "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведДрагМеталл", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведДрагМеталл/НаимДрагМеталл", "multiplies": "нет", "required": "необязательно", "comment": "поле может остаться пустым и не поступать в XML" @@ -273,7 +273,7 @@ "index": 31, "column_name": "Предмет купли-продажи", "xml_tag": "КодПредмет", - "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведДрагМеталл", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведДрагМеталл/КодПредмет", "multiplies": "нет", "required": "необязательно", "comment": "поле может остаться пустым и не поступать в XML" @@ -282,7 +282,7 @@ "index": 32, "column_name": "Характеристика операции", "xml_tag": "ХарактерОп", - "xml_path": "/СообщОперКО/ОснованиеОп/ХарактерОп", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/ХарактерОп", "multiplies": "нет", "required": "необязательно", "comment": "поле может остаться пустыми не поступать в XML" @@ -291,7 +291,7 @@ "index": 33, "column_name": "Назначение платежа", "xml_tag": "НазначениеПлатежа", - "xml_path": "/СообщОперКО/ОснованиеОп/НазначениеПлатежа", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/НазначениеПлатежа", "multiplies": "нет", "required": "необязательно", "comment": "поле может остаться пустыми не поступать в XML" @@ -300,7 +300,7 @@ "index": 34, "column_name": "Доп. сведения", "xml_tag": "КомментУчастник", - "xml_path": "/СообщОперКО/УчастникФЛИП/КомментУчастник", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОп/КомментУчастник", "multiplies": "нет", "required": "необязательно", "comment": "текстовый показатель. Поле может оставаться пустым. и не поступать в XML" @@ -309,7 +309,7 @@ "index": 35, "column_name": "Вид перевода", "xml_tag": "ВидПереводДС", - "xml_path": "/СообщОперКО/СвединияПереводыДС/ВидПереводДС", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/ВидПереводДС", "multiplies": "нет", "required": "Обязательно", "comment": "числовой показатель" @@ -318,7 +318,7 @@ "index": 36, "column_name": "Код территории (5016)", "xml_tag": "КодТерИнГос", - "xml_path": "/СообщОперКО/ СведенияПереводыДС/КодТерИнГос", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/КодТерИнГос", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не поступать в XML" @@ -327,7 +327,7 @@ "index": 37, "column_name": "Тип оператора", "xml_tag": "ТипОператорДС", - "xml_path": "/СообщОперКО/СвединияПереводыДС/ТипОператорДС", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/ТипОператорДС", "multiplies": "нет", "required": "Обязательно", "comment": "числовой показатель" @@ -336,7 +336,7 @@ "index": 38, "column_name": "Номер счета плательщика", "xml_tag": "НомерСчетПлательщик", - "xml_path": "/СообщОперКО/СвединияПереводыДС/НомерСчетПлательщик", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/НомерСчетПлательщик", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не поступать в XML" @@ -345,7 +345,7 @@ "index": 39, "column_name": "Идентификатор ЭСП плательщика", "xml_tag": "ИдентЭСППлательщик", - "xml_path": "/СообщОперКО/СведенияПереводыДС/ИдентЭСППлательщик", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/ИдентЭСППлательщик", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не поступать в XML" @@ -354,7 +354,7 @@ "index": 40, "column_name": "Наименование банка плательщика", "xml_tag": "СведБанкПлательщик", - "xml_path": "/СообщОперКО/СвединияПереводыДС/СведБанкПлательщик/НаимКО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/СведБанкПлательщик/НаимКО", "multiplies": "нет", "required": "необязательно", "comment": "Данные передаются в XML в виде <НаимКО> АО \"АЛЬФА-БАНК\" в отчет заносятся в виде: Банк ВТБ (ПАО), филиал Филиал \"Центральный\" Банка ВТБ (ПАО)" @@ -363,7 +363,7 @@ "index": 41, "column_name": "БИК банка плательщика", "xml_tag": "БИККО", - "xml_path": "/СообщОперКО/СвединияПереводыДС/СведБанкПлательщик/БИККО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/СведБанкПлательщик/БИККО", "multiplies": "нет", "required": "необязательно", "comment": "Данные передаются в XML в виде: <БИККО> 044525593 в отчет заносятся в виде: 044525411" @@ -372,7 +372,7 @@ "index": 42, "column_name": "Наименование банка получателя", "xml_tag": "СведБанкПолучатель", - "xml_path": "/СообщОперКО/СвединияПереводыДС/СведБанкПолучатель", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/СведБанкПолучатель/НаимКО", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не поступать в XML" @@ -380,8 +380,8 @@ { "index": 43, "column_name": "БИК банка получателя", - "xml_tag": "СведБанкПолучатель", - "xml_path": "/СообщОперКО/СвединияПереводыДС/СведБанкПолучатель", + "xml_tag": "БИККО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/СведБанкПолучатель/БИККО", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не поступать в XML" @@ -390,7 +390,7 @@ "index": 44, "column_name": "Номер счета банка плательщика", "xml_tag": "СчетБанкПлательщик", - "xml_path": "/СообщОперКО/СвединияПереводыДС/СчетБанкПлательщик", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/СчетБанкПлательщик", "multiplies": "нет", "required": "необязательно", "comment": "Данные передаются в XML в виде: <СчетБанкПлательщик> 30101810300000000711 в отчет заносятся в виде: 30101810300000000711" @@ -399,7 +399,7 @@ "index": 45, "column_name": "Номер счета банка получателя", "xml_tag": "СчетБанкПолучатель", - "xml_path": "/СообщОперКО/СвединияПереводыДС/СчетБанкПолучатель", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/СчетБанкПолучатель", "multiplies": "нет", "required": "необязательно", "comment": "Данные передаются в XML в виде: <СчетБанкПолучатель> 30101810200000000704 в отчет заносятся в виде: 30101810200000000704" @@ -408,7 +408,7 @@ "index": 46, "column_name": "Номер счета получателя", "xml_tag": "НомерСчетПолучатель", - "xml_path": "/СообщОперКО/СвединияПереводыДС/НомерСчетПолучатель", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/НомерСчетПолучатель", "multiplies": "нет", "required": "необязательно", "comment": "Данные передаются в XML в виде: <НомерСчетПолучатель> 40703810000000000000 в отчет заносятся в виде: 40703810000000000000" @@ -417,7 +417,7 @@ "index": 47, "column_name": "Идентификатор ЭСП получателя", "xml_tag": "ИдентЭСППолучателя", - "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияПереводыДС/ИдентЭСППолучателя", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не поступать в XML" @@ -426,7 +426,7 @@ "index": 48, "column_name": "Номер банкомата", "xml_tag": "ИдТерминал", - "xml_path": "/СообщОперКО/СведенияКартаИнБанк/СведМестоОперация/ИдТерминал", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/ИдТерминал", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -435,7 +435,7 @@ "index": 49, "column_name": "Адрес места приема наличных денежных средств(в одной строке)", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/АдрМестоПриемаВыдача/АдресСтрока", "multiplies": "нет", "required": "необязательно", "comment": "текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -444,7 +444,7 @@ "index": 50, "column_name": "АДРЕС (ПО СТРУКТУРЕ полный)", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/АдрМестоПриемаВыдача/АдресСтрока", "multiplies": "нет", "required": "необязательно", "comment": "текстовый показатель, поле может остаться пустым и не передаваться в XML Чем они отличаются?" @@ -453,7 +453,7 @@ "index": 51, "column_name": "Индекс", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/ /Индекс", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/АдрМестоПриемаВыдача/Индекс", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -462,7 +462,7 @@ "index": 52, "column_name": "Код страны", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/ КодОКСМ", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/АдрМестоПриемаВыдача/КодОКСМ", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -471,7 +471,7 @@ "index": 53, "column_name": "Код ОКАТО", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/ КодСубъектаПоОКАТО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/АдрМестоПриемаВыдача/КодСубъектаПоОКАТО", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -480,7 +480,7 @@ "index": 54, "column_name": "Район", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/Район", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/АдрМестоПриемаВыдача/Район", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -489,7 +489,7 @@ "index": 55, "column_name": "Населенный пункт", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/Пункт", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/АдрМестоПриемаВыдача/Пункт", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -498,7 +498,7 @@ "index": 56, "column_name": "Улица", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/Улица", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/АдрМестоПриемаВыдача/Улица", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -507,7 +507,7 @@ "index": 57, "column_name": "Дом", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/Дом", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/АдрМестоПриемаВыдача/Дом", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -516,7 +516,7 @@ "index": 58, "column_name": "Корпус/строение", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/Корп", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/АдрМестоПриемаВыдача/Корп", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -525,7 +525,7 @@ "index": 59, "column_name": "Квартира", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/Оф", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/АдрМестоПриемаВыдача/Оф", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -534,7 +534,7 @@ "index": 60, "column_name": "Наименование банка, обслуживающего участника операции", "xml_tag": "НаимКО", - "xml_path": "/СообщОперКО/СведПриемВыдача/ <АдрМестаПриемаВыдача/НаимКО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/НаимКО", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -542,8 +542,8 @@ { "index": 61, "column_name": "БИК банка, обслуживающего участника операции", - "xml_tag": "БИКК", - "xml_path": "/СообщОперКО/СведПриемВыдача/ <АдрМестаПриемаВыдача/БИККО", + "xml_tag": "БИККО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведПриемНалДС/БИККО", "multiplies": "нет", "required": "Обязательно", "comment": "Числовой показатель" @@ -552,7 +552,7 @@ "index": 62, "column_name": "Статус перевода", "xml_tag": "СтатусПеревод", - "xml_path": "/СообщОперКО/СведПриемНалДС/АдрМестаПриемаВыдача/СтатусПеревод", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СтатусПеревод", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым. Не нашла в XML" @@ -561,7 +561,7 @@ "index": 63, "column_name": "Номер банкомата", "xml_tag": "ИдТерминал", - "xml_path": "/СообщОперКО/СведенияКартаИнБанк/СведМестоОперация/ИдТерминал", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДс/СведВыдачаНалДС/ИдТерминал", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -570,7 +570,7 @@ "index": 64, "column_name": "Адрес места выдачи наличных денежных средств ( в одной строке)", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/АдрМестаПриемаВыдача/АдресСтрока", "multiplies": "нет", "required": "необязательно", "comment": "текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -579,7 +579,7 @@ "index": 65, "column_name": "АДРЕС (ПО СТРУКТУРЕ полный)", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/АдрМестаПриемаВыдача/АдресСтрока", "multiplies": "нет", "required": "необязательно", "comment": "текстовый показатель, поле может остаться пустым и не передаваться в XML Чем они отличаются?" @@ -588,7 +588,7 @@ "index": 66, "column_name": "Индекс", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/ /Индекс", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/АдрМестаПриемаВыдача/Индекс", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -597,7 +597,7 @@ "index": 67, "column_name": "Код страны", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/ КодОКСМ", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/АдрМестаПриемаВыдача/КодОКСМ", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -606,7 +606,7 @@ "index": 68, "column_name": "Код ОКАТО", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/ КодСубъектаПоОКАТО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/АдрМестаПриемаВыдача/КодСубъектаПоОКАТО", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -615,7 +615,7 @@ "index": 69, "column_name": "Район", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "Уточнить, какой именно пункт в XML подразумевается", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/АдрМестаПриемаВыдача/Район", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -624,7 +624,7 @@ "index": 70, "column_name": "Населенный пункт", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/Пункт", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/АдрМестаПриемаВыдача/Пункт", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -633,7 +633,7 @@ "index": 71, "column_name": "Улица", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/Улица", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/АдрМестаПриемаВыдача/Улица", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -642,7 +642,7 @@ "index": 72, "column_name": "Дом", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/Дом", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/АдрМестаПриемаВыдача/Дом", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -651,7 +651,7 @@ "index": 73, "column_name": "Корпус/строение", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "Уточнить, какой именно пункт в XML подразумевается", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/АдрМестаПриемаВыдача/Корп", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -659,8 +659,8 @@ { "index": 74, "column_name": "Квартира", - "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "Уточнить, какой именно пункт в XML подразумевается", + "xml_tag": "АдрМестаПриемаВыдача", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/АдрМестаПриемаВыдача/Оф", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -669,7 +669,7 @@ "index": 75, "column_name": "Наименование банка, обслуживающего участника операции", "xml_tag": "НаимКО", - "xml_path": "/СообщОперКО/СведПриемВыдача/ <АдрМестаПриемаВыдача/НаимКО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/НаимКО", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -677,8 +677,8 @@ { "index": 76, "column_name": "БИК банка, обслуживающего участника операции", - "xml_tag": "БИКК", - "xml_path": "/СообщОперКО/СведПриемВыдача/ <АдрМестаПриемаВыдача/БИККО", + "xml_tag": "БИККО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/СведВыдачаНалДС/БИККО", "multiplies": "нет", "required": "Обязательно", "comment": "Числовой показатель" @@ -687,7 +687,7 @@ "index": 77, "column_name": "IP-адрес сетевого оборудования плательщика", "xml_tag": "АдресIP", - "xml_path": "/СообщОперКО/СведенияПереводыДС/АдресIP", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/АдресIP", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -696,7 +696,7 @@ "index": 78, "column_name": "MAC-адрес сетевого оборудования плательщика", "xml_tag": "АдресMAC", - "xml_path": "/СообщОперКО/СведенияПереводыДС/АдресMAC", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияПереводыДС/АдресMAC", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -705,7 +705,7 @@ "index": 79, "column_name": "Код характера операции", "xml_tag": "КодХарактерОп", - "xml_path": "/СообщОперКО/СведенияВнесениеПолучениеНалДС/КодХарактерОп", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/КодХарактерОп", "multiplies": "нет", "required": "обязательное", "comment": "Числовой показатель" @@ -714,7 +714,7 @@ "index": 80, "column_name": "Номер счета клиента", "xml_tag": "НомерСчетКлиент", - "xml_path": "/СообщОперКО/СведенияВнесениеПолучениеНалДС/НомерСчетКлиент", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/НомерСчетКлиент", "multiplies": "нет", "required": "обязательное", "comment": "Числовой показатель" @@ -723,7 +723,7 @@ "index": 81, "column_name": "Номер платежной карты", "xml_tag": "НомерКарта", - "xml_path": "/СообщОперКО/СведенияКартаИнБанк/СведМестоОперация/дрМестаПриемаВыдача/НомерКарта", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/НомерКарта", "multiplies": "нет", "required": "необязательно", "comment": "Показатель в XML передается зашифрованными ***************, в отчет попадают цифры" @@ -732,7 +732,7 @@ "index": 82, "column_name": "Номер банкомата", "xml_tag": "ИдТерминал", - "xml_path": "/СообщОперКО/СведенияКартаИнБанк/СведМестоОперация/ИдТерминал", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/ИдТерминал", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -741,7 +741,7 @@ "index": 83, "column_name": "Адрес места приема наличных денежных средств ( в одной строке)", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/АдрМестаПриемаВыдача/АдресСтрока", "multiplies": "нет", "required": "необязательно", "comment": "текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -750,7 +750,7 @@ "index": 84, "column_name": "АДРЕС (ПО СТРУКТУРЕ полный)", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/АдрМестаПриемаВыдача/АдресСтрока", "multiplies": "нет", "required": "необязательно", "comment": "текстовый показатель, поле может остаться пустым и не передаваться в XML Чем они отличаются?" @@ -759,7 +759,7 @@ "index": 85, "column_name": "Индекс", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/ /Индекс", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/АдрМестаПриемаВыдача/Индекс", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -768,7 +768,7 @@ "index": 86, "column_name": "Код страны", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/ КодОКСМ", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/АдрМестаПриемаВыдача/КодОКСМ", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -777,7 +777,7 @@ "index": 87, "column_name": "Код ОКАТО", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/ КодСубъектаПоОКАТО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/АдрМестаПриемаВыдача/КодСубъектаПоОКАТО", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -786,7 +786,7 @@ "index": 88, "column_name": "Район", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "Уточнить, какой именно пункт в XML подразумевается", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/АдрМестаПриемаВыдача/Район", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -795,7 +795,7 @@ "index": 89, "column_name": "Населенный пункт", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/Пункт", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/АдрМестаПриемаВыдача/Пункт", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -804,7 +804,7 @@ "index": 90, "column_name": "Улица", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/Улица", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/АдрМестаПриемаВыдача/Улица", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -813,7 +813,7 @@ "index": 91, "column_name": "Дом", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/Дом", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/АдрМестаПриемаВыдача/Дом", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -822,7 +822,7 @@ "index": 92, "column_name": "Корпус/строение", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "Уточнить, какой именно пункт в XML подразумевается", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/АдрМестаПриемаВыдача/Корп", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -831,7 +831,7 @@ "index": 93, "column_name": "Квартира", "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "Уточнить, какой именно пункт в XML подразумевается", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/АдрМестаПриемаВыдача/Оф", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -840,7 +840,7 @@ "index": 94, "column_name": "Наименование банка, обслуживающего участника операции", "xml_tag": "НаимКО", - "xml_path": "/СообщОперКО/СведПриемВыдача/ <АдрМестаПриемаВыдача/НаимКО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/НаимКО", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -848,8 +848,8 @@ { "index": 95, "column_name": "БИК банка, обслуживающего участника операции", - "xml_tag": "БИКК", - "xml_path": "/СообщОперКО/СведПриемВыдача/ <АдрМестаПриемаВыдача/БИККО", + "xml_tag": "БИККО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/СведПриемВыдача/БИККО", "multiplies": "нет", "required": "Обязательно", "comment": "Числовой показатель" @@ -858,43 +858,43 @@ "index": 96, "column_name": "Код территории", "xml_tag": "КодТерИнГос", - "xml_path": "/СообщОперКО/ СведенияПереводыДС/КодТерИнГос", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведенияВнесениеПолучениеНалДС/КодТерИнГос", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не поступать в XML" }, { "index": 97, - "column_name": "Код страны", - "xml_tag": "дрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача/ КодОКСМ", + "column_name": "Номер банкомата", + "xml_tag": "ИдТерминал", + "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияКартаИнБанк/СведМестоОперация/ИдТерминал", "multiplies": "нет", "required": "необязательно", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" }, { "index": 98, - "column_name": "Адрес места приема наличных денежных средств", - "xml_tag": "АдрМестаПриемаВыдача", - "xml_path": "/СообщОперКО/СведПриемВыдача/АдрМестаПриемаВыдача", + "column_name": "Код страны", + "xml_tag": "КодОКСМ", + "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияКартаИнБанк/СведМестоОперация/АдрМестаПриемаВыдача/КодОКСМ", "multiplies": "нет", "required": "необязательно", "comment": "текстовый показатель, поле может остаться пустым и не передаваться в XML" }, { "index": 99, - "column_name": "Наименование банка, обслуживающего участника операции", - "xml_tag": "НаимКО", - "xml_path": "/СообщОперКО/СведПриемВыдача/ <АдрМестаПриемаВыдача/НаимКО", + "column_name": "Адрес места приема наличных денежных средств", + "xml_tag": "АдрМестаПриемаВыдача", + "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияКартаИнБанк/СведМестоОперация/АдрМестаПриемаВыдача/АдресСтрока", "multiplies": "нет", "required": "необязательно", - "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" + "comment": "текстовый показатель, поле может остаться пустым и не передаваться в XML" }, { "index": 100, "column_name": "Наименование банка, обслуживающего участника операции", "xml_tag": "НаимКО", - "xml_path": "/СообщОперКО/СведПриемВыдача/ <АдрМестаПриемаВыдача/НаимКО", + "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияКартаИнБанк/СведМестоОперация/НаимКО", "multiplies": "нет", "required": "необязательно", "comment": "Текстовый показатель, поле может остаться пустым и не передаваться в XML" @@ -903,7 +903,7 @@ "index": 101, "column_name": "БИК банка, обслуживающего участника операции", "xml_tag": "БИККО", - "xml_path": "/СообщОперКО/СведПриемВыдача/ <АдрМестаПриемаВыдача/БИККО", + "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияКартаИнБанк/СведМестоОперация/БИККО", "multiplies": "нет", "required": "Обязательно", "comment": "Числовой показатель" @@ -912,7 +912,7 @@ "index": 102, "column_name": "Номер платежной карты", "xml_tag": "НомерКарта", - "xml_path": "/СообщОперКО/СведенияКартаИнБанк/СведМестоОперация/дрМестаПриемаВыдача/НомерКарта", + "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияКартаИнБанк/НомерКарта", "multiplies": "нет", "required": "необязательно", "comment": "Показатель в XML передается зашифрованными ***************, в отчет попадают цифры" @@ -921,16 +921,16 @@ "index": 103, "column_name": "Сведения о держателе платежной карты", "xml_tag": "СведДержательКарты", - "xml_path": "/СообщОперКО/СведенияКартаИнБанк/СведДержательКарты", + "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияКартаИнБанк/СведДержательКарты", "multiplies": "нет", "required": "обязательно", - "comment": "|" + "comment": "" }, { "index": 104, "column_name": "Признак совершения операции с участием уп. сотрудника КО", "xml_tag": "ПризнакСотрудник", - "xml_path": "/СообщОперКО/СведенияКартаИнБанк/ПризнакСотрудник", + "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияКартаИнБанк/ПризнакСотрудник", "multiplies": "нет", "required": "обязательно", "comment": "Числовой показатель" @@ -939,16 +939,16 @@ "index": 105, "column_name": "Наименование иностранного банка", "xml_tag": "НаимИнБанк", - "xml_path": "/СообщОперКО/СведенияКартаИнБанк/НаимИнБанк", + "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияКартаИнБанк/НаимИнБанк", "multiplies": "нет", "required": "обязательно", - "comment": "|" + "comment": "" }, { "index": 106, "column_name": "СВИФТ", "xml_tag": "СВИФТИнБанк", - "xml_path": "СообщОперКО/ИнфорЧасть/СведКО/Операция/СведенияКартаИнБанк/СВИФТИнБанк", + "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/СвединияКартаИнБанк/СВИФТИнБанк", "multiplies": "нет", "required": "необязательно", "comment": "поле может остаться пустым и не передаваться в XML" @@ -957,7 +957,7 @@ "index": 107, "column_name": "Сведения о документе, подтверждающем совершение операции", "xml_tag": "СодДок", - "xml_path": "/ СообщОперКО/ ОснованиеОп/СодДок", + "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/ОснованиеОп/СодДок", "multiplies": "нет", "required": "необязательно", "comment": "поле может остаться пустым и не передаваться в XML" @@ -966,7 +966,7 @@ "index": 108, "column_name": "Код статуса участника операции (сделки)", "xml_tag": "СтатусУчастника", - "xml_path": "/ СообщОперКО/ УчастникОп/СтатусУчастника", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОп/СтатусУчастника", "multiplies": "нет", "required": "обязательно", "comment": "Числовой показатель" @@ -975,7 +975,7 @@ "index": 109, "column_name": "Тип участника", "xml_tag": "ТипУчастника", - "xml_path": "/ СообщОперКО/ УчастникОп/ТипУчастника", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОп/ТипУчастника", "multiplies": "нет", "required": "обязательно", "comment": "Числовой показатель" @@ -984,7 +984,7 @@ "index": 110, "column_name": "Признак резидента", "xml_tag": "ПризнУчастника", - "xml_path": "/ СообщОперКО/ УчастникОп/ПризнУчастника", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОп/ПризнУчастника", "multiplies": "нет", "required": "обязательно", "comment": "Числовой показатель" @@ -993,7 +993,7 @@ "index": 111, "column_name": "Признак участника операции (сделки)", "xml_tag": "ПризнКлиент", - "xml_path": "/ СообщОперКО/ УчастникОп/ПризнКлиент", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОп/ПризнКлиент", "multiplies": "нет", "required": "обязательно", "comment": "Числовой показатель" @@ -1002,7 +1002,7 @@ "index": 112, "column_name": "Ид уч операции, включенного в Перечень,Решение, и (или) пер. ФРОМУ", "xml_tag": "КодЮЛФЛ", - "xml_path": "/ СообщОперКО/ УчастникОп/КодЮЛФЛ", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОп/КодЮЛФЛ", "multiplies": "нет", "required": "необязательный", "comment": "Числовой показатель, поле может остаться пустым и не передаваться в XML" @@ -1010,8 +1010,8 @@ { "index": 113, "column_name": "Наименование участника операции", - "xml_tag": "для Юр лиц : НаимЮЛ для ИСБОЮЛ : ПолноеНаимИНБОЮЛ", - "xml_path": "для Юр лиц : / СообщОперКО/ УчастникЮЛ/СведЮЛ/НаимЮЛ для ИСБОЮЛ: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/полноеНаимИНБОЮЛ", + "xml_tag": "НаимЮЛ|ПолноеНаимИНБОЮЛ", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/НаимЮЛ/ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/полноеНаимИНБОЮЛ", "multiplies": "нет", "required": "необязательный", "comment": "поле может остаться пустым и не передаваться в XML" @@ -1020,7 +1020,7 @@ "index": 114, "column_name": "ФИО по структуре (полностью) разделять поля запятыми", "xml_tag": "ФИОСтрока", - "xml_path": "/ СообщОперКО / УчастникФЛИП//СведФЛИП/ФИОФЛИП/ФИОСтрока", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/ФИОСтрока", "multiplies": "нет", "required": "необязательный", "comment": "поле может остаться пустым и не передаваться в XML" @@ -1029,7 +1029,7 @@ "index": 115, "column_name": "Фамилия", "xml_tag": "Фам", - "xml_path": "/ СообщОперКО / УчастникФЛИП/ СведФЛИП/ФИОФЛИП/Фам", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Фам", "multiplies": "нет", "required": "необязательный", "comment": "поле может остаться пустым и не передаваться в XML" @@ -1038,7 +1038,7 @@ "index": 116, "column_name": "Имя", "xml_tag": "Имя", - "xml_path": "/ СообщОперКО / УчастникФЛИП/ СведФЛИП/ФИОФЛИП/Имя", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Имя", "multiplies": "нет", "required": "необязательный", "comment": "поле может остаться пустым и не передаваться в XML" @@ -1047,7 +1047,7 @@ "index": 117, "column_name": "Отчество", "xml_tag": "Отч", - "xml_path": "/ СообщОперКО / УчастникФЛИП/ СведФЛИП/ФИОФЛИП/Отч", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Отч", "multiplies": "нет", "required": "необязательный", "comment": "поле может остаться пустым и не передаваться в XML" @@ -1056,7 +1056,7 @@ "index": 118, "column_name": "ФИО (в одной строке)", "xml_tag": "ФИОСтрока", - "xml_path": "/ СообщОперКО / УчастникФЛИП//СведФЛИП/ФИОФЛИП/ФИОСтрока", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/ФИОСтрока", "multiplies": "нет", "required": "необязательный", "comment": "поле может остаться пустым и не передаваться в XML Уточнить это одно и то же с пунктом 114" @@ -1065,7 +1065,7 @@ "index": 119, "column_name": "Идентификатор ППЦР", "xml_tag": "ПризнУчастника", - "xml_path": "/СообщОперКО/ УчастникОп/ПризнУчастника", + "xml_path": "/СообщОперКО/нформЧасть/СведКО/Операция/УчастникОП/ПризнУчастника", "multiplies": "нет", "required": "обязательно", "comment": "числовой показатель" @@ -1073,17 +1073,17 @@ { "index": 120, "column_name": "ИНН", - "xml_tag": "ИННЮЛ (для юр.лиц) / ИННФЛИП (для ФЛ,ИП, ФЛЧП)", - "xml_path": "Путь для юр лиц - /СообщОперКО/УчастникЮЛ/СведЮЛ/ИННЮЛ Путь для ФЛ,ИП, ФЛЧП - /СообщОперКО /УчастникФЛИП/ СведФЛИП/ФИОФЛИП/ИННФЛИП", + "xml_tag": "ИННЮЛ|ИННФЛИП", + "xml_path": " /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/ИННЮЛ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ИННФЛИП", "multiplies": "нет", "required": "обязательно", - "comment": "|" + "comment": "" }, { "index": 121, "column_name": "ОГРН", - "xml_tag": "ЮЛ: ОГРНЮЛ ИП: ОГРНИП ФЛЧП: РегнНомер ИСБОЮЛ: РегИНБОЮЛ |", - "xml_path": "/СообщОперКО/УчастникЮЛ/СведЮЛ/ОГРНЮЛ СообщОперКО/УчастникФЛИП/СведФЛИП/ФИОФЛИП/ОГРНИП ФЛЧП: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/РегнНомер ИСБОЮЛ: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СвебИНБОЮЛ/РегИНБОЮЛ (но внутри него 2 значения)", + "xml_tag": "ОГРНЮЛ|ОГРНИП|РегнНомер|РегИНБОЮЛ", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/ОГРНЮЛ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ОГРНИП | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/РегнНомер | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СвебИНБОЮЛ/РегИНБОЮЛ", "multiplies": "нет", "required": "обязательно", "comment": "Уточнить, что значит \"(совокупность показателей таб.2.11 1)\"" @@ -1091,17 +1091,17 @@ { "index": 122, "column_name": "КПП (ПРИЗНАК ИСБОЮЛ) /Пр ид-ии ФЛ:", - "xml_tag": "КППЮЛ(для юр. лиц), ИдентификацияФЛ (ФЛ,ИП,ФЛЧП), ПризнакОргФормаИНБОЮЛ (для ИСБОЮЛ)", - "xml_path": "Путь для юр. лиц - /СообщОперКО/УчастникОп/УчастникЮЛ/СведЮЛ/КППЮЛ ФЛ,ИП,ФЛЧП: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/ИдентификацияФЛ ИНБОЮЛ: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/ПризнакОргФормаИНБОЮЛ", + "xml_tag": "КППЮЛ|ИдентификацияФЛ|ПризнакОргФормаИНБОЮЛ", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОп/УчастникЮЛ/СведЮЛ/КППЮЛ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/ИдентификацияФЛ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/ПризнакОргФормаИНБОЮЛ", "multiplies": "нет", "required": "обязательно", - "comment": "|" + "comment": "" }, { "index": 123, "column_name": "Дата государственной регистрации :/ Дата рождения:", - "xml_tag": "ДатаРегЮЛ ДатаРождения", - "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/ДатаРегЮЛ /СообщОперКО/СведДокУдЛичн/ДатаРождения", + "xml_tag": "ДатаРегЮЛ|ДатаРождения", + "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/ДатаРегЮЛ | СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СветФЛИП/ДатаРождения", "multiplies": "нет", "required": "необязательно", "comment": "Показатель в формате ДД/ММ/ГГГГ." @@ -1109,17 +1109,17 @@ { "index": 124, "column_name": "Признак филиала: / Тип ФЛЧП", - "xml_tag": "ПризнакПубЛицо", - "xml_path": "/СообщОперКО/СведДокУдЛичн/ПризнакПубЛицо", + "xml_tag": "ПризнакФлЮЛ|ТипФЛЧастнаяПрактика", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/ПризнакФлЮЛ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчпстникФЛИП/СветФЛИП/ТипФЛЧастнаяПрактика", "multiplies": "нет", "required": "обязательно", - "comment": "|" + "comment": "" }, { "index": 125, "column_name": "МС/СНИЛС/Номер телефона", - "xml_tag": "СНИЛСФЛ ПолисНомер ТелефонНомер", - "xml_path": "СНИЛСФЛ: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СНИЛСФЛ ПолисНомер: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ПолисНомер ТелефонНомер: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ТелефонНомер", + "xml_tag": "СНИЛСФЛ|ПолисНомер|ТелефонНомер", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СНИЛСФЛ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ПолисНомер | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ТелефонНомер", "multiplies": "нет", "required": "необязательно", "comment": "Все показатели записываются в одном столбце, поле может оставаться пустым." @@ -1128,7 +1128,7 @@ "index": 126, "column_name": "Код страны гражданства", "xml_tag": "КодОКСМ", - "xml_path": "/СообщОперКО/ УчастникОп/СведенияКартаИнБанк/СведМестоОперация/дрМестаПриемаВыдача/КодОКСМ", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/КодОКСМ", "multiplies": "нет", "required": "обязательно", "comment": "числовой показатель. Пример СНИЛС: | ОМС: | Номер телефона:" @@ -1136,8 +1136,8 @@ { "index": 127, "column_name": "ДУЛ (структура полностью)", - "xml_tag": "ВидДокКод ИноеНаименованиеДок СерияДок НомДок ДатВыдачиДок КемВыданДок КодПодр СведДокУдЛичн", - "xml_path": "Общий путь, внутри которого все лежит: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокУдЛичн |", + "xml_tag": "ВидДокКод|ИноеНаименованиеДок|СерияДок|НомДок|ДатВыдачиДок|КемВыданДок|КодПодр|СведДокУдЛичн", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокУдЛичн", "multiplies": "нет", "required": "обязательно", "comment": "Данные собранные в одном поле. Не все теги могут быть переданы в XML пример Вид документа: 21 | Серия документа: 0104 | Номер документа: 476635 | Орган, выдавший документ: Отделом внутренних дел Красногорского района Алтайского края | Код подразделения: 222-022 | Дата выдачи: 23/08/2005" @@ -1146,7 +1146,7 @@ "index": 128, "column_name": "Признак ДУЛ", "xml_tag": "ДокУдЛичн", - "xml_path": "/СообщОперКО / УчастникФЛИП/СведФЛИП/ФИОФЛИП/ДокУдЛичн", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ДокУдЛичн", "multiplies": "нет", "required": "обязательно", "comment": "Данные могут оставаться пустыми" @@ -1155,7 +1155,7 @@ "index": 129, "column_name": "Код вида документа/Наименование", "xml_tag": "ВидДокКод", - "xml_path": "/СообщОперКО / СведДокУдЛичн/ВидДокКод", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокУдЛичн/ВидДокКод", "multiplies": "нет", "required": "обязательно", "comment": "числовой показатель." @@ -1164,7 +1164,7 @@ "index": 130, "column_name": "Серия", "xml_tag": "СерияДок", - "xml_path": "/СообщОперКО / СведДокУдЛичн/СерияДок", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокУдЛичн/СерияДок", "multiplies": "нет", "required": "обязательно", "comment": "числовой показатель" @@ -1173,7 +1173,7 @@ "index": 131, "column_name": "Номер", "xml_tag": "НомДок", - "xml_path": "/СообщОперКО / СведДокУдЛичн/НомДок", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокУдЛичн/НомДок", "multiplies": "нет", "required": "обязательно", "comment": "числовой показатель" @@ -1182,7 +1182,7 @@ "index": 132, "column_name": "Орган, выдавший документ", "xml_tag": "КемВыданДок", - "xml_path": "СообщОперКО / СведДокУдЛичн/КемВыданДок", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокУдЛичн/КемВыданДок", "multiplies": "нет", "required": "необязательно", "comment": "текст" @@ -1190,17 +1190,17 @@ { "index": 133, "column_name": "КП", - "xml_tag": "|", - "xml_path": "|", - "multiplies": "|", - "required": "|", - "comment": "|" + "xml_tag": "КодПодр", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокУдЛичн/КодПодр", + "multiplies": "", + "required": "", + "comment": "" }, { "index": 134, "column_name": "Дата выдачи", "xml_tag": "ДатВыдачиДок", - "xml_path": "СообщОперКО / СведДокУдЛичн/ДатВыдачиДок", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/ММ/ГГГГ/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокУдЛичн/ДатВыдачиДок", "multiplies": "нет", "required": "обязательно", "comment": "дата, формат ДД/ММ/ГГГГ" @@ -1209,52 +1209,52 @@ "index": 135, "column_name": "Код вида документа/Наименование", "xml_tag": "ВидДокКод", - "xml_path": "СообщОперКО / СведДокУдЛичн/ВидДокКод", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокУдЛичн/ВидДокКод", "multiplies": "нет", "required": "обязательно", - "comment": "|" + "comment": "" }, { "index": 136, "column_name": "Серия", "xml_tag": "СерияДокПреб", - "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокПреб/СерияДокПреб", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокПреб/СерияДокПреб", "multiplies": "нет", "required": "обязательно", - "comment": "|" + "comment": "" }, { "index": 137, "column_name": "Номер", "xml_tag": "НомДокПреб", - "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокПреб/НомДокПреб", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокПреб/НомДокПреб", "multiplies": "нет", "required": "обязательно", - "comment": "|" + "comment": "" }, { "index": 138, "column_name": "Дата начала/окончания срока", "xml_tag": "НачПравПреб", - "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокПреб/НачПравПреб", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/СведДокПреб/НачПравПреб", "multiplies": "нет", "required": "обязательно", - "comment": "|" + "comment": "" }, { "index": 139, "column_name": "Сведения миграционной карты", - "xml_tag": "не поняла где найти в таблице ворд", - "xml_path": "|", - "multiplies": "|", - "required": "|", - "comment": "|" + "xml_tag": "", + "xml_path": "", + "multiplies": "", + "required": "", + "comment": "" }, { "index": 140, "column_name": "Адрес в одной строкеи ( начинать с \", , , , , \")", "xml_tag": "АдресСтрока", - "xml_path": "СообщОперКО / УчастникФЛИП/АдресСтрока", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/АдресСтрока | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФлип/СведФЛИП/АдрРег/АдресСтрока | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/МестоДеятельностьИНБОЮЛ/АдресСтрока", "multiplies": "нет", "required": "Обязательно", "comment": "Текстовое поле" @@ -1262,8 +1262,8 @@ { "index": 141, "column_name": "Адрес по структуре (целый)", - "xml_tag": "Индекс КодОКСМ КодСубъектаПоОКАТО Район Пункт Улица Дом Корп Оф", - "xml_path": "СообщОперКО / АдрРег/Индекс СообщОперКО / АдрРег/КодОКСМ СообщОперКО / АдрРег/КодСубъектаПоОКАТО СообщОперКО / АдрРег/Район СообщОперКО / АдрРег/Пункт СообщОперКО / АдрРег/Улица СообщОперКО / АдрРег/Дом СообщОперКО / АдрРег/Корп СообщОперКО / АдрРег/Оф", + "xml_tag": "Индекс|КодОКСМ|КодСубъектаПоОКАТО|Район|Пункт|Улица|Дом|Корп|Оф", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФлип/СведФЛИП/АдрРег/ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/МестоДеятельностьИНБОЮЛ/", "multiplies": "нет", "required": "Обязательно", "comment": "Текстовое поле. Пример заполнения 674500, 643, , 76, КРАЙ ЗАБАЙКАЛЬСКИЙ, Оловяннинский р-н, Оловянная пгт, Новая ул, 5, , 1," @@ -1272,7 +1272,7 @@ "index": 142, "column_name": "Индекс", "xml_tag": "Индекс", - "xml_path": "СообщОперКО / АдрРег/Индекс", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Индекс | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФлип/СведФЛИП/АдрРег/Индекс | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/МестоДеятельностьИНБОЮЛ/Индекс", "multiplies": "нет", "required": "Обязательно", "comment": "Текст" @@ -1281,7 +1281,7 @@ "index": 143, "column_name": "Код страны", "xml_tag": "КодОКСМ", - "xml_path": "СообщОперКО / АдрРег/КодОКСМ", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/КодОКСМ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФлип/СведФЛИП/АдрРег/КодОКСМ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/МестоДеятельностьИНБОЮЛ/КодОКСМ", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1290,7 +1290,7 @@ "index": 144, "column_name": "Код ОКАТО", "xml_tag": "КодСубъектаПоОКАТО", - "xml_path": "СообщОперКО / АдрРег/КодСубъектаПоОКАТО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/КодСубъектаПоОКАТО | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФлип/СведФЛИП/АдрРег/КодСубъектаПоОКАТО | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/МестоДеятельностьИНБОЮЛ/КодСубъектаПоОКАТО", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1299,7 +1299,7 @@ "index": 145, "column_name": "Район", "xml_tag": "Район", - "xml_path": "СообщОперКО / АдрРег/Район", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Район | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФлип/СведФЛИП/АдрРег/Район | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/МестоДеятельностьИНБОЮЛ/Район", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1308,7 +1308,7 @@ "index": 146, "column_name": "Населенный пункт", "xml_tag": "Пункт", - "xml_path": "СообщОперКО / АдрРег/Пункт", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Пункт | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФлип/СведФЛИП/АдрРег/Пункт | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/МестоДеятельностьИНБОЮЛ/Пункт", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1317,7 +1317,7 @@ "index": 147, "column_name": "Улица", "xml_tag": "Улица", - "xml_path": "СообщОперКО / АдрРег/Улица", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Улица | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФлип/СведФЛИП/АдрРег/Улица | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/МестоДеятельностьИНБОЮЛ/Улица", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1326,7 +1326,7 @@ "index": 148, "column_name": "Дом", "xml_tag": "Дом", - "xml_path": "СообщОперКО / АдрРег/Дом", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Дом | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФлип/СведФЛИП/АдрРег/Дом | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/МестоДеятельностьИНБОЮЛ/Дом", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1335,7 +1335,7 @@ "index": 149, "column_name": "Корпус/строение", "xml_tag": "Корп", - "xml_path": "СообщОперКО / АдрРег/Корп", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Корп | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФлип/СведФЛИП/АдрРег/Корп | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/МестоДеятельностьИНБОЮЛ/Корп", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1344,7 +1344,7 @@ "index": 150, "column_name": "Квартира", "xml_tag": "Оф", - "xml_path": "СообщОперКО / АдрРег/Оф", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Оф | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФлип/СведФЛИП/АдрРег/Оф | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/МестоДеятельностьИНБОЮЛ/Оф", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1353,7 +1353,7 @@ "index": 151, "column_name": "Место государственной регистрации ( в одной строке)", "xml_tag": "АдресСтрока", - "xml_path": "СообщОперКО / УчастникФЛИП/АдресСтрока", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/АдресСтрока", "multiplies": "нет", "required": "Обязательно", "comment": "Текстовое поле" @@ -1361,8 +1361,8 @@ { "index": 152, "column_name": "Место государственной регистрации ( по структуре)", - "xml_tag": "Индекс КодОКСМ КодСубъектаПоОКАТО Район Пункт Улица Дом Корп Оф", - "xml_path": "СообщОперКО / АдрРег/Индекс СообщОперКО / АдрРег/КодОКСМ СообщОперКО / АдрРег/КодСубъектаПоОКАТО СообщОперКО / АдрРег/Район СообщОперКО / АдрРег/Пункт СообщОперКО / АдрРег/Улица СообщОперКО / АдрРег/Дом СообщОперКО / АдрРег/Корп СообщОперКО / АдрРег/Оф", + "xml_tag": "Индекс|КодОКСМ|КодСубъектаПоОКАТО|Район|Пункт|Улица|Дом|Корп|Оф", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/", "multiplies": "нет", "required": "Обязательно", "comment": "Текстовое поле. Пример заполнения 674500, 643, , 76, КРАЙ ЗАБАЙКАЛЬСКИЙ, Оловяннинский р-н, Оловянная пгт, Новая ул, 5, , 1," @@ -1371,7 +1371,7 @@ "index": 153, "column_name": "Дополнительная информация об участнике операции (сделки)", "xml_tag": "КомментУчастник", - "xml_path": "СообщОперКО/ УчастникОп/КомментУчастник", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/КомментУчастник", "multiplies": "нет", "required": "обязательно", "comment": "текстовое поле" @@ -1380,7 +1380,7 @@ "index": 154, "column_name": "Тип ЕИО/Бенефициара", "xml_tag": "ТипЕИО/ИдентБенефициар", - "xml_path": "ТипЕИО: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ТипЕИО ИдентБенефициар: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ИдентБенефициар", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ТипЕИО | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ИдентБенефициар", "multiplies": "нет", "required": "обязательно", "comment": "поле может оставаться пустым" @@ -1389,7 +1389,7 @@ "index": 155, "column_name": "Признак ЕИО/Бенефициара", "xml_tag": "ПризнЕИО/ПризнБенефициар", - "xml_path": "ПризнЕИО: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ПризнЕИО ПризнБенефициар: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ПризнБенефициар", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ПризнЕИО | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ПризнБенефициар", "multiplies": "нет", "required": "обязательно", "comment": "поле может оставаться пустым" @@ -1398,16 +1398,16 @@ "index": 156, "column_name": "Наименование ЮЛ/ФИО ( по структуре полностью через \",\")", "xml_tag": "НаимЮЛ/ФИОФЛИП/НаимУчредитель", - "xml_path": "НаимЮЛ: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/НаимЮЛ ФИОФЛИП: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Фам (Имя) (Отч) НаимУчредитель: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/НаимУчредитель/ и тут берем либо /ЮрЛицо либо /ФизЛицо/Фам (Имя) (Отч)", - "multiplies": "|", - "required": "|", - "comment": "|" + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/НаимЮЛ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Фам | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Имя | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Отч | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/НаимУчредитель/ЮрЛицо | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/НаимУчредитель/ФизЛицо/Фам | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/НаимУчредитель/ФизЛицо/Имя | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/НаимУчредитель/ФизЛицо/Отч", + "multiplies": "", + "required": "", + "comment": "" }, { "index": 157, "column_name": "ФИО ( в одной строке)", "xml_tag": "ФИОФЛИП", - "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/ФИОСтрока", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/ФИОСтрока", "multiplies": "нетнет", "required": "обязательнообязательно", "comment": "Текстовый формат. Пример: Иванов Иван ИвановичТекстовый формат. Пример: Иванов Иван Иванович" @@ -1416,7 +1416,7 @@ "index": 158, "column_name": "Фамилия", "xml_tag": "Фам", - "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Фам", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Фам", "multiplies": "нет", "required": "условно необязательныйусловно необязательный", "comment": "в какие части XML смотреть для верного раскладывания данных" @@ -1425,25 +1425,25 @@ "index": 159, "column_name": "Имя", "xml_tag": "Имя", - "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Имя", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Имя", "multiplies": "нет", "required": "условно необязательный", - "comment": "|" + "comment": "" }, { "index": 160, "column_name": "Отчество", "xml_tag": "Отч", - "xml_path": "СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Очт", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ФИОФЛИП/Отч", "multiplies": "нет", "required": "условно необязательный", - "comment": "|" + "comment": "" }, { "index": 161, "column_name": "ИНН ЕИО/Бенефициара", - "xml_tag": "ИННЮЛ/ИННФЛИП |", - "xml_path": "СообщОперКО/ УчастникЮЛ/СведЮЛ/ИННЮЛ УчастникФЛИП/СведФЛИП/ФИОФЛИП/ИННФЛИП |", + "xml_tag": "ИННЮЛ/ИННФЛИП", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/ИННЮЛ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ИННФЛИП", "multiplies": "нет", "required": "обязательно", "comment": "Поле может оставаться пустым. Для юр лиц используется \"ИННЮЛ\" Для физ лиц и ИП \"ИННФЛИП\"" @@ -1451,8 +1451,8 @@ { "index": 162, "column_name": "ОГРН ЕИО/Бенефициара", - "xml_tag": "ОГРНЮЛ ОГРНИП ТипФЛЧастнаяПрактика", - "xml_path": "ОГРНЮЛ: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/ОГРНЮЛ ОГРНИП: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ОГРНИП ТипФЛЧастнаяПрактика: СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ТипФЛЧастнаяПрактика", + "xml_tag": "ОГРНЮЛ|ОГРНИП|ТипФЛЧастнаяПрактика", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/ОГРНЮЛ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ОГРНИП | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ТипФЛЧастнаяПрактика", "multiplies": "нет", "required": "обязательно", "comment": "Поле может оставаться пустым. | |" @@ -1460,8 +1460,8 @@ { "index": 163, "column_name": "Иные сведения ЕИО/Бенефициара", - "xml_tag": "СНИЛСФЛ - нет пути в XML ПолисНомер - нет пути в XML ТелефонНомер - нет пути в XML ДатаРождения - нет пути в XML Для ФЛЧП: ТипФЛЧастнаяПрактика - нет пути в XML |", - "xml_path": "не ясно откуда именно брать данные, т.к. у всех (ФЛ,ИП,ЮЛ,ИНБОЮЛ) если бенефициары", + "xml_tag": "", + "xml_path": "", "multiplies": "нет нет", "required": "Обязательно Обязательно", "comment": "Текстовое поле, может оставаться пустым и не передаваться в XML Текстовое поле, может оставаться пустым и не передаваться в XML |" @@ -1469,8 +1469,8 @@ { "index": 164, "column_name": "Код страны гражданства ЕИО/Бенефициара", - "xml_tag": "2 ?", - "xml_path": "?", + "xml_tag": "", + "xml_path": "", "multiplies": "нет", "required": "Обязательно", "comment": "Уточнить, что подразумевается под цифрой \"2\"" @@ -1479,7 +1479,7 @@ "index": 165, "column_name": "Признак принадлежности к публичным лицам ЕИО/Бенефициара", "xml_tag": "ПризнакПубЛицо", - "xml_path": "СообщОперКО / СведДокУдЛичн/ПризнакПубЛицо", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникФЛИП/СведФЛИП/ПризнакПубЛицо", "multiplies": "нет", "required": "Обязательно", "comment": "Числовое поле, может оставаться пустым и не передаваться в XML" @@ -1487,8 +1487,8 @@ { "index": 166, "column_name": "Адрес ЮЛ/ Адрес места жительства (места нахождения) ЕИО/Бенефициара (одной строкой)", - "xml_tag": "АдресСтрока для ИСБОЮЛ: АдрУчредитель нет пути в XML", - "xml_path": "СообщОперКО / УчастникФЛИП/СведФЛИП/АдрРег/АдресСтрока", + "xml_tag": "АдресСтрока|АдрУчредитель", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/АдресСтрока | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/АдрУчредитель/АдресСтрока", "multiplies": "нет", "required": "Обязательно", "comment": "Текстовое поле , может оставаться пустым" @@ -1496,8 +1496,8 @@ { "index": 167, "column_name": "Адрес ЮЛ/ Адрес места жительства (места нахождения) ЕИО/Бенефициара (структура полностью)", - "xml_tag": "Индекс КодОКСМ КодСубъектаПоОКАТО Район Пункт Улица Дом Корп Оф для ИСБОЮЛ - АдрУчредитель - нет пути в XML", - "xml_path": "СообщОперКО / АдрРег/Индекс СообщОперКО / АдрРег/КодОКСМ СообщОперКО / АдрРег/КодСубъектаПоОКАТО СообщОперКО / АдрРег/Район СообщОперКО / АдрРег/Пункт СообщОперКО / АдрРег/Улица СообщОперКО / АдрРег/Дом СообщОперКО / АдрРег/Корп СообщОперКО / АдрРег/Оф", + "xml_tag": "Индекс|КодОКСМ|КодСубъектаПоОКАТО|Район|Пункт|Улица|Дом|Корп|Оф|АдрУчредитель", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/АдрУчредитель", "multiplies": "нет", "required": "Обязательно", "comment": "Текстовое поле, не все показатели моут присутствовать в XML Пример заполнения: 121467, 643, , 45, Г МОСКВА, , Москва г, Молодогвардейская ул, 8, 1, КВ. 28, |" @@ -1506,7 +1506,7 @@ "index": 168, "column_name": "Индекс", "xml_tag": "Индекс", - "xml_path": "СообщОперКО / АдрРег/Индекс", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Индекс | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/АдрУчредитель/Индекс", "multiplies": "нет", "required": "Обязательно", "comment": "Текст" @@ -1515,7 +1515,7 @@ "index": 169, "column_name": "Код страны", "xml_tag": "КодОКСМ", - "xml_path": "СообщОперКО / АдрРег/КодОКСМ", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/КодОКСМ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/АдрУчредитель/КодОКСМ", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1524,7 +1524,7 @@ "index": 170, "column_name": "ОКАТО", "xml_tag": "КодСубъектаПоОКАТО", - "xml_path": "СообщОперКО / АдрРег/КодСубъектаПоОКАТО", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/КодСубъектаПоОКАТО | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/АдрУчредитель/КодСубъектаПоОКАТО", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1533,7 +1533,7 @@ "index": 171, "column_name": "Район", "xml_tag": "Район", - "xml_path": "СообщОперКО / АдрРег/Район", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Район | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/АдрУчредитель/Район", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1542,7 +1542,7 @@ "index": 172, "column_name": "Населенный пункт", "xml_tag": "Пункт", - "xml_path": "СообщОперКО / АдрРег/Пункт", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Пункт | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/АдрУчредитель/Пункт", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1551,7 +1551,7 @@ "index": 173, "column_name": "Улица", "xml_tag": "Улица", - "xml_path": "СообщОперКО / АдрРег/Улица", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Улица | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/АдрУчредитель/Улица", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1560,7 +1560,7 @@ "index": 174, "column_name": "Дом", "xml_tag": "Дом", - "xml_path": "СообщОперКО / АдрРег/Дом", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Дом | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/АдрУчредитель/Дом", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1569,7 +1569,7 @@ "index": 175, "column_name": "Корпус", "xml_tag": "Корп", - "xml_path": "СообщОперКО / АдрРег/Корп", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Корп | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/АдрУчредитель/Корп", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1578,7 +1578,7 @@ "index": 176, "column_name": "Квартира", "xml_tag": "Оф", - "xml_path": "СообщОперКО / АдрРег/Оф", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЮЛ/АдрРегЮЛ/Оф | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникИНБОЮЛ/СведИНБОЮЛ/Учредитель/АдрУчредитель/Оф", "multiplies": "нет", "required": "Обязательно", "comment": "текст" @@ -1587,7 +1587,7 @@ "index": 177, "column_name": "Место государственной регистрации ЕИО/Бенефициара (одной строкой)", "xml_tag": "АдресСтрока", - "xml_path": "СообщОперКО / УчастникФЛИП/АдресСтрока", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ЮЛЕИО/АдресСтрока | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/АдрРег/АдресСтрока", "multiplies": "нет", "required": "Обязательно", "comment": "Текстовое поле" @@ -1595,8 +1595,8 @@ { "index": 178, "column_name": "Место государственной регистрации ЕИО/Бенефициара (структура полностью)", - "xml_tag": "Индекс КодОКСМ КодСубъектаПоОКАТО Район Пункт Улица Дом Корп Оф |", - "xml_path": "СообщОперКО / АдрРег/Индекс СообщОперКО / АдрРег/КодОКСМ СообщОперКО / АдрРег/КодСубъектаПоОКАТО СообщОперКО / АдрРег/Район СообщОперКО / АдрРег/Пункт СообщОперКО / АдрРег/Улица СообщОперКО / АдрРег/Дом СообщОперКО / АдрРег/Корп СообщОперКО / АдрРег/Оф |", + "xml_tag": "Индекс|КодОКСМ|КодСубъектаПоОКАТО|Район|Пункт|Улица|Дом|Корп|Оф", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ЮЛЕИО/АдрРегЮЛ/ | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/АдрРег/", "multiplies": "нет", "required": "Обязательно", "comment": "Текстовое поле, не все показатели моут присутствовать в XML Пример заполнения: 121467, 643, , 45, Г МОСКВА, , Москва г, Молодогвардейская ул, 8, 1, КВ. 28, |" @@ -1604,8 +1604,8 @@ { "index": 179, "column_name": "ДУЛ ЕИО/Бенефициара (структура полностью)", - "xml_tag": "ВидДокКод ИноеНаименованиеДок СерияДок НомДок ДатВыдачиДок КемВыданДок КодПодр СведДокУдЛичн", - "xml_path": "/СообщОперКО / СведДокУдЛичн/ВидДокКод ИноеНаименованиеДок - путь не нашла /СообщОперКО/ ОснованиеОп/НомДок СообщОперКО / СведДокУдЛичн/ДатВыдачиДок СообщОперКО / СведДокУдЛичн/КемВыданДок СообщОперКО / СведДокУдЛичн/КодПодр СообщОперКО / СведДокУдЛичн/СведДокУдЛичн |", + "xml_tag": "ВидДокКод|ИноеНаименованиеДок|СерияДок|НомДок|ДатВыдачиДок|КемВыданДок|КодПодр|СведДокУдЛич", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/СведДокУдЛичн/ВидДокКод | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокУдЛичн", "multiplies": "нет", "required": "обязательно", "comment": "Данные собранные в одном поле. Не все теги могут быть переданы в XML пример Вид документа: 21 Серия документа: 0104 Номер документа: 476635 Орган, выдавший документ: Отделом внутренних дел Красногорского района Алтайского края Код подразделения: 222-022Дата выдачи: 23/08/2005 | Серия документа: 0104 | Номер документа: 476635 | Орган, выдавший документ: Отделом внутренних дел Красногорского района Алтайского края | Код подразделения: 222-022 | Дата выдачи: 23/08/2005" @@ -1614,7 +1614,7 @@ "index": 180, "column_name": "Признак ДУЛ", "xml_tag": "ДокУдЛичн", - "xml_path": "/СообщОперКО / УчастникФЛИП/СведФЛИП/ФИОФЛИП/ДокУдЛичн /", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/Док/УдЛичн | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/ДокУдЛичн", "multiplies": "нет", "required": "обязательно", "comment": "Данные могут оставаться пустыми" @@ -1623,7 +1623,7 @@ "index": 181, "column_name": "Код вида документа/Наименование", "xml_tag": "ВидДокКод", - "xml_path": "/СообщОперКО / СведДокУдЛичн/ВидДокКод /", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/СведДокУдЛичн/ВидДокКод | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокУдЛичн/ВидДокКод", "multiplies": "нет", "required": "обязательно", "comment": "числовой показатель." @@ -1632,7 +1632,7 @@ "index": 182, "column_name": "Серия", "xml_tag": "СерияДок", - "xml_path": "/СообщОперКО / СведДокУдЛичн/СерияДок /", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/СведДокУдЛичн/СерияДок | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокУдЛичн/СерияДок", "multiplies": "нет", "required": "обязательно", "comment": "числовой показатель" @@ -1641,7 +1641,7 @@ "index": 183, "column_name": "Номер", "xml_tag": "НомДок", - "xml_path": "/СообщОперКО / СведДокУдЛичн/НомДок", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/СведДокУдЛичн/НомДок | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокУдЛичн/НомДок", "multiplies": "нет", "required": "обязательно", "comment": "числовой показатель" @@ -1650,7 +1650,7 @@ "index": 184, "column_name": "Орган, выдавший документ", "xml_tag": "КемВыданДок", - "xml_path": "СообщОперКО / СведДокУдЛичн/КемВыданДок", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/СведДокУдЛичн/КемВыданДок | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокУдЛичн/КемВыданДок", "multiplies": "нет", "required": "необязательно", "comment": "текст" @@ -1658,17 +1658,17 @@ { "index": 185, "column_name": "КП", - "xml_tag": "|", - "xml_path": "|", - "multiplies": "|", - "required": "|", - "comment": "|" + "xml_tag": "КодПодр", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/СведДокУдЛичн/КодПодр | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокУдЛичн/КодПодр", + "multiplies": "", + "required": "", + "comment": "" }, { "index": 186, "column_name": "Дата выдачи", "xml_tag": "ДатВыдачиДок", - "xml_path": "СообщОперКО / СведДокУдЛичн/ДатВыдачиДок", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/СведДокУдЛичн/ДатВыдачиДок | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокУдЛичн/ДатВыдачиДок", "multiplies": "нет", "required": "обязательно", "comment": "дата, формат ДД/ММ/ГГГГ" @@ -1676,8 +1676,8 @@ { "index": 187, "column_name": "Подтверждающий документ (структура полностью)", - "xml_tag": "ВидДокКод ИноеНаименованиеДок путь не нашла Серnf,kияДокПреб - не понятный тэг НомДокПреб - путь не нашла НачПравПреб - путь не нашла ОкончПравПреб - путь не нашла", - "xml_path": "/СообщОперКО/УчастникФЛИП/СведФЛИП/ СведДокУдЛичн/ВидДокКод | |", + "xml_tag": "ВидДокКод|ИноеНаименованиеДок|СерияДокПреб|НомДокПреб|НачПравПреб|ОкончПравПреб", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/СведДокПреб/ВидДокКод | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокПреб/ВидДокКод | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокПреб/ИноеНаименованиеДок | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокПреб/СерияДокПреб | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокПреб/НомДокПреб | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокПреб/НачПравПреб | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокПреб/ОкончПравПреб", "multiplies": "нет", "required": "обязательно", "comment": "текстовый показатель. данные могут оставаться пустыми текстовый показатель. данные могут оставаться пустыми" @@ -1686,7 +1686,7 @@ "index": 188, "column_name": "Код вида документа/Наименование", "xml_tag": "ВидДокКод", - "xml_path": "/СообщОперКО/УчастникФЛИП/СведФЛИП/ СведДокУдЛичн/ВидДокКод |", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/СведДокПреб/ВидДокКод | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокПреб/ВидДокКод", "multiplies": "нет", "required": "необязательно", "comment": "текстовый показатель. данные могут оставаться пустыми" @@ -1694,8 +1694,8 @@ { "index": 189, "column_name": "Серия", - "xml_tag": "Серnf,kияДокПреб", - "xml_path": "|", + "xml_tag": "СерияДокПреб", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/СведДокПреб/СерияДокПреб | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокПреб/СерияДокПреб", "multiplies": "нет", "required": "необязательно", "comment": "данные могут не передаваться в XML и оставаться пустыми" @@ -1704,7 +1704,7 @@ "index": 190, "column_name": "Номер", "xml_tag": "НомДокПреб", - "xml_path": "|", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/СведДокПреб/НомДокПреб | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокПреб/НомДокПреб", "multiplies": "нет", "required": "необязательно", "comment": "данные могут не передаваться в XML и оставаться пустыми" @@ -1712,8 +1712,8 @@ { "index": 191, "column_name": "Дата начала/окончания срока", - "xml_tag": "НачПравПребН", - "xml_path": "|", + "xml_tag": "НачПравПреб", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/СведЕИО/ФЛЕИО/СведДокПреб/НачПравПреб | /СообщОперКО/ИнформЧасть/СведКО/Операция/УчастникОП/УчастникЮЛ/БенефициарЮЛ/ФЛБенефициар/СведДокПреб/НачПравПреб", "multiplies": "нет", "required": "необязательно", "comment": "данные могут не передаваться в XML и оставаться пустыми. Формат: ДД/ММ/ГГ" @@ -1721,17 +1721,17 @@ { "index": 192, "column_name": "Сведения миграционной карты ЕИО/Бенефициара", - "xml_tag": "уточнить, что за сведения тут подразумеваются", - "xml_path": "|", - "multiplies": "|", - "required": "|", - "comment": "|" + "xml_tag": "", + "xml_path": "", + "multiplies": "", + "required": "", + "comment": "" }, { "index": 193, "column_name": "Вид ЦП", "xml_tag": "ВидЦП", - "xml_path": "не нашла путь", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведЦП/ВидЦП", "multiplies": "нет", "required": "обязательно", "comment": "показатель считается обязательным, но в XML нет данных" @@ -1740,7 +1740,7 @@ "index": 194, "column_name": "Идентиф номер выпуска ЦП", "xml_tag": "ИдентификаторЦП", - "xml_path": "не нашла путь", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведЦП/ИдентификаторЦП", "multiplies": "нет", "required": "обязательно", "comment": "показатель считается обязательным, но в XML нет данных" @@ -1749,7 +1749,7 @@ "index": 195, "column_name": "Код валюты", "xml_tag": "КодВалЦП", - "xml_path": "не нашла путь", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведЦП/КодВалЦП", "multiplies": "нет", "required": "обязательно", "comment": "Данные могут оставаться пустыми" @@ -1757,8 +1757,8 @@ { "index": 196, "column_name": "Стоимость ЦП", - "xml_tag": "Стоимость ЦП", - "xml_path": "не нашла путь", + "xml_tag": "СтоимостьЦП", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведЦП/СтоимостьЦП", "multiplies": "нет", "required": "обязательно", "comment": "Данные могут оставаться пустыми" @@ -1767,7 +1767,7 @@ "index": 197, "column_name": "Количество ЦП", "xml_tag": "КолЦП", - "xml_path": "не нашла путь", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведЦП/КолЦП", "multiplies": "нет", "required": "обязательно", "comment": "показатель считается обязательным, но в XML нет данных" @@ -1775,8 +1775,8 @@ { "index": 198, "column_name": "Наименование/ ФИО эмитента ЦП", - "xml_tag": "ПризнЭмитентЦП", - "xml_path": "не нашла путь", + "xml_tag": "НаимЭмитентЦП", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведЦП/Эмитент/НаимЭмитентЦП/ЮрЛицо | /СообщОперКО/ИнформЧасть/СведКО/Операция/СведЦП/Эмитент/НаимЭмитентЦП/ФизЛицо/ФИОСтрока", "multiplies": "нет", "required": "обязательно", "comment": "показатель считается обязательным, но в XML нет данных" @@ -1785,7 +1785,7 @@ "index": 199, "column_name": "Тип эмитента", "xml_tag": "ТипЭмитентЦП", - "xml_path": "не нашла путь", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведЦП/Эмитент/ТипЭмитентЦП", "multiplies": "нет", "required": "обязательно", "comment": "показатель считается обязательным, но в XML нет данных" @@ -1794,7 +1794,7 @@ "index": 200, "column_name": "Признак резидентства", "xml_tag": "ПризнЭмитентЦП", - "xml_path": "не нашла путь", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведЦП/Эмитент/ПризнЭмитентЦП", "multiplies": "нет", "required": "обязательно", "comment": "показатель считается обязательным, но в XML нет данных" @@ -1802,8 +1802,8 @@ { "index": 201, "column_name": "ИНН эмитента", - "xml_tag": "ИННЭмитентЦПИНН", - "xml_path": "не нашла путь", + "xml_tag": "ИННЭмитентЦП", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведЦП/Эмитент/ИННЭмитентЦП", "multiplies": "нет", "required": "обязательно", "comment": "Данные могут оставаться пустыми" @@ -1811,8 +1811,8 @@ { "index": 202, "column_name": "ОГРН (ОГРНИП) эмитента", - "xml_tag": "ОГРНЭмитентЦПОГРН |", - "xml_path": "не нашла путь", + "xml_tag": "ОГРНЭмитентЦП", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведЦП/Эмитент/ОГРНЭмитентЦП", "multiplies": "нет", "required": "обязательно", "comment": "показатель считается обязательным, но в XML нет данных" @@ -1821,9 +1821,9 @@ "index": 203, "column_name": "Дополнительные сведения", "xml_tag": "КомментЦП", - "xml_path": "не нашла путь", + "xml_path": "/СообщОперКО/ИнформЧасть/СведКО/Операция/СведЦП/КомментЦП", "multiplies": "нет", "required": "обязательно", "comment": "Данные могут оставаться пустыми" } -] \ No newline at end of file +] diff --git a/app/pipeline/report.py b/app/pipeline/report.py index b0354aa..82edff6 100644 --- a/app/pipeline/report.py +++ b/app/pipeline/report.py @@ -5,8 +5,8 @@ from pathlib import Path from typing import Iterable from openpyxl import Workbook +from openpyxl.cell import WriteOnlyCell from openpyxl.styles import Alignment, Font, PatternFill -from openpyxl.utils import get_column_letter from .mapping import FIXED_REPORT_COLUMNS, build_fixed_row @@ -20,16 +20,15 @@ class ReportRow: participant_fields: dict[str, str] -def write_report(rows: Iterable[ReportRow], destination: Path) -> None: - row_list = list(rows) - columns = list(FIXED_REPORT_COLUMNS) - workbook = Workbook() - sheet = workbook.active - sheet.title = "Отчет" - sheet.freeze_panes = "A2" +class StreamingReportWriter: + def __init__(self) -> None: + self.columns = list(FIXED_REPORT_COLUMNS) + self.workbook = Workbook(write_only=True) + self.sheet = self.workbook.create_sheet(title="Отчет") + self.sheet.freeze_panes = "A2" + self.sheet.append(self._build_header_row()) - _write_header(sheet, columns) - for row_index, row in enumerate(row_list, start=2): + def append_row(self, row: ReportRow) -> None: data = build_fixed_row( file_name=row.file_name, record_id=row.record_id, @@ -37,33 +36,38 @@ def write_report(rows: Iterable[ReportRow], destination: Path) -> None: operation_fields=row.operation_fields, participant_fields=row.participant_fields, ) - for col_index, column_name in enumerate(columns, start=1): - cell = sheet.cell( - row=row_index, column=col_index, value=data.get(column_name, "") - ) + cells: list[WriteOnlyCell] = [] + for column_name in self.columns: + cell = WriteOnlyCell(self.sheet, value=data.get(column_name, "")) if "Дата" in column_name: cell.number_format = "DD.MM.YYYY" if "Сумм" in column_name or "Сумма" in column_name: cell.number_format = "#,##0.00" + cells.append(cell) + self.sheet.append(cells) - _auto_width(sheet, columns) - destination.parent.mkdir(parents=True, exist_ok=True) - workbook.save(destination) + def save(self, destination: Path) -> None: + destination.parent.mkdir(parents=True, exist_ok=True) + self.workbook.save(destination) + + def _build_header_row(self) -> list[WriteOnlyCell]: + fill = PatternFill(start_color="E2F0D9", end_color="E2F0D9", fill_type="solid") + result: list[WriteOnlyCell] = [] + for name in self.columns: + cell = WriteOnlyCell(self.sheet, value=name) + cell.font = Font(bold=True) + cell.alignment = Alignment( + horizontal="center", + vertical="center", + wrap_text=True, + ) + cell.fill = fill + result.append(cell) + return result -def _write_header(sheet, columns: list[str]) -> None: - fill = PatternFill(start_color="E2F0D9", end_color="E2F0D9", fill_type="solid") - for index, name in enumerate(columns, start=1): - cell = sheet.cell(row=1, column=index, value=name) - cell.font = Font(bold=True) - cell.alignment = Alignment( - horizontal="center", vertical="center", wrap_text=True - ) - cell.fill = fill - - -def _auto_width(sheet, columns: list[str]) -> None: - for index, column_name in enumerate(columns, start=1): - width = max(12, min(60, len(column_name) + 4)) - column_letter = get_column_letter(index) - sheet.column_dimensions[column_letter].width = width +def write_report(rows: Iterable[ReportRow], destination: Path) -> None: + writer = StreamingReportWriter() + for row in rows: + writer.append_row(row) + writer.save(destination) diff --git a/app/pipeline/service.py b/app/pipeline/service.py index f845516..e96a7a8 100644 --- a/app/pipeline/service.py +++ b/app/pipeline/service.py @@ -23,7 +23,7 @@ from .file_manager import ( ) from .parser import FileParseResult, parse_xml_content from .protocol import ProtocolRow, write_protocol -from .report import ReportRow, write_report +from .report import ReportRow, StreamingReportWriter EMPTY_BATCH_STATUS = "info" @@ -80,7 +80,6 @@ def run_batch( ) run_context = create_run_context(input_dir=input_dir, samba_conn=samba_conn) - report_rows: list[ReportRow] = [] protocol_rows: list[ProtocolRow] = [] log_lines: list[str] = [] @@ -89,14 +88,121 @@ def run_batch( f"{_now()} | scan files: valid={len(scan_result.valid_files)} invalid={len(scan_result.invalid_files)} " ) - for remote_file in scan_result.invalid_files: - reason = "Некорректное имя файла" - moved_to = move_file_to_error( - file_path=remote_file.path, - file_name=remote_file.name, - error_dir=run_context.error_dir, + report_file_name = build_report_file_name( + run_context.date_key, run_context.run_number + ) + protocol_file_name = build_protocol_file_name( + run_context.date_key, run_context.run_number + ) + log_file_name = build_process_log_file_name( + run_context.date_key, run_context.run_number + ) + + report_path = join_path(run_context.run_dir, report_file_name) + protocol_path = join_path(run_context.run_dir, protocol_file_name) + log_path = join_path(run_context.run_dir, log_file_name) + + with tempfile.TemporaryDirectory() as temp_dir: + temp_dir_path = Path(temp_dir) + local_report = temp_dir_path / "report.xlsx" + local_protocol = temp_dir_path / "protocol.xlsx" + local_log = temp_dir_path / "process.log" + report_writer = StreamingReportWriter() + + _process_files( + scan_result=scan_result, + run_context=run_context, + samba_conn=samba_conn, + launcher=launcher, + report_writer=report_writer, + protocol_rows=protocol_rows, + log_lines=log_lines, + ) + + if not protocol_rows: + protocol_rows.append( + ProtocolRow( + file_name="-", + status=EMPTY_BATCH_STATUS, + message="Новых файлов для обработки нет.", + operations_total=0, + rows_written=0, + launcher=launcher, + processed_at=datetime.now(), + ) + ) + log_lines.append(f"{_now()} | empty batch") + + report_writer.save(local_report) + write_protocol(protocol_rows, local_protocol) + # Use CRLF to keep one-record-per-line in Windows viewers. + local_log.write_text("\r\n".join(log_lines) + "\r\n", encoding="utf-8") + + _upload_artifacts( + local_report=local_report, + local_protocol=local_protocol, + local_log=local_log, + report_path=report_path, + protocol_path=protocol_path, + log_path=log_path, samba_conn=samba_conn, ) + + processed = sum(1 for row in protocol_rows if row.status == "success") + partial = sum(1 for row in protocol_rows if row.status == "partial") + errors = sum(1 for row in protocol_rows if row.status == "error") + status = ( + "success" + if errors == 0 and partial == 0 + else ("partial" if partial > 0 else "error") + ) + messages.extend(log_lines[-5:]) + return BatchResult( + status=status, + processed=processed, + partial=partial, + errors=errors, + report_path=report_path, + protocol_path=protocol_path, + log_path=log_path, + messages=messages, + ) + + +def _parse_remote_xml(file_name: str, remote_path: str, samba_conn) -> FileParseResult: + try: + content = read_remote_file_bytes(remote_path=remote_path, samba_conn=samba_conn) + except Exception as exc: # noqa: BLE001 + result = FileParseResult(file_name=file_name) + result.fatal_error = f"Ошибка чтения файла из SAMBA: {exc}" + return result + return parse_xml_content(file_name=file_name, xml_content=content) + + +def _process_files( + scan_result, + run_context, + samba_conn, + launcher: str, + report_writer: StreamingReportWriter, + protocol_rows: list[ProtocolRow], + log_lines: list[str], +) -> None: + for remote_file in scan_result.invalid_files: + reason = "Некорректное имя XML-файла" + moved_to = "" + try: + moved_to = move_file_to_error( + file_path=remote_file.path, + file_name=remote_file.name, + error_dir=run_context.error_dir, + samba_conn=samba_conn, + ) + except Exception as exc: # noqa: BLE001 + reason = f"{reason}. Не удалось переместить в Err: {exc}" + log_lines.append( + f"{_now()} | move to Err failed: {remote_file.path}. {exc}" + ) protocol_rows.append( ProtocolRow( file_name=remote_file.name, @@ -115,7 +221,16 @@ def run_batch( for remote_file in scan_result.valid_files: parse_result = _parse_remote_xml(remote_file.name, remote_file.path, samba_conn) - report_rows.extend(_report_rows_from_parse(parse_result)) + for row in parse_result.rows: + report_writer.append_row( + ReportRow( + file_name=row.file_name, + record_id=row.record_id, + operation_index=row.operation_index, + operation_fields=row.operation_fields, + participant_fields=row.participant_fields, + ) + ) status, message = _resolve_parse_status(parse_result) if status == "success": try: @@ -164,89 +279,6 @@ def run_batch( ) ) - if not protocol_rows: - protocol_rows.append( - ProtocolRow( - file_name="-", - status=EMPTY_BATCH_STATUS, - message="Новых файлов для обработки нет.", - operations_total=0, - rows_written=0, - launcher=launcher, - processed_at=datetime.now(), - ) - ) - log_lines.append(f"{_now()} | empty batch") - - report_file_name = build_report_file_name( - run_context.date_key, run_context.run_number - ) - protocol_file_name = build_protocol_file_name( - run_context.date_key, run_context.run_number - ) - log_file_name = build_process_log_file_name( - run_context.date_key, run_context.run_number - ) - - report_path = join_path(run_context.run_dir, report_file_name) - protocol_path = join_path(run_context.run_dir, protocol_file_name) - log_path = join_path(run_context.run_dir, log_file_name) - - _upload_artifacts( - report_rows=report_rows, - protocol_rows=protocol_rows, - log_lines=log_lines, - report_path=report_path, - protocol_path=protocol_path, - log_path=log_path, - samba_conn=samba_conn, - ) - - processed = sum(1 for row in protocol_rows if row.status == "success") - partial = sum(1 for row in protocol_rows if row.status == "partial") - errors = sum(1 for row in protocol_rows if row.status == "error") - status = ( - "success" - if errors == 0 and partial == 0 - else ("partial" if partial > 0 else "error") - ) - messages.extend(log_lines[-5:]) - return BatchResult( - status=status, - processed=processed, - partial=partial, - errors=errors, - report_path=report_path, - protocol_path=protocol_path, - log_path=log_path, - messages=messages, - ) - - -def _parse_remote_xml(file_name: str, remote_path: str, samba_conn) -> FileParseResult: - try: - content = read_remote_file_bytes(remote_path=remote_path, samba_conn=samba_conn) - except Exception as exc: # noqa: BLE001 - result = FileParseResult(file_name=file_name) - result.fatal_error = f"Ошибка чтения файла из SAMBA: {exc}" - return result - return parse_xml_content(file_name=file_name, xml_content=content) - - -def _report_rows_from_parse(parse_result: FileParseResult) -> list[ReportRow]: - result: list[ReportRow] = [] - for row in parse_result.rows: - result.append( - ReportRow( - file_name=row.file_name, - record_id=row.record_id, - operation_index=row.operation_index, - operation_fields=row.operation_fields, - participant_fields=row.participant_fields, - ) - ) - return result - def _resolve_parse_status(parse_result: FileParseResult) -> tuple[str, str]: if parse_result.fatal_error: @@ -261,28 +293,17 @@ def _resolve_parse_status(parse_result: FileParseResult) -> tuple[str, str]: def _upload_artifacts( - report_rows: list[ReportRow], - protocol_rows: list[ProtocolRow], - log_lines: list[str], + local_report: Path, + local_protocol: Path, + local_log: Path, report_path: str, protocol_path: str, log_path: str, samba_conn, ) -> None: - with tempfile.TemporaryDirectory() as temp_dir: - temp_dir_path = Path(temp_dir) - local_report = temp_dir_path / "report.xlsx" - local_protocol = temp_dir_path / "protocol.xlsx" - local_log = temp_dir_path / "process.log" - - write_report(report_rows, local_report) - write_protocol(protocol_rows, local_protocol) - # Use CRLF to keep one-record-per-line in Windows viewers. - local_log.write_text("\r\n".join(log_lines) + "\r\n", encoding="utf-8") - - upload_local_file(local_report, report_path, samba_conn=samba_conn) - upload_local_file(local_protocol, protocol_path, samba_conn=samba_conn) - upload_local_file(local_log, log_path, samba_conn=samba_conn) + upload_local_file(local_report, report_path, samba_conn=samba_conn) + upload_local_file(local_protocol, protocol_path, samba_conn=samba_conn) + upload_local_file(local_log, log_path, samba_conn=samba_conn) def _now() -> str: diff --git a/tests/unit/test_mapping.py b/tests/unit/test_mapping.py index d249618..6507c04 100644 --- a/tests/unit/test_mapping.py +++ b/tests/unit/test_mapping.py @@ -1,6 +1,10 @@ from __future__ import annotations -from app.pipeline.mapping import FIXED_REPORT_COLUMNS, build_fixed_row +from app.pipeline.mapping import ( + FIXED_REPORT_COLUMNS, + _extract_tag_candidate_keys, + build_fixed_row, +) def _column_with(prefix: str) -> str: @@ -69,3 +73,51 @@ def test_build_fixed_row_does_not_take_operation_inn_for_participant() -> None: def test_fixed_report_columns_over_200() -> None: assert len(FIXED_REPORT_COLUMNS) == 203 + + +def test_build_fixed_row_uses_alternative_path_leaf_for_emitent_name() -> None: + row = build_fixed_row( + file_name="f.xml", + record_id="R1", + operation_index=1, + operation_fields={ + "ФИОСтрока": "Эмитент ФЛ", + }, + participant_fields={}, + ) + assert row["Наименование/ ФИО эмитента ЦП"] == "Эмитент ФЛ" + + +def test_build_fixed_row_maps_dotted_participant_keys() -> None: + row = build_fixed_row( + file_name="f.xml", + record_id="R1", + operation_index=1, + operation_fields={}, + participant_fields={ + "УчастникФЛИП.СведФЛИП.ИННФЛИП": "123456789012", + "УчастникФЛИП.СведФЛИП.СведДокУдЛичн.НомДок": "451099", + }, + ) + assert row[_column_with("ИНН ")] == "123456789012" + assert row["Номер"] == "451099" + + +def test_build_fixed_row_splits_pipe_separated_xml_tag_values() -> None: + row = build_fixed_row( + file_name="f.xml", + record_id="R1", + operation_index=1, + operation_fields={ + "Индекс": "674500", + }, + participant_fields={}, + ) + assert row["Адрес по структуре (целый)"] == "674500" + + +def test_extract_tag_candidate_keys_supports_comma_separator() -> None: + candidates = _extract_tag_candidate_keys( + "КППЮЛ, ИдентификацияФЛ, ПризнакОргФормаИНБОЮЛ" + ) + assert candidates == ("КППЮЛ", "ИдентификацияФЛ", "ПризнакОргФормаИНБОЮЛ") diff --git a/tests/unit/test_report.py b/tests/unit/test_report.py new file mode 100644 index 0000000..759090a --- /dev/null +++ b/tests/unit/test_report.py @@ -0,0 +1,55 @@ +from __future__ import annotations + +from pathlib import Path + +from openpyxl import load_workbook + +from app.pipeline.mapping import FIXED_REPORT_COLUMNS +from app.pipeline.report import ReportRow, write_report + + +def test_write_report_streaming_preserves_header_and_formats(tmp_path: Path) -> None: + destination = tmp_path / "report.xlsx" + rows = [ + ReportRow( + file_name="SKO115FZ_01_123456789_20260616_X00001.xml", + record_id="RID-1", + operation_index=1, + operation_fields={"СуммаОпер": "100.50", "ДатаОпер": "2026-06-16"}, + participant_fields={}, + ) + ] + + write_report(rows, destination) + + workbook = load_workbook(destination) + sheet = workbook["Отчет"] + headers = [cell.value for cell in sheet[1]] + assert headers == list(FIXED_REPORT_COLUMNS) + row_values = [ + sheet.cell(row=2, column=index).value + for index in range(1, len(FIXED_REPORT_COLUMNS) + 1) + ] + assert "SKO115FZ_01_123456789_20260616_X00001.xml" in row_values + + date_col_idx = next( + ( + index + for index, column in enumerate(FIXED_REPORT_COLUMNS, start=1) + if "Дата" in column + ), + None, + ) + if date_col_idx is not None: + assert sheet.cell(row=2, column=date_col_idx).number_format == "DD.MM.YYYY" + + sum_col_idx = next( + ( + index + for index, column in enumerate(FIXED_REPORT_COLUMNS, start=1) + if "Сумм" in column or "Сумма" in column + ), + None, + ) + if sum_col_idx is not None: + assert sheet.cell(row=2, column=sum_col_idx).number_format == "#,##0.00"