Список форумов BOSSForum.RU - Форум. БОСС-Кадровик
Независимый форум, посвященный системе БОСС-Кадровик
и всему, что с ней связано
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Исходники XML, отправляемых в ФСС
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> Общие вопросы
Предыдущая тема :: Следующая тема  
Автор Сообщение
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Сен 29, 2022 09:57    Заголовок сообщения: Исходники XML, отправляемых в ФСС Ответить с цитатой

Необходимо часто бывает для отладки обмена данными с ФСС.
Бывает, что текст ошибки не информативен, типа "Unknown format".
В журнале отправляемые сообщения сохраняются только в зашифрованном виде.
Было бы неплохо их видеть в исходном формате, чтоб быстро понять что не так с отправляемым файлом.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1681

СообщениеДобавлено: Сб Окт 01, 2022 15:41    Заголовок сообщения: Ответить с цитатой

А этот "исходный формат" где-то официально описан, чтобы говорить о его необходимости? В Спецификации ФСС разве есть какие-то слова об этом "промежуточном" формате?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Сб Окт 01, 2022 16:58    Заголовок сообщения: Ответить с цитатой

Как раз в спецификации ФСС формат и описан. И промежуточным он не является.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1681

СообщениеДобавлено: Сб Окт 01, 2022 17:28    Заголовок сообщения: Ответить с цитатой

"Бывает, что текст ошибки не информативен, типа "Unknown format" - да, это беда ФСС, не хотят они расшифровывать проблему.

"Было бы неплохо их видеть в исходном формате, чтоб быстро понять что не так с отправляемым файлом" - и что вы сделаете, когда "быстро поймете"? Что-то поправите и зашифруете вручную?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Сб Окт 01, 2022 17:54    Заголовок сообщения: Ответить с цитатой

Зачем шифровать вручную?
Поправлю программный код, генерирующий xml или поправлю значение поля.
Да, в конце концов, покажу сгенерированный читабельный xml техподдержке ФСС.
[/quote]
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1681

СообщениеДобавлено: Сб Окт 01, 2022 18:40    Заголовок сообщения: Ответить с цитатой

Так Вы техподдержке БОСС покажите закладку "Данные для передачи в ФСС" - авось и помогут ....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Сб Окт 01, 2022 21:11    Заголовок сообщения: Ответить с цитатой

На Авось надеяться не хочу.
Странно, что в БК нет возможности видеть незашифрованный xml.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1681

СообщениеДобавлено: Пн Окт 03, 2022 12:31    Заголовок сообщения: Ответить с цитатой

Кстати, а какой программный код Вы собираетесь править, если получите ошибку формата?

У нас нет процедур на x-языке, которые собирают код xml-запроса…
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Пн Окт 03, 2022 12:40    Заголовок сообщения: Ответить с цитатой

Я знаю.
Но, при подготовке значений для передачи их для формирования xml бывают казусы вроде переносов или других служебных символов в значениях полей. Ваша "тайная" процедура ведь этого не контролирует. И ваша ТП говорит "вы же сами туда напихали переносов", хотя мы вводим данные стандартными способами через боссовские формы ввода данных.
Почему мы не можем увидеть сформированный удобочитаемый xml ?
Это какой-то секретный файл, который по закону о персональных данных не имеет права видеть даже сотрудник своего же предприятия ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1681

СообщениеДобавлено: Пн Окт 03, 2022 12:48    Заголовок сообщения: Ответить с цитатой

Ну то есть служебные символы у вас реально пчелы с пыльцой переносят в базу? Или при стандартном вводе через БОСС они как-то сами образуются?

Служебные символы прекрасно видны на закладке "Данные для передачи в ФСС", если выгрузить в Excel. Но причин этой самой ошибки "Unknown format" - множество. Все пользователи по стране стонут от того, что подробностей ФСС не пишет. Я просто не понимаю, почему Вы решили, что именно в XML увидите сразу все возможные проблемы?

У нас есть в планах "подумать над выгрузкой XML". Просто пока по проактивным выплатам есть куча первоочередных задач.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Пн Окт 03, 2022 13:01    Заголовок сообщения: Ответить с цитатой

Спасибо, что поставили в план эту задачу.
Да, действительно, я увижу хотя бы даже те самые переносы в сформированном xml, для меня это реально облегчит задачу.
Переносы - это только одна из проблем, которая пришла на ум.
Спасибо за ответы.

Еще дополнительно подскажите.
Приходит ответ от ФСС. При этом вы полностью расшифровываете "текст xml-ответа"? Никакой дополнительной информации из этот зашифрованного xml-ответа больше нельзя получить? Стоит ли маяться с его расшифровкой, даст ли это что-то, кроме уже имеющегося "текста сообщения об ошибке" ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1681

СообщениеДобавлено: Пн Окт 03, 2022 13:03    Заголовок сообщения: Ответить с цитатой

"Никакой дополнительной информации из этот зашифрованного xml-ответа больше нельзя получить?" - все, что можем, стараемся получить. Никаких больше секретных сведений там нет. Мы же не враги себе и пользователям.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
superjek



Зарегистрирован: 04.04.2022
Сообщения: 25

СообщениеДобавлено: Вт Окт 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
Сообщения: 1681

СообщениеДобавлено: Вт Окт 04, 2022 10:23    Заголовок сообщения: Ответить с цитатой

Гвозди бы делать из этих людей ....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Вт Окт 04, 2022 10:55    Заголовок сообщения: Ответить с цитатой

Добрый день. Спасибо. Жаль, я сразу не уточнил, что речь о недостающих сведениях.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> Общие вопросы Часовой пояс: GMT + 4
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB
Rambler's Top100 Рейтинг@Mail.ru Список форумов BOSSForum.RU