{Модуль C:\Portable\TurboConf\user_scripts\RDT.os / Ошибка в строке: 1144 / Внешнее исключение (System.Collections.Generic.KeyNotFoundException): Данный ключ отсутствует в словаре.}
Ссылка скрыта
0 0
созд. 25 марта 2025 19:29 (изм.)
Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.
Комментарии
bolsun #1, ред. 25 марта 2025 20:24
Опять похоже на причуды OneScript в асинхронных вызовах.
Используй текстовое предоставление в асинхронных обработчиках ПолучитьНазваниеТипаТекущегоЭлемента()
0
tormozit #2, ред. 31 марта 2025 19:11
(1) bolsun, сделать это будет сложно, т.к. у меня в фоновых методах уже довольно много кода выполняется и по сути тогда придется полностью отказаться от использования этого перечисления и мультиязычности при опознании типов.
в адаптере 2.07 сделал альтернативный механизм этого перечисления
// .
// Параметры:
// ИменаЗначений - Строка - имена значений через ", ", например "Стул, Стол"
// Возвращаемое значение:
// ФиксированнаяСтруктура - Ключ=Значение
Функция НовоеПеречислениеЛкс(Знач ИменаЗначений) Экспорт
Параметры = СтрРазделить(ИменаЗначений, ", " + Символы.ПС, Ложь);
Параметры.Вставить(0, ИменаЗначений);
Результат = Новый ("ФиксированнаяСтруктура", Параметры);
//! Результат = Новый ФиксированнаяСтруктура(ИменаЗначений);
Возврат Результат;
КонецФункции
// 8мс, но 20мс при открытом окне "Служебные сообщения"
Функция ПолучитьТипТекущегоЭлемента()
//Результат = ТурбоКонф.ПолучитьТипТекущегоЭлемента(); // Вероятно ошибка OScript https://turboconf.ru/Tasks/8430, https://turboconf.ru/Tasks/10190
Результат = ТурбоКонф.ПолучитьНазваниеТипаТекущегоЭлемента();
Если Результат = "документ" Тогда
Результат = ЗначенияТипЭлемента.Документ;
ИначеЕсли Результат = "кнопка" Тогда
Результат = ЗначенияТипЭлемента.Кнопка;
ИначеЕсли Результат = "меню" Тогда
Результат = ЗначенияТипЭлемента.Меню;
ИначеЕсли Результат = "неизвестный" Тогда
Результат = ЗначенияТипЭлемента.Неизвестный;
ИначеЕсли Результат = "панель" Тогда
Результат = ЗначенияТипЭлемента.Панель;
ИначеЕсли Результат = "поле" Тогда
Результат = ЗначенияТипЭлемента.Поле;
ИначеЕсли Результат = "поле со списком" Тогда
Результат = ЗначенияТипЭлемента.ПолеСоСписком;
ИначеЕсли Результат = "список" Тогда
Результат = ЗначенияТипЭлемента.Список;
ИначеЕсли Результат = "таблица" Тогда
Результат = ЗначенияТипЭлемента.Таблица;
ИначеЕсли Результат = "флажок" Тогда
Результат = ЗначенияТипЭлемента.Флажок;
ИначеЕсли Результат = "элемент меню" Тогда
Результат = ЗначенияТипЭлемента.ЭлементМеню;
ИначеЕсли Результат = "элемент списка" Тогда
Результат = ЗначенияТипЭлемента.ЭлементСписка;
КонецЕсли;
Возврат Результат;
КонецФункции
// Замена родного перечисления Турбоконфа https://turboconf.ru/Tasks/10190
ЗначенияТипЭлемента = НовоеПеречислениеЛкс(
"Документ,
|Кнопка,
|Меню,
|Неизвестный,
|Панель,
|Поле,
|ПолеСоСписком,
|Список,
|Таблица,
|Флажок,
|ЭлементМеню,
|ЭлементСписка");
#1, ред. 25 марта 2025 20:24
Опять похоже на причуды OneScript в асинхронных вызовах.
Используй текстовое предоставление в асинхронных обработчиках ПолучитьНазваниеТипаТекущегоЭлемента()
#2, ред. 31 марта 2025 19:11
(1) bolsun, сделать это будет сложно, т.к. у меня в фоновых методах уже довольно много кода выполняется и по сути тогда придется полностью отказаться от использования этого перечисления и мультиязычности при опознании типов.
#3, 31 марта 2025 21:46
Тут я вряд ли что-то могу сделать, проблема внутри ОСкрипт и подтверждена его разработчиками.
OneScript плохо работает с пользовательскими перечислениями (затирает их) при асинхронном вызове.
Схожая проблема https://turboconf.ru/Tasks/9510
Тикет https://github.com/EvilBeaver/OneScript/issues/1415
#4, ред. 05 апреля 2025 17:37
в адаптере 2.07 сделал альтернативный механизм этого перечисления
#5, 05 апреля 2025 17:37
tormozit изменил статус на Закрыто
#6, 23 мая 2025 09:19
(4) tormozit, Недостаточно универсально https://turboconf.ru/Tasks/10307
tormozit изменил статус на Открыто
#7, ред. 29 июня 2025 20:23
(6) Связанная задача закрыта.
tormozit изменил статус на Закрыто