Вс, 26.07.2026, 16:36:40
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Интерфейсная панель: количество объектов не заполняется
zharДата: Вт, 14.07.2026, 15:07:43 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 26
Репутация: 36
Статус: Оффлайн
Версия подсистемы: Инструменты разработчика 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).
Ожидаемый: количество объектов по каждой таблице раздела.

Предлагаемая правка — локализовать префикс при склейке (на русских конфигурациях ничего
не меняет), функция ПрефиксПолногоИмениМД:

Код

  ПрефиксПолногоИмени = ирОбщий.ПеревестиСтроку(Единственное) + ".";


Либо системно: заполнять ПолноеИмяОбъекта из `ОбъектМД.ПолноеИмя()` — в процедуре
**ДобавитьОбъект** уже есть параметр `ИспользоватьПолноеИмя`.
 
tormozitДата: Ср, 15.07.2026, 23:10:43 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 7404
Репутация: 196
Статус: Оффлайн
Ошибку воспроизвел (по сути дубль) https://www.hostedredmine.com/issues/1008595
 
tormozitДата: Вс, 19.07.2026, 17:41:16 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 7404
Репутация: 196
Статус: Оффлайн
Исправлено в 8.20
 
  • Страница 1 из 1
  • 1
Поиск: