Версия подсистемы: Инструменты разработчика 8.19.1e, вариант — расширение конфигурации (CFE).
Версия платформы: 8.5.1.1343 (дефект от платформы не зависит).
Клиентское приложение: толстый клиент, обычное приложение.
Конфигурация: <название/версия>, вариант встроенного языка — Английский (как условие проявления).
СУБД: файловая ИБ.
В общем модуле **ирОбщий**, процедура **ЗаполнитьКоличестваСтрокВТаблицеВсехТаблицЛкс**
(строки 24714–24715), результат поиска таблицы в кэше используется без проверки:
Код
ОписаниеТаблицы = СписокТаблиц.Найти(НРег(СтрокаРезультата.ИмяТаблицы), "НПолноеИмя"); // ирОбщий.ОписаниеТаблицыБДЛкс()
ОписаниеТаблицы.КоличествоСтрок = СтрокаРезультата[ИмяКолонкиКоличества];
Если имя из результата статистики не находится в кэше таблиц — у нас это происходило на
конфигурации с английским вариантом встроенного языка (дерево интерфейсной панели формирует
полные имена с русскими префиксами видов, а кэш таблиц содержит английские имена) — форма
падает при обработке завершения фонового задания:
Значение не является значением объектного типа (КоличествоСтрок)
{ИнструментыРазработчикаTormozit CommonModule.ирОбщий.Module(24715)}: ОписаниеТаблицы.КоличествоСтрок = СтрокаРезультата[ИмяКолонкиКоличества];
{ИнструментыРазработчикаTormozit DataProcessor.ирИнтерфейснаяПанель.Form.Форма.Form(2426)}: ирОбщий.ЗаполнитьКоличестваСтрокВТаблицеВсехТаблицЛкс(РезультатЗадания);
{(1)}: ЭтаФорма.ОбновитьСтатистикуЗавершение(Состояние, Результат)
{ИнструментыРазработчикаTormozit CommonModule.ирКлиент.Module(17611)}: Выполнить("ЭтаФорма." + ОписаниеЗадания.ОбработчикЗавершения + "(Состояние, Результат)");
Ниже в этой же процедуре аналогичная проверка уже есть (строки 24719–24722, для «Константы»):
Код
ОписаниеТаблицы = ОписаниеТаблицыБДЛкс("Константы");
Если ОписаниеТаблицы <> Неопределено Тогда
ОписаниеТаблицы.КоличествоСтрок = 1;
КонецЕсли;
Порядок воспроизведения:
1. Конфигурация с вариантом встроенного языка «Английский», ИР 8.19.1e.
2. Толстый клиент (обычное приложение) → Интерфейсная панель (ИР) → включить количество строк.
Фактический результат: ошибка «Значение не является значением объектного типа (КоличествоСтрок)».
Ожидаемый: несопоставленные таблицы пропускаются, форма работает (количество у них не показывается).
Предлагаемая правка:
Код
ОписаниеТаблицы = СписокТаблиц.Найти(НРег(СтрокаРезультата.ИмяТаблицы), "НПолноеИмя");
Если ОписаниеТаблицы <> Неопределено Тогда
ОписаниеТаблицы.КоличествоСтрок = СтрокаРезультата[ИмяКолонкиКоличества];
КонецЕсли;