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