diadocsdk-1c-docs icon indicating copy to clipboard operation
diadocsdk-1c-docs copied to clipboard

ОШИБКА?! Странные данные в PowerOfAttorneyStatus при проблемах с МЧД (расхождения 5.54.0.1016 с более ранними версиями АПИ)

Open JohnSergeev opened this issue 7 months ago • 4 comments

Добрый день.

Общая информация для упрощения «разбора полётов»: Организация: «ДНС Ритейл» ИНН: 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:

Image

Документ №2:

Image

Image

Документ №3:

Image

Image

Всё понятно. Всё работает, как ожидается и как описано в документации.

2. Версия АПИ 5.54.0.1016.

Важно! В этой версии изменили обработку ошибок в МЧД:

Image

Важно! Поле "Errors" уже не видно напрямую при отладке. Но оно есть, как и другие устаревшие поля. И, по идее, как и другие устаревшие поля, должно заполнятся так же, как и раньше. Для обратной совместимости.

Тем более, что в документации не сказано ни слова о том, что это поле (или какие-то другие) более не будут заполнятся.

Документ №1:

Image

Все хорошо. Ошибок нет. Это видно и в обновленных данных МЧД, и в старом поле Errors.

При этом все нужные поля заполнены. А не заполненное OperationError - не заполнено в согласии с документацией, т.к. Id НЕ равен ни "ValidationError", ни "CanNotBeValidated".

Что находится в Protocol нас в этой ситуации не интересует.

А вот по документам с проблемами с МЧД, возникает странная штука!

Документ №2:

Image

CheckResults:

Image

Содержимое Warning:

Image

Документ №3:

Image

CheckResults:

Image

Содержимое Warning:

Image

Проблемы

В документах №2 и №3 с проблемами с МЧД сразу бросаются в глаза следующее:

Проблема №1:

В "устаревшем" Errors почему-то не видно ошибок!

Image

Но почему?! Да, поле Errors устарело. Но у вас же для всех устаревших объектов и полей для поддержания совместимости данные всё равно всегда формируются.

Плюс в документации ни слова о том, что теперь там вообще ничего не будет, что не будет никакой совместимости - и что весь код, ранее работавший с Errors надо обязательно переписать.

Нам кажется, что это явная ошибка. И в Errors для совместимости со старым кодом должны формироваться такие же записи, что и для более старых версий компоненты.

Как это у вас, повторюсь, сделано для всех остальных устаревших полей. Их не видно в отладчике напрямую при раскрытии свойств объектов, но они есть, доступны и данные в них заполнены.

Проблема №2:

Пустое значение (пустая строка "") в поле Id!

Image

А это как понимать?! Согласно вашей документации:

Image

Image

Нигде ни слова о том, что Id может быть в каких-то случаях не заполненным!

Ранее в старой версии 5.52.4.989 (см. примеры выше) для документов №2 и №3 Id был равен "Unknown".

Почему теперь там пусто - непонятно. И почему это не соответствует документации - тем более непонятно. Как интерпретировать эту пустую строку?

Нам кажется, что это явная ошибка. И в Id в этой ситуации должно быть "Unknown", как это было ранее.

Предложение А еще лучше, если для Id в такой ситуации был бы отдельный статус - что-то типа "Warninigs" (МЧД проверена с предупреждениями). Что было бы еще более понятно в чем может быть проблема с МЧД.

Резюме

Нам кажется, что при переходе на новую версию 5.54.0.1016 и доработке данных по МЧД были допущены две ошибки:

  1. В поле Id при проблемах с МЧД стала попадать пустая строка, что является явно расходящимся с документацией поведением. Плюс совершенно не ясно, как такую пустую строку интерпретировать. По идее было бы правильным в подобной ситуации формировать в Id значение "Unknown", как это было в более ранних версиях АПИ. Или, что, возможно, было бы еще лучше - какое-то новое значение типа "Warning", более явно говорящее о том, что при проверке МЧД возникли какие-то предупреждения.

  2. В поле Errors при проблемах с МЧД перестали попадать какие-либо данные. Да, поле устарело. Но такое поведение нарушает обратную совместимость и, главное, противоречит всему, что вы делали ранее, т.к. во всех остальных случаях в полях, объявленных устаревшими по-прежнему содержаться данные. Почему в данной ситуации не так - совершенно непонятно. Надеемся, что просто что-то забыли сделать/доделать для этого.

Хотелось бы увидеть ваши комментарии по поводу обнаруженных проблем. А также какую-то информацию по поводу того, будет ли это как-то исправляться. И, если да, то как и хотя бы приблизительно когда.

Спасибо.

JohnSergeev avatar Apr 16 '25 00:04 JohnSergeev

Добрый день

С PowerOfAttorneyStatus.Id проблема понятная. Исправим в ближайшем релизе

коллекцию Errors проверю посмотрю чуть позже на этой неделе

GilimkhanovDenis avatar Apr 22 '25 14:04 GilimkhanovDenis

@JohnSergeev Устроит, если в коллекции Errors вместо ошибки Unknown будет лежать такая ошибка: Image,

или нужно оставить Unknown

Image

?

GilimkhanovDenis avatar Apr 23 '25 10:04 GilimkhanovDenis

Добрый день.

Вообще, конечно, хотелось бы, чтобы был "Unknown". Чисто из соображений совместимости.

Чтобы нам - или кому-то другому! - кто обновил компоненту, но еще не переписал весь код под нововведения, не приходилось в срочном порядке что-то переписывать, т.к. была нарушена совместимость с предыдущими версиями.

При этом можно, конечно и "severalRepresentatives" сделать вместо "Unknown". Но тогда:

  1. Совместимость все-таки, пусть и немного, но будет нарушена.
  2. Нам и другим пользователям придется чуть-чуть, но переписать код, чтобы учесть "severalRepresentatives" вместо "Unknown".

Дополнительно: И в любом случае было бы здорово, если бы возможные Code были бы описаны в документации. Чего сейчас нет.

Это касается и нового ValidationCheckResult.Error - для которых Code никак не описаны.

JohnSergeev avatar Apr 25 '25 00:04 JohnSergeev

Поправим коллекцию Errors в ближайшем релизе

Про коды подумаем, но обещать не буду - сам Диадок их прокидывает откуда-то извне как есть (как строки)

GilimkhanovDenis avatar Apr 25 '25 06:04 GilimkhanovDenis

Выложили версию 5.55.0

Попробуйте с ней

GilimkhanovDenis avatar May 20 '25 16:05 GilimkhanovDenis