Версия: 1c-testpilot 1.5.0 (коммит 701630a), платформа 8.3.27.2074, тонкий клиент,
файловая база 1С:ERP 2.5.27.79.
Что происходит
На окне ошибки, которое открылось вместо формы, tc_app(action="get_current_error")
не получает ответа. Вызов висит до таймаута (по умолчанию 30 с, с
set_max_action_time(10) — 10 с) и возвращает timed out. После этого соединение
рассинхронизировано: все следующие вызовы падают с
the connection desynchronised after a timeout: 1 answer(s) to earlier commands were never received — call tc_disconnect and tc_connect, пока не выполнить disconnect + connect.
Как воспроизвести
tc_window(action="execute_command", command="e1cib/data/Документ.АктОРасхожденияхПослеОтгрузки.Форма.ФормаДокумента")
— новый документ без основания. Ответ: ok: false, code: navigation_failed,
form_name: ErrorWindow. Исключение брошено в ОбработкаЗаполнения модуля объекта через
общий модуль (вложенная ошибка: «Ошибка при выполнении обработчика - 'ОбработкаЗаполнения'
по причине: …»).
tc_app(action="get_current_error") → через 30 с Error executing tool tc_app: timed out.
- Любой следующий вызов →
connection desynchronised.
Контроль: e1cib/data/Документ.СчетНаОплатуКлиенту.Форма.ФормаДокумента — тоже окно ошибки,
но исключение из ПриСозданииНаСервере модуля формы (одноуровневое). Там get_current_error
отвечает сразу.
Это не платформа
На том же окне той же базы официальный менеджер тестирования (сценарий Тестера
ПодробноеПредставлениеОшибки(Приложение.ПолучитьТекущуюИнформациюОбОшибке())) получил ответ
за 2,3 с — полный двухуровневый стек:
Ошибка при выполнении обработчика - 'ОбработкаЗаполнения'
по причине:
A type of base documents for the discrepancy report is not specified when creating the document.
{ОбщийМодуль.РасхожденияСервер.Модуль(607)}:ВызватьИсключение ...
{Документ.АктОРасхожденияхПослеОтгрузки.МодульОбъекта(129)}:РасхожденияСервер.ПроверитьТипОснованияАктаПриСоздании(ЭтотОбъект);
Для контрольной формы — 2,6 с. Значит, клиент 1С на GetCurrentErrorInfo отвечает, а
testpilot ответ не принимает. Гипотеза: разбор ответа с вложенной причиной
(ИнформацияОбОшибке.Причина) в tc_get_current_error (server.py, ERR_MIDDLE = e041,
pad=4) — ответ другой структуры не распознается как ответ на команду.
Чего хотелось бы
- Разбор ответа GetCurrentErrorInfo с вложенной причиной.
- Независимо от п.1: таймаут одного read-вызова не должен рвать все соединение — либо
дочитывать/отбрасывать запоздавший ответ, либо переподключаться автоматически.
Обход сейчас
Текст ошибки читается из элемента ErrorInfo окна ошибки:
tc_find(action="find_objects", name="ErrorInfo", root_ref=<ref окна>) — поле title,
без зависания. Но для исключений из модуля формы там общий текст «К сожалению, возникла
непредвиденная ошибка…», и настоящий текст дает только get_current_error.
Версия: 1c-testpilot 1.5.0 (коммит 701630a), платформа 8.3.27.2074, тонкий клиент,
файловая база 1С:ERP 2.5.27.79.
Что происходит
На окне ошибки, которое открылось вместо формы,
tc_app(action="get_current_error")не получает ответа. Вызов висит до таймаута (по умолчанию 30 с, с
set_max_action_time(10)— 10 с) и возвращаетtimed out. После этого соединениерассинхронизировано: все следующие вызовы падают с
the connection desynchronised after a timeout: 1 answer(s) to earlier commands were never received — call tc_disconnect and tc_connect, пока не выполнитьdisconnect+connect.Как воспроизвести
tc_window(action="execute_command", command="e1cib/data/Документ.АктОРасхожденияхПослеОтгрузки.Форма.ФормаДокумента")— новый документ без основания. Ответ:
ok: false,code: navigation_failed,form_name: ErrorWindow. Исключение брошено вОбработкаЗаполнениямодуля объекта черезобщий модуль (вложенная ошибка: «Ошибка при выполнении обработчика - 'ОбработкаЗаполнения'
по причине: …»).
tc_app(action="get_current_error")→ через 30 сError executing tool tc_app: timed out.connection desynchronised.Контроль:
e1cib/data/Документ.СчетНаОплатуКлиенту.Форма.ФормаДокумента— тоже окно ошибки,но исключение из
ПриСозданииНаСерверемодуля формы (одноуровневое). Тамget_current_errorотвечает сразу.
Это не платформа
На том же окне той же базы официальный менеджер тестирования (сценарий Тестера
ПодробноеПредставлениеОшибки(Приложение.ПолучитьТекущуюИнформациюОбОшибке())) получил ответза 2,3 с — полный двухуровневый стек:
Для контрольной формы — 2,6 с. Значит, клиент 1С на GetCurrentErrorInfo отвечает, а
testpilot ответ не принимает. Гипотеза: разбор ответа с вложенной причиной
(
ИнформацияОбОшибке.Причина) вtc_get_current_error(server.py,ERR_MIDDLE = e041,pad=4) — ответ другой структуры не распознается как ответ на команду.Чего хотелось бы
дочитывать/отбрасывать запоздавший ответ, либо переподключаться автоматически.
Обход сейчас
Текст ошибки читается из элемента
ErrorInfoокна ошибки:tc_find(action="find_objects", name="ErrorInfo", root_ref=<ref окна>)— полеtitle,без зависания. Но для исключений из модуля формы там общий текст «К сожалению, возникла
непредвиденная ошибка…», и настоящий текст дает только
get_current_error.