Форум OlegON > Программы и оборудование для автоматизации торговли > Маркировка

Добавил интеграцию с ЭДО СБИС в свою УС.... : Маркировка

04.05.2024 12:07


19.01.2024 09:34
MWWRuza
 
Добрый день!

Ранее, интегрировал ЭДО лайт, успешно, вот была тема: https://olegon.ru/showthread.php?t=38141
Но, как-то "вяло" клиенты переходят на нее, точнее даже не клиенты, а их поставщики не хотят заморачиваться...
Пока вроде не отключали передачу марок на бесплатных тарифах коммерческих ЭДО, решил по тому-же принципу добавить ЭДО СБИС(Тензор).
Почему его - по популярности... У моих, распределилось так:
1. Диадок(Контур).
2.. СБИС(Тензор)
3.. ЭДО лайт(ЦРПТ)
С Диадоком все глухо - не потому, что физически нельзя сделать, а потому, что доступ через API у них стоит 13000 в год(ключ для доступа к API продают), при этом, через WEB интерфейс, принимать документы(а большего, моим розничным магазинчикам и не нужно) можно бесплатно...
Поэтому, решил добавить интеграцию со СБИС.
Сразу решил, что буду делать на "чистом" API, без их компоненты SDK SBIS... Не люблю я "черных ящиков", в чистом API все прозрачно, да в принципе и не очень сложно.
В общем, все получилось:



Что-бы сильно не заморачиваться и пользователям было привычнее, за основу взял интерфейс, давно работающий в ЭДО лайт, просто добавил эще одно окошко, в котором отображается список вложений документов. В ЭДО лайт этого не требовалось, так, как там обмен только формализованными документами, типа один документ - один файл XML к нему.
Тут-же, может во вложениях быть все что угодно - и PDFки разные, и вордовские документы, и по несколько XML для алкогольных доков(параллельно с УТМ?), и вообще, все, что угодно.
Все работает, получение списка документов, загрузка нужных в базу 1С(одна ощая процедура для СБИС, ЭДО лайт и загрузки "пешком" XML файлов из любой системы), получение печатных форм и т.п., подписание документов прямо из 1С.
Само по себе подписание(Утверждение) все просто - подготавливается этап "Утверждение" и выполняется действие "Утвердить". Это все работает нормально.
И все-бы ничего, но, немного не понятен сам регламент работы со СБИС ЭДО - а именно в части "кривых" документов, которые нужно отказывать или запрашивать уточнения...
В их "талмуде", этот момент как-то путанно описан...
Принцип сильно отличается от ЭДО лайт... Если там можно было "Подписать", "Отклонить", "Запросить уточнение", отдельными командами, то здесь такого нет. В их терминах вообще нет понятия "Подписание", есть "Утверждение", что по сути одно и тоже, но с одним отличием - делается любое "Утверждение" в два "Этапа" - сначала подготавливают действие(команда СБИС.ПодготовитьДействие), для любого варианта "этап "Утверждение", действие например "Отклонить". Потом, выполняется"СБИС.ВыполнитьДействие", данные берутся из из предыдущего этапа(подготовленного предыдущей командой)...
Документ при таких условиях, почему-то сформировон как "Уведомление об уточнении", а не нак документ поступления(как в случае утверждения), или какого-то "отказа", что было бы логично...
С чего-бы-? Нигде ни слова об уточнении не было, делал просто как "Отклонить"... Ладно, не проблема, вот только что с ним делать, отклонять или утверждать? По логике - надо бы утвердить(подтвердить типа, что это запрос уточнения), но... Логике это не поддается, делаю действие "Отклонить", и весь документ отклонен, в таком-же статусе как они раньше из ЛК делали... Может правильнее его было бы утвердить, и тогда статус стал-бы что-то типа "Запрошено уточнение" - ?
Кто-нибудь сталкивался с этой "кухней" и разбирался со всеми их "Этапами" и "Действиями" - ? Поделитесь, если кто-то въехал как у них это правильно делается.
19.01.2024 16:15
jokerpnz
 
Поздравляю! тоже пришлось над этим работать. потому что некоторые поставщики вообще то в СБИС, то в Эдо лайт и бороться с этим уже нет сил. проще забирать ещё и из СБИС, держать и подтверждать документы в одном месте
19.01.2024 16:49
jokerpnz
 
у меня есть интеграция через сбис сдк, но есть нестыковки с разрядностью приложения, поэто тоже через апи буду делать. в эдо лайт есть подписать и уточнить, в сбис утвердить и отклонить. эти две команды делают те же действия соответственно
при отклонении обязательно нужно ввести причину, докумени после отклонения принимает статус завершено с ошибкой
19.01.2024 17:14
MWWRuza
 
Спасибо, все так и есть, у меня так и работает.
Просто я думал, что "Отклонить", это отклонить совсем... А тут вон оно как...
А "Отклонить совсем" на стороне получателя, я так понял, у них нет совсем... Есть команда "Анулировать", но она вроде только для исходящих...
22.01.2024 13:52
jokerpnz
 
добрый день. вопрос по Апи от СБИС, токен авторизации имеет время действия? в доке не могу найти. в СБИС СДК есть метод проверки авторизации, в Апи нет его похоже.
22.01.2024 15:51
FinSoft
 
У меня, кстати, сегодня тоже один клиент спрашивал, но в плане загрузки накладных из СБИС. Предложил через файл делать. Показывали, как с 1С интегрируются, там как-то попроще.
А вообще, со Сбисом мучается народ, какая-то странная у них система работы со справочником товаров и с документами.
22.01.2024 16:07
jokerpnz
 
не туда меня понесло, я в API для авторизации залез, а нужно API ЭДО. там есть метод СБИС.ИнформацияОТекущемПользователе, он возвращает информацию об аутентифицированном пользователе. sessionId для СБИС СДК 12 часов, в СБИС СДК кстати можно было получить время сессии, в АПИ такого нет, но думаю время действия сессии то же
23.01.2024 01:47
MWWRuza
 
Нет. ИД сессии API может жить до 7 суток если им пользоваться регулярно. Если нет активных действий - прибивают через сутки.
Я у себя не стал голову морочить, ограничил сутками. По любому, сутки он будет жить независимо от активности, а там можно и новый запросить.

Но, тут есть еще один момент - если заходят с другого устройства, с другого IP, например ЭДО в магазине, а бухгалтерия дома у бухгалтера через WEB ЛК то ИД полученный ранее - отзывается.
Я не стал морочиться с проверками, просто при открытии списка доков, если получаю ошибку "не авторизован", то удаляю сохраненный файл ИД сессии, и вывожу месагу пользователю - "Необходимо обновить список". А при любом обращении а методам API, у меня проверяется наличие этого файлика, и если его нет(или изначально не было, или удалился при последней неудачной попытке заполнения списка), то идет новая авторизация и сохранение ИД в файл. Просто там, в нем у меня и дата/время есть, это и так работает когда он протухает через сутки, но, когда его прибили авторизацией с другого рабочего места, то это не помогает, по времени ему еще работать и работать, но, он уже не валиден. Поэтому посчитал, что прооще его удалять.
23.01.2024 01:53
MWWRuza
 
Вот, дополнение к предыдущему - скриншот из описания API:

24.01.2024 12:41
MWWRuza
 
jokerpnz, как успехи? Что-то получилось?
Я что-то столкнулся с проблеммкой, откуда не ждал... Четвертый день бьюсь, и никак не могу понять - что я не так делаю???
Когда стандартный входящий документ, например УПД ил накладная, с одним вложением - все хорошо, нет проблем, все подписывается(Утверждается в их терминах), или отклоняется(Создается запрос уточнения).
Но, как только документ содержит несколько вложений - например, три - Счет, Акт вып. работ, и СчетФактура, то хотоь тресни, при попытке выполнить действие возвращается ошибка:

"{"jsonrpc":"2.0","error":{"code":-32000,"message":"При закрытии события на утверждение возникла ошибка:\nНет подписи под первичным документом (ON_SCHET___20220305_64e422e0-d807-4785-9b2c-47d3513a55f1) с идентификатором - e2f7d8e2-e56c-4547-a05f-21d46eec5c61","details":"При закрытии события на утверждение возникла ошибка:\nНет подписи под первичным документом (ON_SCHET___20220305_64e422e0-d807-4785-9b2c-47d3513a55f1) с идентификатором - e2f7d8e2-e56c-4547-a05f-21d46eec5c61","type":"warning","data":{"classid":"{00000000-0000-0000-0000-1fa000100000}","error_code":-1,"addinfo":null}},"id":1}"

Что значит нет подписи??? Все я подписываю, каждое вложение из прилетевшего от них дока после "Подготовки действия", в том числе и этот пресловутый счет, все ЭЦП вложений валидны, проверил, и передаю строками "двоичных данных" в запрос выполнения действия...
Во вложении файлы:

PodgEtap_1a02bb50-ba2d-4539-9d07-30310a07039c.txt - подготовленный этап, то, что "прилетело от них".
ТелоЗапрВыпДействие.txt - Запрос, который я отправляю на последнем этапе выполнения действия.
ВыпДействиеКарл.txt - ответ сервера на этот запрос
Так-же, там в отдельных подкаталогах сами вложения с их ЭЦП и протоколами их проверки.

Вроде все красиво, но не работает... Убей, не пойму, что я не так делаю?
Вложения
Тип файла: zip ArchivDO_3_part.zip (149.3 Кб, 18 просмотров)
Часовой пояс GMT +3, время: 12:07.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.