Вс, 26.07.2026, 21:27:44
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Динамический список, количество строк с отбором
zharДата: Вт, 14.07.2026, 15:13:48 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 26
Репутация: 36
Статус: Оффлайн
Версия подсистемы: Инструменты разработчика 8.19.1e, вариант — расширение конфигурации (CFE).
Версия платформы: 8.5.1.1343 (по коду воспроизводимо и на 8.3).
Клиентское приложение: толстый клиент, обычное приложение (управляемая форма инструмента).
Конфигурация: <название/версия>, вариант встроенного языка — Английский.
СУБД: файловая ИБ.

Инструмент «Динамический список (ИР)»: команда «Сколько строк» при установленном отборе
падает с ошибкой:

Код
Template string "0 КАК СлужебноеПоле3463" not found in the text
{ИнструментыРазработчикаTormozit CommonModule.ирОбщий.Module(35662)}: ВызватьИсключение ирОбщий.СтрШаблонЛкс(НСтр("ru = 'Шаблонная строка ""%1"" не найдена в тексте'..."), ЧтоЗаменять);
{ИнструментыРазработчикаTormozit CommonModule.ирОбщий.Module(31844)}: Запрос.Текст = СтрЗаменитьЛкс(Запрос.Текст, "0 КАК " + ИмяСлужебногоПоля, "РАЗРЕШЕННЫЕ КОЛИЧЕСТВО(*) КАК КоличествоСтрок");
{ИнструментыРазработчикаTormozit CommonModule.ирКлиент.Module(16969)}: Количество = ирОбщий.КоличествоСтрокВТаблицеБДЛкс(ПолноеИмяТаблицы, Отбор);
{ИнструментыРазработчикаTormozit DataProcessor.ирДинамическийСписок.Form.ФормаУпр.Form(1167)}: ирКлиент.ТабличноеПолеИлиТаблицаФормы_СколькоСтрокЛкс(ЭлементыФормы.ДинамическийСписок, НастройкиСписка);


Причина — в общем модуле **ирОбщий**, функция **КоличествоСтрокВТаблицеБДЛкс** (ветка с отбором,
строки 31833–31844): исходный текст запроса пишется с русским синтаксисом
(`"ВЫБРАТЬ Т.*, 0 КАК " + ИмяСлужебногоПоля + " ИЗ ..."`), затем пересобирается через СКД
(СоздатьСхемуКомпоновкиПоЗапросуЛкс → ЗапросИзКомпоновкиЛкс). На конфигурации с английским
вариантом встроенного языка СКД генерирует текст запроса с английскими ключевыми словами —
`0 AS СлужебноеПолеNNN` — и текстовая замена `"0 КАК " + ИмяСлужебногоПоля` не находит шаблон.

Порядок воспроизведения:
1. Конфигурация с вариантом встроенного языка «Английский», ИР 8.19.1e.
2. Динамический список (ИР) по любой таблице → установить любой отбор.
3. Команда «Сколько строк».

Фактический результат: ошибка «Шаблонная строка "0 КАК …" не найдена в тексте».
Ожидаемый: показ количества строк с учётом отбора.

Предлагаемая правка — искать тот вариант, который присутствует; строку замены можно оставить
русской (язык запросов принимает оба синтаксиса независимо от варианта встроенного языка):

Код
Запрос.Текст = СтрЗаменитьЛкс(Запрос.Текст,
    ?(Найти(Запрос.Текст, "0 КАК " + ИмяСлужебногоПоля) > 0, "0 КАК ", "0 AS ") + ИмяСлужебногоПоля,
    "РАЗРЕШЕННЫЕ КОЛИЧЕСТВО(*) КАК КоличествоСтрок");
 
tormozitДата: Ср, 15.07.2026, 23:25:37 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 7404
Репутация: 196
Статус: Оффлайн
Ошибку воспроизвел https://www.hostedredmine.com/issues/1008596
 
tormozitДата: Вс, 19.07.2026, 17:41:04 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 7404
Репутация: 196
Статус: Оффлайн
Исправлено в 8.20
 
  • Страница 1 из 1
  • 1
Поиск: