Версия подсистемы: Инструменты разработчика 8.19.1e, вариант — расширение конфигурации (CFE).
Версия платформы: 8.5.1.1343 (по коду воспроизводимо и на 8.3).
Клиентское приложение: толстый клиент, обычное приложение.
Конфигурация: <название/версия>, вариант встроенного языка — Английский.
СУБД: файловая ИБ.
В общем модуле **ирОбщий**, функция **ВычислитьКоличествоСтрокТаблицВДеревеМетаданныхЛкс**,
ветка обхода дерева метаданных (строки 24450–24464): нетабличные виды исключаются сравнением
первого фрагмента полного имени с русскими литералами:
Код
КорневойТип = ПервыйФрагментЛкс(СтрокаДерева2[ИмяКлючевойКолонки]);
Если Ложь
Или КорневойТип = "РегламентноеЗадание"
Или КорневойТип = "ОбщаяФорма"
Или КорневойТип = "Интерфейс"
Или КорневойТип = "Отчет"
Или КорневойТип = "Обработка"
Или КорневойТип = "КритерийОтбора"
...
При этом дальнейшая обработка имён (**ирКэш.ИмяТаблицыИзМетаданныхЛкс**) рассчитана на
ЛОКАЛЬНЫЕ полные имена: первый фрагмент там сравнивается с `ирОбщий.ПеревестиСтроку("Константа")`.
Если в дереве локальные (английские) имена — например «Report.InternalSettlements» из
`ПолноеИмя()` на конфигурации с английским вариантом встроенного языка — фильтр не
срабатывает («Report» ≠ «Отчет»), отчёт попадает в пакет запросов статистики, и фоновое
задание «Сбор статистики таблиц» падает:
Код
Ошибка при вызове метода контекста (ExecuteBatch)
{ИнструментыРазработчикаTormozit CommonModule.ирОбщий.Module(24681)}: РезультатПакета = Запрос.ВыполнитьПакет();
{ИнструментыРазработчикаTormozit CommonModule.ирСервер.Module(978)}: Результат = ирОбщий.ВыполнитьЗапросСтатистикиПоТаблицамЛкс(БазыДанных, Параметры, ИмяКолонкиКоличества);
по причине:
{(329, 6)}: Таблица не найдена "Report.InternalSettlements"
FROM <<?>>Report.InternalSettlements AS Т
Порядок воспроизведения:
1. Конфигурация с вариантом встроенного языка «Английский» (в составе — отчёты/обработки), ИР 8.19.1e.
2. Обеспечить в дереве метаданных локальные полные имена (например, из ПолноеИмя());
вызвать сбор статистики по дереву — Интерфейсная панель (ИР), включение количества строк.
Фактический результат: фоновое задание падает «Таблица не найдена "Report.…"».
Ожидаемый: отчёты/обработки и прочие нетабличные виды исключаются из запроса.
Предлагаемая правка — нормализовать вид перед сравнением (на русских именах ничего не меняет):
Код
КорневойТип = ПеревестиВРусский(ПервыйФрагментЛкс(СтрокаДерева2[ИмяКлючевойКолонки]));