Независимый форум, посвященный системе БОСС-Кадровик и всему, что с ней связано
|
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Чт Сен 29, 2022 09:57 Заголовок сообщения: Исходники XML, отправляемых в ФСС |
|
|
Необходимо часто бывает для отладки обмена данными с ФСС.
Бывает, что текст ошибки не информативен, типа "Unknown format".
В журнале отправляемые сообщения сохраняются только в зашифрованном виде.
Было бы неплохо их видеть в исходном формате, чтоб быстро понять что не так с отправляемым файлом. |
|
Вернуться к началу |
|
 |
DUCKKK Большой шоколадный орден

Зарегистрирован: 16.09.2009 Сообщения: 1690
|
Добавлено: Сб Окт 01, 2022 15:41 Заголовок сообщения: |
|
|
А этот "исходный формат" где-то официально описан, чтобы говорить о его необходимости? В Спецификации ФСС разве есть какие-то слова об этом "промежуточном" формате? |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Сб Окт 01, 2022 16:58 Заголовок сообщения: |
|
|
Как раз в спецификации ФСС формат и описан. И промежуточным он не является. |
|
Вернуться к началу |
|
 |
DUCKKK Большой шоколадный орден

Зарегистрирован: 16.09.2009 Сообщения: 1690
|
Добавлено: Сб Окт 01, 2022 17:28 Заголовок сообщения: |
|
|
"Бывает, что текст ошибки не информативен, типа "Unknown format" - да, это беда ФСС, не хотят они расшифровывать проблему.
"Было бы неплохо их видеть в исходном формате, чтоб быстро понять что не так с отправляемым файлом" - и что вы сделаете, когда "быстро поймете"? Что-то поправите и зашифруете вручную? |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Сб Окт 01, 2022 17:54 Заголовок сообщения: |
|
|
Зачем шифровать вручную?
Поправлю программный код, генерирующий xml или поправлю значение поля.
Да, в конце концов, покажу сгенерированный читабельный xml техподдержке ФСС.
[/quote] |
|
Вернуться к началу |
|
 |
DUCKKK Большой шоколадный орден

Зарегистрирован: 16.09.2009 Сообщения: 1690
|
Добавлено: Сб Окт 01, 2022 18:40 Заголовок сообщения: |
|
|
Так Вы техподдержке БОСС покажите закладку "Данные для передачи в ФСС" - авось и помогут .... |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Сб Окт 01, 2022 21:11 Заголовок сообщения: |
|
|
На Авось надеяться не хочу.
Странно, что в БК нет возможности видеть незашифрованный xml. |
|
Вернуться к началу |
|
 |
DUCKKK Большой шоколадный орден

Зарегистрирован: 16.09.2009 Сообщения: 1690
|
Добавлено: Пн Окт 03, 2022 12:31 Заголовок сообщения: |
|
|
Кстати, а какой программный код Вы собираетесь править, если получите ошибку формата?
У нас нет процедур на x-языке, которые собирают код xml-запроса… |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Пн Окт 03, 2022 12:40 Заголовок сообщения: |
|
|
Я знаю.
Но, при подготовке значений для передачи их для формирования xml бывают казусы вроде переносов или других служебных символов в значениях полей. Ваша "тайная" процедура ведь этого не контролирует. И ваша ТП говорит "вы же сами туда напихали переносов", хотя мы вводим данные стандартными способами через боссовские формы ввода данных.
Почему мы не можем увидеть сформированный удобочитаемый xml ?
Это какой-то секретный файл, который по закону о персональных данных не имеет права видеть даже сотрудник своего же предприятия ? |
|
Вернуться к началу |
|
 |
DUCKKK Большой шоколадный орден

Зарегистрирован: 16.09.2009 Сообщения: 1690
|
Добавлено: Пн Окт 03, 2022 12:48 Заголовок сообщения: |
|
|
Ну то есть служебные символы у вас реально пчелы с пыльцой переносят в базу? Или при стандартном вводе через БОСС они как-то сами образуются?
Служебные символы прекрасно видны на закладке "Данные для передачи в ФСС", если выгрузить в Excel. Но причин этой самой ошибки "Unknown format" - множество. Все пользователи по стране стонут от того, что подробностей ФСС не пишет. Я просто не понимаю, почему Вы решили, что именно в XML увидите сразу все возможные проблемы?
У нас есть в планах "подумать над выгрузкой XML". Просто пока по проактивным выплатам есть куча первоочередных задач. |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Пн Окт 03, 2022 13:01 Заголовок сообщения: |
|
|
Спасибо, что поставили в план эту задачу.
Да, действительно, я увижу хотя бы даже те самые переносы в сформированном xml, для меня это реально облегчит задачу.
Переносы - это только одна из проблем, которая пришла на ум.
Спасибо за ответы.
Еще дополнительно подскажите.
Приходит ответ от ФСС. При этом вы полностью расшифровываете "текст xml-ответа"? Никакой дополнительной информации из этот зашифрованного xml-ответа больше нельзя получить? Стоит ли маяться с его расшифровкой, даст ли это что-то, кроме уже имеющегося "текста сообщения об ошибке" ? |
|
Вернуться к началу |
|
 |
DUCKKK Большой шоколадный орден

Зарегистрирован: 16.09.2009 Сообщения: 1690
|
Добавлено: Пн Окт 03, 2022 13:03 Заголовок сообщения: |
|
|
"Никакой дополнительной информации из этот зашифрованного xml-ответа больше нельзя получить?" - все, что можем, стараемся получить. Никаких больше секретных сведений там нет. Мы же не враги себе и пользователям. |
|
Вернуться к началу |
|
 |
superjek
Зарегистрирован: 04.04.2022 Сообщения: 29
|
Добавлено: Вт Окт 04, 2022 09:47 Заголовок сообщения: |
|
|
Ниже код для выгрузки сведений о застрахованном лице в виде файла XML.
По отмеченным записям выгружает в папку.
У нас прямого обмена с ФСС нет - приходится извращаться с файликами
Код: |
---------------------------------------------
-- "_winname_exec_" - Имя SQL запроса списка, из которого осуществляется вызов
---------------------------------------------
-- Для формирования сообщения об ошибке используется команда:
-- INSERT INTO prtb_rep_protocol (st, msg_type, text_message, dop_inf) VALUES (Номер_CURSTATION, 0, 'Текст_сообщения', 'Наименование_отчета');
---------------------------------------------
let _start_var=1;
Execute pr_no_access();
if @@xWindow(_winname_exec_,check,0x40) < 1 then
Error [\3 Нет выбранных записей];
-- проверка статусов
SCAN _winname_exec_
Execute {
if _winname_exec_:code_status_type != 'BOSS_peti_card_2' /* Готов для передачи в ФСС */
then {
error [\3 Сведения должны быть в статусе \10\3 "Готов для передачи в ФСС"];
};
}; -- execute
msg [\3 Сформировать сведения для ФСС?];
if _result == 12 then
{
-- путь к выгрузке
Execute xDLL(@@xUTIL{EXEDIR}\RPExec.exe import pathdlg);
alias _dir = @@dll_Pathdlg("Укажите путь для выгрузки файлов");
if '_dir'='' then {FREE _start_var,*;error};
-------------------------------------------------
-- проверяем протокол
if exists (select top 1 1 from prtb_rep_protocol _hintbrowser where st = CURSTATION)
then {
-- чистим протокол
DELETE prtb_rep_protocol WHERE st = CURSTATION;
};
-------------------------------------------------
SCAN _winname_exec_
Execute {
if _winname_exec_:code_status_type = 'BOSS_peti_card_2' /* Готов для передачи в ФСС */
then {
let _file_name = _dir['']+'\'+_winname_exec_:Full_Name['']+' '+_winname_exec_:Num_tab['']+'.xml';
alias _id_petition_card:=_winname_exec_:id_petition_card;
EXECUTE xSql{$(:_id_petition_card);
declare @txt_xml varchar(max)='';
WITH XMLNAMESPACES ('urn:ru:fss:integration:types:rpu:InsuredPerson:v01' as urn,
'http://www.fss.ru/integration/types/person/v02' as v02,
'http://www.fss.ru/integration/types/common/v01' as v01)
select @txt_xml='<?xml version="1.0" encoding="windows-1251"?>'+
convert(nvarchar(max),(
Select
[fullName_firstName] as 'urn:insuredPerson/urn:fullName/v02:firstName',
[fullName_lastName] as 'urn:insuredPerson/urn:fullName/v02:lastName',
nullif([fullName_middleName],'') as 'urn:insuredPerson/urn:fullName/v02:middleName',
[insuredPerson_birthDate] as 'urn:insuredPerson/urn:birthDate',
[insuredPerson_gender] as 'urn:insuredPerson/urn:gender',
[insuredPerson_snils] as 'urn:insuredPerson/urn:snils',
[fired_date] as 'urn:insuredPerson/urn:fired/urn:date',
[insuredPerson_inn] as 'urn:insuredPerson/urn:inn',
[passport_series] as 'urn:insuredPerson/urn:identityDocument/urn:passport/urn:series',
[passport_number] as 'urn:insuredPerson/urn:identityDocument/urn:passport/urn:number',
[passport_issueDate] as 'urn:insuredPerson/urn:identityDocument/urn:passport/urn:issueDate',
[passport_whoIssued] as 'urn:insuredPerson/urn:identityDocument/urn:passport/urn:whoIssued',
[tempIdentDocType_number] as 'urn:insuredPerson/urn:identityDocument/urn:tempIdentDocType/urn:number',
[tempIdentDocType_issueDate] as 'urn:insuredPerson/urn:identityDocument/urn:tempIdentDocType/urn:issueDate',
[tempIdentDocType_whoIssued] as 'urn:insuredPerson/urn:identityDocument/urn:tempIdentDocType/urn:whoIssued',
[tempIdentDocType_expirationDate] as 'urn:insuredPerson/urn:identityDocument/urn:tempIdentDocType/urn:expirationDate',
[otherIdentDocType_type] as 'urn:insuredPerson/urn:identityDocument/urn:otherIdentDocType/urn:type',
[otherIdentDocType_series] as 'urn:insuredPerson/urn:identityDocument/urn:otherIdentDocType/urn:series',
[otherIdentDocType_number] as 'urn:insuredPerson/urn:identityDocument/urn:otherIdentDocType/urn:number',
[otherIdentDocType_expirationDate] as 'urn:insuredPerson/urn:identityDocument/urn:otherIdentDocType/urn:expirationDate',
[residentCard_series] as 'urn:insuredPerson/urn:residenceDocumentType/urn:residentCard/urn:series',
[residentCard_number] as 'urn:insuredPerson/urn:residenceDocumentType/urn:residentCard/urn:number',
[residentCard_passportIssueDate] as 'urn:insuredPerson/urn:residenceDocumentType/urn:residentCard/urn:passportIssueDate',
[tempResidencePermit_series] as 'urn:insuredPerson/urn:residenceDocumentType/urn:tempResidencePermit/urn:series',
[tempResidencePermit_number] as 'urn:insuredPerson/urn:residenceDocumentType/urn:tempResidencePermit/urn:number',
[tempResidencePermit_issueDate] as 'urn:insuredPerson/urn:residenceDocumentType/urn:tempResidencePermit/urn:issueDate',
[otherInfo_workplace] as 'urn:insuredPerson/urn:otherInfo/urn:workplace',
[otherInfo_livingPlace] as 'urn:insuredPerson/urn:otherInfo/urn:livingPlace',
[otherInfo_causeRadiation] as 'urn:insuredPerson/urn:otherInfo/urn:causeRadiation',
[fiasAddress_houseGuid] as 'urn:insuredPerson/urn:regAddress/urn:fiasAddress/v01:houseGuid',
[fiasAddress_guid] as 'urn:insuredPerson/urn:regAddress/urn:fiasAddress/v01:guid',
[fiasAddress_house] as 'urn:insuredPerson/urn:regAddress/urn:fiasAddress/v01:house',
[fiasAddress_building] as 'urn:insuredPerson/urn:regAddress/urn:fiasAddress/v01:building',
[fiasAddress_flat] as 'urn:insuredPerson/urn:regAddress/urn:fiasAddress/v01:flat',
[regAddress_postalCode] as 'urn:insuredPerson/urn:regAddress/urn:postalCode',
[bankInfo_bankName] as 'urn:insuredPerson/urn:methodReceivePayment/v01:bankInfo/v01:bankName',
[bankInfo_bik] as 'urn:insuredPerson/urn:methodReceivePayment/v01:bankInfo/v01:bik',
[bankInfo_accountNum] as 'urn:insuredPerson/urn:methodReceivePayment/v01:bankInfo/v01:accountNum',
[methodReceivePayment_cardMir] as 'urn:insuredPerson/urn:methodReceivePayment/v01:cardMir',
[otherOrg_name] as 'urn:insuredPerson/urn:methodReceivePayment/v01:otherOrg/v01:name',
[otherOrg_bik] as 'urn:insuredPerson/urn:methodReceivePayment/v01:otherOrg/v01:bik',
[otherOrg_inn] as 'urn:insuredPerson/urn:methodReceivePayment/v01:otherOrg/v01:inn',
[currentAddressFias_houseGuid] as 'urn:insuredPerson/urn:methodReceivePayment/v01:currentFiasAddress/v01:houseGuid',
[currentAddressFias_guid] as 'urn:insuredPerson/urn:methodReceivePayment/v01:currentFiasAddress/v01:guid',
[currentAddressFias_house] as 'urn:insuredPerson/urn:methodReceivePayment/v01:currentFiasAddress/v01:house',
[currentAddressFias_building] as 'urn:insuredPerson/urn:methodReceivePayment/v01:currentFiasAddress/v01:building',
[currentAddressFias_flat] as 'urn:insuredPerson/urn:methodReceivePayment/v01:currentFiasAddress/v01:flat',
[methodReceivePayment_postalCode] as 'urn:insuredPerson/urn:methodReceivePayment/v01:postalCode'
from
(select c.[pId],x.id_petition_card,x.prm_value,x.prm_name_up+'_'+x.prm_name as prm_name
from
zrptb_petition_card c
join zrptb_petition_card_XML x on x.id_petition_card=c.id_petition_card
where x.id_petition_card=@_id_petition_card
) as st
PIVOT
(
max(prm_value)
FOR prm_name IN (
[fullName_firstName],
[fullName_lastName],
[fullName_middleName],
[insuredPerson_birthDate],
[insuredPerson_gender],
[insuredPerson_snils],
[fired_date],
[insuredPerson_inn],
[passport_issueDate],
[passport_number],
[passport_series],
[passport_whoIssued],
[tempIdentDocType_number],
[tempIdentDocType_issueDate],
[tempIdentDocType_whoIssued],
[tempIdentDocType_expirationDate],
[otherIdentDocType_expirationDate],
[otherIdentDocType_number],
[otherIdentDocType_series],
[otherIdentDocType_type],
[residentCard_series],
[residentCard_number],
[residentCard_passportIssueDate],
[tempResidencePermit_series],
[tempResidencePermit_number],
[tempResidencePermit_issueDate],
[otherInfo_livingPlace],
[otherInfo_workplace],
[otherInfo_causeRadiation],
[fiasAddress_houseGuid],
[fiasAddress_flat],
[fiasAddress_guid],
[fiasAddress_house],
[fiasAddress_building],
[regAddress_postalCode],
[methodReceivePayment_cardMir],
[bankInfo_accountNum],
[bankInfo_bankName],
[bankInfo_bik],
[currentAddressFias_houseGuid],
[currentAddressFias_guid],
[currentAddressFias_house],
[currentAddressFias_building],
[currentAddressFias_flat],
[methodReceivePayment_postalCode],
[otherOrg_name],
[otherOrg_bik],
[otherOrg_inn]
)
) AS pt
for xml path(''),type ))
select txt_xml= @txt_xml
};
Execute xFile(Write :txt_xml, _file_name, 1);
};
}; -- execute
msg 2037,_winname_exec_;
-------------------------------------------------
-- проверяем протокол
if exists (select top 1 1 from prtb_rep_protocol _hintbrowser where st = CURSTATION)
then {
Browser pr_lst_rep_protocol;
-- чистим протокол
DELETE prtb_rep_protocol WHERE st = CURSTATION;
};
-------------------------------------------------
}; -- 12
-------------------
FREE _start_var,*;
ALIAS :_Result=-1;
|
|
|
Вернуться к началу |
|
 |
DUCKKK Большой шоколадный орден

Зарегистрирован: 16.09.2009 Сообщения: 1690
|
Добавлено: Вт Окт 04, 2022 10:23 Заголовок сообщения: |
|
|
Гвозди бы делать из этих людей .... |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Вт Окт 04, 2022 10:55 Заголовок сообщения: |
|
|
Добрый день. Спасибо. Жаль, я сразу не уточнил, что речь о недостающих сведениях. |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|