diadocsdk-1c-docs
diadocsdk-1c-docs copied to clipboard
ОШИБКА?! Странные данные в PowerOfAttorneyStatus при проблемах с МЧД (расхождения 5.54.0.1016 с более ранними версиями АПИ)
Добрый день.
Общая информация для упрощения «разбора полётов»: Организация: «ДНС Ритейл» ИНН: 2540167061 КПП: 254301001 ID организации: [email protected] ID участника ЭДО: 2BM-2540167061-254001001-201312151140099321090
Мы работаем с Диадок с использованием компонент АПИ для 1С https://diadocsdk-1c.readthedocs.io/ru/latest/index.html Текущая используемая версия: COM x64 5.54.0.1016
Недавно заметили странное поведение компоненты версии 5.54.0.1016 при работе с МЧД.
Провели небольшое исследование. И вот, что получилось:
"Опыты" проводили на следующих документах:
№1. Nonformalized. v1 /c4390c58-315b-4323-a9b4-b5d87d6e868b/Document/Show?letterId=27568359-9e19-4613-a145-c85eeed41c34&documentId=d8e4756f-2bd7-4525-be37-c10d8924a1ba В документе НЕТ проблем с МЧД.
№2. UniversalTransferDocument. utd970_05_03_01 /c4390c58-315b-4323-a9b4-b5d87d6e868b/Document/Show?letterId=b678dc77-f056-482a-9102-ac9b31ea7503&documentId=3f9e50dd-9184-4c79-9768-3794ad6d0d14 В документе ЕСТЬ проблемы с МЧД.
№3. Nonformalized. v1 /c4390c58-315b-4323-a9b4-b5d87d6e868b/Document/Show?letterId=7f55fd7e-0bd6-402d-bebd-0856868c5a3f&documentId=72d7359d-df89-4a31-8314-7fab596a9761 В документе ЕСТЬ проблемы с МЧД.
1. Версия АПИ 5.52.4.989
На ней мы работали до 5.54.0.1016.
Документ №1:
Документ №2:
Документ №3:
Всё понятно. Всё работает, как ожидается и как описано в документации.
2. Версия АПИ 5.54.0.1016.
Важно! В этой версии изменили обработку ошибок в МЧД:
Важно! Поле "Errors" уже не видно напрямую при отладке. Но оно есть, как и другие устаревшие поля. И, по идее, как и другие устаревшие поля, должно заполнятся так же, как и раньше. Для обратной совместимости.
Тем более, что в документации не сказано ни слова о том, что это поле (или какие-то другие) более не будут заполнятся.
Документ №1:
Все хорошо. Ошибок нет. Это видно и в обновленных данных МЧД, и в старом поле Errors.
При этом все нужные поля заполнены. А не заполненное OperationError - не заполнено в согласии с документацией, т.к. Id НЕ равен ни "ValidationError", ни "CanNotBeValidated".
Что находится в Protocol нас в этой ситуации не интересует.
А вот по документам с проблемами с МЧД, возникает странная штука!
Документ №2:
CheckResults:
Содержимое Warning:
Документ №3:
CheckResults:
Содержимое Warning:
Проблемы
В документах №2 и №3 с проблемами с МЧД сразу бросаются в глаза следующее:
Проблема №1:
В "устаревшем" Errors почему-то не видно ошибок!
Но почему?! Да, поле Errors устарело. Но у вас же для всех устаревших объектов и полей для поддержания совместимости данные всё равно всегда формируются.
Плюс в документации ни слова о том, что теперь там вообще ничего не будет, что не будет никакой совместимости - и что весь код, ранее работавший с Errors надо обязательно переписать.
Нам кажется, что это явная ошибка. И в Errors для совместимости со старым кодом должны формироваться такие же записи, что и для более старых версий компоненты.
Как это у вас, повторюсь, сделано для всех остальных устаревших полей. Их не видно в отладчике напрямую при раскрытии свойств объектов, но они есть, доступны и данные в них заполнены.
Проблема №2:
Пустое значение (пустая строка "") в поле Id!
А это как понимать?! Согласно вашей документации:
Нигде ни слова о том, что Id может быть в каких-то случаях не заполненным!
Ранее в старой версии 5.52.4.989 (см. примеры выше) для документов №2 и №3 Id был равен "Unknown".
Почему теперь там пусто - непонятно. И почему это не соответствует документации - тем более непонятно. Как интерпретировать эту пустую строку?
Нам кажется, что это явная ошибка. И в Id в этой ситуации должно быть "Unknown", как это было ранее.
Предложение А еще лучше, если для Id в такой ситуации был бы отдельный статус - что-то типа "Warninigs" (МЧД проверена с предупреждениями). Что было бы еще более понятно в чем может быть проблема с МЧД.
Резюме
Нам кажется, что при переходе на новую версию 5.54.0.1016 и доработке данных по МЧД были допущены две ошибки:
-
В поле Id при проблемах с МЧД стала попадать пустая строка, что является явно расходящимся с документацией поведением. Плюс совершенно не ясно, как такую пустую строку интерпретировать. По идее было бы правильным в подобной ситуации формировать в Id значение "Unknown", как это было в более ранних версиях АПИ. Или, что, возможно, было бы еще лучше - какое-то новое значение типа "Warning", более явно говорящее о том, что при проверке МЧД возникли какие-то предупреждения.
-
В поле Errors при проблемах с МЧД перестали попадать какие-либо данные. Да, поле устарело. Но такое поведение нарушает обратную совместимость и, главное, противоречит всему, что вы делали ранее, т.к. во всех остальных случаях в полях, объявленных устаревшими по-прежнему содержаться данные. Почему в данной ситуации не так - совершенно непонятно. Надеемся, что просто что-то забыли сделать/доделать для этого.
Хотелось бы увидеть ваши комментарии по поводу обнаруженных проблем. А также какую-то информацию по поводу того, будет ли это как-то исправляться. И, если да, то как и хотя бы приблизительно когда.
Спасибо.
Добрый день
С PowerOfAttorneyStatus.Id проблема понятная. Исправим в ближайшем релизе
коллекцию Errors проверю посмотрю чуть позже на этой неделе
@JohnSergeev
Устроит, если в коллекции Errors вместо ошибки Unknown будет лежать такая ошибка:
,
или нужно оставить Unknown
?
Добрый день.
Вообще, конечно, хотелось бы, чтобы был "Unknown". Чисто из соображений совместимости.
Чтобы нам - или кому-то другому! - кто обновил компоненту, но еще не переписал весь код под нововведения, не приходилось в срочном порядке что-то переписывать, т.к. была нарушена совместимость с предыдущими версиями.
При этом можно, конечно и "severalRepresentatives" сделать вместо "Unknown". Но тогда:
- Совместимость все-таки, пусть и немного, но будет нарушена.
- Нам и другим пользователям придется чуть-чуть, но переписать код, чтобы учесть "severalRepresentatives" вместо "Unknown".
Дополнительно: И в любом случае было бы здорово, если бы возможные Code были бы описаны в документации. Чего сейчас нет.
Это касается и нового ValidationCheckResult.Error - для которых Code никак не описаны.
Поправим коллекцию Errors в ближайшем релизе
Про коды подумаем, но обещать не буду - сам Диадок их прокидывает откуда-то извне как есть (как строки)