Closed PerlAmutor closed 1 year ago
Скорее всего это ошибка платформы. Возникает при вызове метода Запрос.НайтиПараметры() с таким текстом при наличии в менеджере временных таблиц запроса каких то особых временных таблиц. Поковырялся немного, чтобы понять что в моем коде нет ошибки. Но сделать пример для отправки в тех. поддержку 1С там довольно сложно. Поэтому предоставляю эту возможность тебе =)
Боюсь что все-таки это не ошибка платформы. Я воспроизвел в обработке. ИР зачем-то добавляет лишние типы "Булево" и "Число" там где их не будет при обычном выполнении запроса.
Попробуй в модуле ирОбщий найти строку целиком
Типы.Добавить(Тип("Строка"));
и замени ее на
Типы.Добавить(Тип("Null"))
Ошибку воспроизвел https://www.hostedredmine.com/issues/961925
Типы.Добавить(Тип("Строка"));
Нашел только такое, но там уже есть Null
Ошибся. Там
Типы.Добавить(Тип("Число"));
Ошибся. Там
Типы.Добавить(Тип("Число"));
Там видимо надо две строки заменять на одну с Null
Ничего не получилось:
Когда смотрю состав типа колонки временной таблицы, то вижу "НеизвестныйОбъект":
Попробовал добавить его таким образом:
Он добавляется, но ошибка все та же, с таким типом выбрать невозможно из ТЗ. Вероятно требуется дополнительная доработка на этом участке, чтобы такой Неудобный тип переварить:
//////// Дополнение При выгрузке данных из временной таблицы этот тип теряется. Он виден получается только когда в менеджере временных таблиц состав типов просматриваешь.
Исправлено в 6.71
Проверил. Проблема осталась:
Скорее всего тут надо иначе исправлять. Как вариант сначала выбрать во временную таблицу данные с теми полями у которых есть типы, вторым запросом выбирать недостающие поля через объединение из первой временной таблицы со вторым запросом где будет в секции ГДЕ ЛОЖЬ, но только если в исходной ТЗ нет строк.
В моем тесте (указан в задаче) заработало. Сделай подобный тест для твоего случая.
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"выбрать НЕОПРЕДЕЛЕНО как ф1
|ПОМЕСТИТЬ вт
|ГДЕ ЛОЖЬ";
Запрос.Выполнить();
Запрос.Текст = "выбрать * ПОМЕСТИТЬ ВТ2 ИЗ ВТ ИНДЕКСИРОВАТЬ ПО Ф1";
ф = иробщий.ОтЛкс(Запрос,,, Истина);
В моем тесте (указан в задаче) заработало. Сделай подобный тест для твоего случая.
Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.Текст = "выбрать НЕОПРЕДЕЛЕНО как ф1 |ПОМЕСТИТЬ вт |ГДЕ ЛОЖЬ"; Запрос.Выполнить(); Запрос.Текст = "выбрать * ПОМЕСТИТЬ ВТ2 ИЗ ВТ ИНДЕКСИРОВАТЬ ПО Ф1"; ф = иробщий.ОтЛкс(Запрос,,, Истина);
Так у тебя тест некорректно сделан, попробуй такое:
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"выбрать НЕОПРЕДЕЛЕНО как ф1
|ПОМЕСТИТЬ вт
|ГДЕ ЛОЖЬ";
Запрос.Выполнить();
Запрос.Текст =
"ВЫБРАТЬ
| Т.ф1 КАК ф1
|ПОМЕСТИТЬ ВТ2
|ИЗ
| (ВЫБРАТЬ
| Т1.ф1 КАК ф1
| ИЗ
| ВТ КАК Т1
| ОБЪЕДИНИТЬ
| ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК ф1) КАК Т
|ИНДЕКСИРОВАТЬ ПО
| Ф1
|";
ф = иробщий.ОтЛкс(Запрос,,, Истина);
Да. Наконец то ты сделал правильный тест. Исправлено в 6.72.2
Спасибо, работает.
https://user-images.githubusercontent.com/87958986/230730843-e9e84697-2f07-4f49-a8b3-c4a708752457.mp4
Информация для технической поддержки
Платформа: 8.3.20.1996 Режим БД: файловый Конфигурация. Название: 1С:ERP Управление предприятием 2 (2.5.12.28) Конфигурация. Основной режим запуска: Управляемое приложение Конфигурация. Вариант встроенного языка: Русский Конфигурация. Режим управления блокировкой данных: Управляемый Конфигурация. Режим совместимости: Версия8_3_17 Конфигурация. Режим использования синхронных вызовов: Использовать Конфигурация. Версия БСП: 301 Инструменты разработчика. Версия: Портативный 6.70.1p Инструменты разработчика. Инструмент: Редактор остатков Инструменты разработчика. Перехват клавиатурного ввода: Да Инструменты разработчика. Объекты на сервере: Да Инструменты разработчика. Серверный модуль: Да Клиент. Приложение: Обычное приложение 64б Клиент. Проверка модальных вызовов: Нет Клиент. Язык интерфейса конфигурации: ru Клиент. Язык интерфейса системы: ru Клиент. Отладка разрешена: Нет Клиент. Постоянный кэш метаданных: Да Клиент. ОС: Майкрософт Windows 10 Pro 64-разрядная Русский Клиент. ОС от имени администратора: Нет Клиент. ОС выполнение BAT: Да Клиент. ОС Текущая кодовая страница: 866Воспроизведение проблемы
Сам запрос ошибок не содержит и в типовой демо-конфигурации работает.
Файл отладки прилагаю:
_08_04_202318_51_05ОтладитьСтруктура.zip