Ошибка возникла только один раз и больше не появлялась. Но в остальных случаях функция выполняется очень долго и возвращает пустой массив.
Не удалось выполнить скрипт ИРАдаптер->ПерейтиКОпределению
ScriptEngine.Machine.ExternalSystemException: {Модуль C:\Portable\TurboConf\user_scripts\RDT.os / Ошибка в строке: 495 / Внешнее исключение (System.ArgumentNullException): Значение не может быть неопределенным.}
ТекстыПолей = ТурбоКонф.ПолучитьЭлементыСписка(); // 200мс!
---> System.ArgumentNullException: Значение не может быть неопределенным.
в ScriptEngine.Machine.Values.StringValue..ctor(String value)
в ScriptEngine.Machine.Values.StringValue.Create(String value)
в TurboConf.HostApplication.Api.<>c.<GetListElements>b__180_0(String i)
в System.Linq.Enumerable.WhereSelectListIterator2.MoveNext() в System.Collections.Generic.List
1..ctor(IEnumerable1 collection) в TurboConf.HostApplication.Api.GetListElements() в lambda_method(Closure , Api , IValue[] ) в ScriptEngine.Machine.Contexts.AutoContext
1.CallAsFunction(Int32 methodNumber, IValue[] arguments, IValue& retValue)
в ScriptEngine.Machine.MachineInstance.ResolveMethodFunc(Int32 arg)
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
--- Конец трассировки внутреннего стека исключений ---
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
в ScriptEngine.Machine.MachineInstance.ExecuteCode()
в ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, Int32 methodIndex, IValue[] arguments)
в ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallAsFunction(Int32 methodNumber, IValue[] arguments, IValue& retValue)
в TurboConf.HostApplication.HostApplicationForm.ExecuteScript(Script script, Keys ctrl, Keys alt, Keys shift, ScreenForm statusForm, String entryPoint, IVariable[] parameters, ScriptOptions options)
#1, 07 ноября 2023 08:15
#2, 07 ноября 2023 19:36
Это таблица, а не список.
Нужно использовать ТурбоКонф.ПолучитьТекстТаблицы()
#3, 07 ноября 2023 19:49
В 8.3.23 этот способ работает и причем уже давно. Смотри глубже. В 8.3.24 изменилось окно "Точки останова".
#4, 12 декабря 2023 11:38
24-я платформа уже в релизе
#5, ред. 12 декабря 2023 21:35
(4) tormozit, я посмотрел в чем отличие и почему метод может работать некорректно в 8.3.24
В предыдущих версиях платформы первый элемент таблицы получал фокус при открытии окна. В 8.3.24 фокус получает весь элемент "таблица". Это можно увидеть если нажать кнопку Вниз. Для 8.3.23 выделится вторая строка таблицы, а для 8.3.24 - первая.
Поэтому для 8.3.24 достаточно нажать кнопку Вниз и метод отрабатывает корректно.
Но еще раз этот метод и не предназначен для получения элементов таблиц, а предназначен для получения элементов списков, хотя в некоторых случаях он срабатывает и для таблиц.
Решение - для начала можно использовать хак выше.
Можно сделать отдельный метод ПолучитьЭлементыТаблицы, который уже будет учитывать версии платформы.
#6, 13 декабря 2023 16:25
Нажатие Вниз для 8.3.24 помогло?
bolsun изменил статус на На выяснении
#7, 14 декабря 2023 17:35
bolsun изменил статус на Закрыто
#8, ред. 22 декабря 2023 18:01
(5) bolsun, не помогло
Не подтверждаю. У меня в 8.3.24 тоже выделяется вторая строка при первом нажатии клавиши "Вниз".
QeQto8erah.mp4
tormozit изменил статус на Открыто
#9, ред. 22 декабря 2023 18:18
Еще заметил что при этом надолго парализуется ClipAngel (что то там с прокачкой очереди сообщений). Чего не происходит в 8.3.23 и ниже. Возможно это как то связано. Причем если из самого ClipAngel выполнять открытие той же ссылки, то проблемы нет. Если убрать ClipAngel, то поведение Турбоконфа в 8.3.24 не изменяется - такая же ошибка возникает.
#10, 23 декабря 2023 15:52
На этой версии у меня работает ПолучитьЭлементыСписка() в окне точек останова в 8.3.24.1342
https://disk.yandex.ru/d/XKCz9ijzgtoO1w
#11, ред. 23 декабря 2023 16:08
Проверил. Проблема осталась в точности такая же - секунд 30-40 Турбоконф что то делает и парализует CLipAngel, если он запущен. В конце выдает ту же ошибку.
Не удалось выполнить скрипт ИРАдаптер->ПерейтиКОпределению
ScriptEngine.Machine.ExternalSystemException: {Модуль C:\Portable\TurboConf\user_scripts\RDT.os / Ошибка в строке: 696 / Внешнее исключение (System.ArgumentNullException): Значение не может быть неопределенным.}
ТекстыПолей = ТурбоКонф.ПолучитьЭлементыСписка(); // 200мс
---> System.ArgumentNullException: Значение не может быть неопределенным.
в ScriptEngine.Machine.Values.StringValue..ctor(String value)
в ScriptEngine.Machine.Values.StringValue.Create(String value)
в TurboConf.HostApplication.Api.<>c.<GetListElements>b__149_0(String i)
в System.Linq.Enumerable.WhereSelectListIterator
2.MoveNext() в System.Collections.Generic.List
1..ctor(IEnumerable1 collection) в TurboConf.HostApplication.Api.GetListElements() в lambda_method(Closure , Api , IValue[] ) в ScriptEngine.Machine.Contexts.AutoContext
1.CallAsFunction(Int32 methodNumber, IValue[] arguments, IValue& retValue)в ScriptEngine.Machine.MachineInstance.ResolveMethodFunc(Int32 arg)
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
--- Конец трассировки внутреннего стека исключений ---
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
в ScriptEngine.Machine.MachineInstance.ExecuteCode()
в ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, Int32 methodIndex, IValue[] arguments)
в ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallAsFunction(Int32 methodNumber, IValue[] arguments, IValue& retValue)
в TurboConf.HostApplication.HostApplicationForm.ExecuteScript(Script script, Keys ctrl, Keys alt, Keys shift, ScreenForm statusForm, String entryPoint, ScriptOptions options, IVariable[] parameters)
Ссылка скрыта
RDT.os
#12, 23 декабря 2023 16:07
Нужен лог без ClipAngel
#13, ред. 23 декабря 2023 16:07
Там есть оба сценария: с CLipAngel и без него.
#14, ред. 23 декабря 2023 16:10
Правда сейчас я тесты уже делаю в 8.3.25.1072, но там эти окна вроде бы не менялись. И поведение наблюдается точно то же что было в 8.3.24.
#15, 23 декабря 2023 16:13
(14) tormozit, тесты делаешь на 8.3.25.1072, я пишу про 8.3.24.1342, а в логе 8.3.23.2040. Я уже запутался.
Плюс не ясно в каком месте там включен CLipAngel в каком нет.
#16, 23 декабря 2023 16:13
Предлагаю сделать 2 лога на версии 8.3.24.1342. С CLipAngel и без.
#17, ред. 23 декабря 2023 16:22
Тут последний лог без ClipAgel Ссылка скрыта
#18, 23 декабря 2023 16:15
Еще при этом наблюдаются несколько раз достаточно долгие замирания перемещения указателя мыши.
#19, 23 декабря 2023 16:15
Еще желательно проверить это не из скрипта RDT, а открыть окно точек останова вручную и вызвать.
Элементы = ТурбоКонф.ПолучитьЭлементыСписка();
Сообщить("Количество="+Элементы.Количество());
#20, 23 декабря 2023 16:17
(18) tormozit, судя по логу метод срабатывает не в окне точек останова, а в главном окне конфигуратора. Со всеми вытекающими последствиями.
#21, 23 декабря 2023 16:21
(15) bolsun, про "в логе 8.3.23.2040" - это конфигуратор, в котором я редактирую скрипт. В нем я НЕ выполнял тест, но редактировал скрипт.
#22, 23 декабря 2023 16:24
(21) tormozit, в целом в чем проблема я уже написал в (20)
#23, 23 декабря 2023 16:24
Чтобы убедиться, что метод работает нужен тест из (19) и лог если проблема сохранится.
#24, 23 декабря 2023 16:27
(23) bolsun, этот тест выполняется корректно
#25, ред. 23 декабря 2023 16:32
(2) bolsun, ТурбоКонф.ПолучитьТекстТаблицы() тут работает без ошибки. Но он медленнее. Хочется чтобы быстрый метод ПолучитьЭлементыСписка() тоже везде работал, т.к. он уже во многих местах моего скрипта используется и я еще пока не все их протестировал в 8.3.24+
#26, ред. 23 декабря 2023 16:41
(25) tormozit, я же пишу про метод ПолучитьЭлементыСписка(), а не про ПолучитьТекстТаблицы(). Он у меня работает также на всех платформах.
#27, 23 декабря 2023 16:45
(25) tormozit, если тест из (19) выполняется, значит метод ПолучитьЭлементыСписка() работает. В чем тогда проблема я не пойму.
#28, 23 декабря 2023 16:46
(26) bolsun, Почитай сообщение (2) на которое я отвечал.
#29, 23 декабря 2023 16:48
(28) tormozit, что должно прояснить это сообщение?
ПолучитьЭлементыСписка() и ПолучитьТекстТаблицы() оба работают как я понял из теста.
Почему возникает ошибка я объяснил выше.
#30, 23 декабря 2023 16:48
(27) bolsun, Может быть тебе все таки повторить мой тест? Возможно ты сможешь отладчиком что то нащупать во время этой длительной операции.
#31, 23 декабря 2023 16:49
(30) tormozit, я уже написал 2 раза в чем проблема. Метод вызывается раньше, чем окно получает фокус.
#32, ред. 23 декабря 2023 16:50
#33, ред. 23 декабря 2023 16:56
(31) bolsun, понял. Попробую поставить задержку побольше. Но все же прошу застраховать клиента API и не морозить Турбоконф и другие программы на столько длительное время в случае, если этот метод случайно позвали в главном окне.
#34, 23 декабря 2023 17:07
Раскомментировал ожидание смены текущего элемента перед вызовом ПолучитьЭлементыСписка()
ТурбоКонф.ЖдатьСменуТекущегоЭлемента(СтарыйИД, 1000, Истина);
Ошибка и заморозка перестали возникать.
#35, ред. 23 декабря 2023 17:33
(33) tormozit, добавлю для начала такое уведомление. Хотя бы будет видно, что что-то не так.

#36, 23 декабря 2023 17:33
bolsun изменил статус на Закрыто