ScriptEngine.Machine.RuntimeException: {Модуль D:\Projects\TurboConf\TurboConf.HostApplication\bin\Debug\apps\8552\RDT.os / Ошибка в строке: 3837 / Не удалось определить число колонок таблицы}
ВызватьИсключение "Не удалось определить число колонок таблицы"; в ScriptEngine.Machine.MachineInstance.RaiseException(Int32 arg)
в 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) в D:\Projects\TurboConf\TurboConf.HostApplication\HostApplicationForm.cs:строка 405
Вызвал команду "Найти в списке" в этом окне.
1С:Предприятие 8.3 (8.3.27.1786)
ВерсияАдаптера = "2.44";
ТурбоКонф Версия 6.6.9473.43122 от 8 декабря 2025 г.

#1, ред. 08 декабря 2025 23:31
Если тебе для обновления кэша объектов, то пока укажи для этого частного случая число колонок явно.
ЧислоКолонок = 10;Посчитать их автоматически тут не удается из-за колонки "Безопасный режим", которая при активации сразу входит в режим редактирования, и потому клавишей "Right" не удается дойти до правой колонки.
tormozit изменил статус на Открыто
#2, 08 декабря 2025 23:06
Учел возможность колонки сразу при активации входить в режим редактирования.
RDT.os
#3, ред. 09 декабря 2025 01:41
(2) tormozit, работает не во всех случаях.

Если хочешь повысить надежность своего метода учти, что клавиша PageDown работает не всегда, если количество строк меньше 3, то перемещаться нужно через клавишу Вниз.
#4, ред. 09 декабря 2025 01:56
Улучшил свой метод

Т.к. я знаю в каких таблицах использую метод, для моих целей пока достаточно задать маркер, по которому можно легко определить количество колонок. Для универсального метода, если нужно, могу добавить и определение по границам элемента.
Также улучшил эвристику определения конца таблицы и устранение дублей.
Но ты вроде его не используешь.
#5, ред. 09 декабря 2025 07:47
(3) bolsun, Исправил.
#6, ред. 09 декабря 2025 08:39
(4) bolsun,
Если ты про метод ПолучитьЭлементыСписка, то да, в универсальных механизмах давно уже не использую его по описанным тут причинам https://turboconf.ru/Tasks/9956 . Главной причиной как раз стала некорректная сшивка страниц при листании.
Определение числа колонок в списке, как ты уже понял, обычно приходится делать достаточно сложным и относительно долгим путем, включающим поочередную активацию первых 6 колонок сначала влево и потом вправо. Можно для этого использовать и ПолучитьВидимыеЭлементыСписка(Истина), но он очень долго работает при большом числе видимых строк, т.к. получает все видимые ячейки, а в этом случае достаточно - только текущей строки.
Как вариант можно добавить в ПолучитьВидимыеЭлементыСписка() параметр ТолькоТекущаяСтрока, тогда я смогу просто взять число элементов массива ИменаЭлементов и узнать сколько колонок.
#7, ред. 09 декабря 2025 20:46
(6) tormozit, добавил новый метод ПолучитьЭлементыКоллекции(КоличествоКолонок)
Метод поддерживает получение элементов списков и таблиц, также возвращает количество колонок. Поддерживается любое количество видимых строк.
Нет необходимости в переходе влево и вправо, по строке таблицы, количество колонок получается по границам только одной строки, избегая долгого получения границ всех элементов.
Используется более надежная склейка и устранение дублей при листании.
6.6.9474.40623
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
#8, 09 декабря 2025 23:09
(7) bolsun, почему сделан новый метод, а не доработан существующий ПолучитьЭлементыСписка() ?
#9, 09 декабря 2025 23:46
(7) bolsun, этот метод к сожалению не полностью решает задачу. Как я уже писал в (6), мне нужно получить тексты ячеек текущей строки. В частности это позволяет узнать сколько колонок в таблице. Но еще мне важно узнать и тексты ячеек, чтобы узнать таким образом номер текущей строки в таблице.
А новый метод ПолучитьЭлементыКоллекции() претендует на полную замену моего алгоритма получения всех ячеек списка, но при этом не позволяет узнать номер текущей строки таблицы.
Еще в этой версии сломался метод ПолучитьВидимыеЭлементыСписка(Истина). Свойство ГраницыЭлементов заполняет некорректно. Из-за этого мой метод НайтиВСписке() почти во всех списках стал выдавать ошибку.
Откатился на 6.6.9474.34522
#10, 10 декабря 2025 00:03
(9) tormozit,
Да, он получает все элементы списка, ни про какую текущую строку, речи не было. Если ты просто находишь ее сравнивая все ячейки строки с другими строками, то это добавляется элементарно. Хотя и не очень надежно.
#11, 10 декабря 2025 00:09
(8) tormozit, сделан для тестов.
#12, ред. 10 декабря 2025 00:10
(10) bolsun, в (6) я писал
Да. Номер текущей строки я вычисляю по равенству всех ячеек. Было бы здорово иметь более надежный метод, но и этого в большинстве случаев хватает.
#13, ред. 10 декабря 2025 00:33
6.6.9475.4453
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
Работу метода ПолучитьВидимыеЭлементыСписка исправил.
Также добавлен параметр КоличествоСтрок. Какое количество строк нужно получить, если не задано получает все видимые строки. Необязательный. По умолчанию 0. Число.
Метод ПолучитьЭлементыСписка теперь использует новый надежный алгоритм.
#14, ред. 10 декабря 2025 00:35
Индекс текущей строки, мне пока не нужен. Ты метод ПолучитьЭлементыСписка использовать не планируешь, поэтому добавлю если у меня или у пользователей возникнет такая необходимость.
#15, ред. 10 декабря 2025 06:58
(13) bolsun, Проверил. ПолучитьВидимыеЭлементыСписка исправлен. Его новый параметр КоличествоСтрок в целом полезен, но в моем алгоритме не пригодился.

Но ПолучитьЭлементыСписка(), как и в прошлой версии, работает не всегда корректно. Например тут возвращает 4 строки
Мой метод тут возвращает 5 строк.
#16, 10 декабря 2025 13:39
(15) tormozit, после нажатия Home, сразу начиналось листание, не получая первую страницу, исправил.
6.6.9475.28085
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
#17, ред. 10 декабря 2025 20:56
(16) bolsun, проблема (15) устранена. Но ПолучитьЭлементыСписка() неправильно вычисляет число колонок в некоторых списках. Например в замере производительности.

#18, 10 декабря 2025 23:36
(17) tormozit, исправил
6.6.9476.2782
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
#19, ред. 10 декабря 2025 23:50
(18) bolsun, Проверил. Проблема (17) устранена. Но в списке полей набора данных схемы компоновки возвращается двойной набор содержимого

ааа.xml
#20, 11 декабря 2025 02:24
(19) tormozit, твой метод тоже задваивается, т.к. на одной и той-же странице меняется набор значений в зависимости от текущей ячейки.
Вот поиск с твоим методом.
#21, 11 декабря 2025 02:26
Например меняется
Регистратор Заголовок на Регистратор Автозаголовок.
Общий реквизит1 Заголовок Общий реквизит1 Автозаголовок
Это конечно можно обработать, но нужно понимать единственное ли это изменение.
#22, ред. 14 декабря 2025 23:11
(20) bolsun, подтверждаю.
#23, 14 декабря 2025 23:11
tormozit изменил статус на Закрыто