Пятница, 19.10.2018, 16:18
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Основной » Проблемные ситуации » Функция ирОбщий.ИменаИспользуемыхВЗапросеВременныхТаблицЛк (Новые возможности в платформе 8.3.8)
Функция ирОбщий.ИменаИспользуемыхВЗапросеВременныхТаблицЛк
gslawaДата: Пятница, 26.01.2018, 06:43 | Сообщение # 1
Лейтенант
Группа: Проверенные
Сообщений: 43
Репутация: 18
Статус: Оффлайн
Функция ирОбщий.ИменаИспользуемыхВЗапросеВременныхТаблицЛк получает имена ВТ только из текста запроса пытаясь рег.выражениями найти имена идущие после "ИЗ|СОЕДИНЕНИЕ|УНИЧТОЖИТЬ".
Это приводит к получению имен ВТ вроде "Документ.Реализация".

В платформе 8.3.8 у объекта МенеджерВременныхТаблиц появилось новое свойство Таблицы в котором хранятся имена ВТ.

Пожалуйста переделайте функцию ИменаИспользуемыхВЗапросеВременныхТаблицЛк на получение имен из МенеджерВТ.Таблицы и из теста запроса после "ПОМЕСТИТЬ"

Сапасибо
 
tormozitДата: Пятница, 26.01.2018, 06:58 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 2085
Репутация: 27
Статус: Оффлайн
Я поддерживаю платформы 1С начиная с 8.2.12. Поэтому такое изменение нет смысла делать. Если есть какая то проблема, то рекомендую описать способ ее воспроизведения.
 
gslawaДата: Пятница, 26.01.2018, 07:01 | Сообщение # 3
Лейтенант
Группа: Проверенные
Сообщений: 43
Репутация: 18
Статус: Оффлайн
Так-же, в связи с этим, становится возможно в функцию От() передать МенеджерВТ, чтоб посмотреть его содержимое.

Пока, для просмотра содержимого ВТ, сделал такую функцию:
Код
Функция ОтМенеджерВТ(МенеджерВТ) Экспорт
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
    Для каждого эл Из МенеджерВТ.Таблицы Цикл
  Запрос.Текст = Запрос.Текст +
  "ВЫБРАТЬ
   |    *
   |ИЗ
   |    "+эл.ПолноеИмя+"
   |ГДЕ
   |    ЛОЖЬ
   |;";
    КонецЦикла;
    
    Возврат От(Запрос);
КонецФункции

Добавлено (26.01.2018, 07:01)
---------------------------------------------

Цитата tormozit ()
Я поддерживаю платформы 1С начиная с 8.2.12. Поэтому такое изменение нет смысла делать. Если есть какая то проблема, то рекомендую описать способ ее воспроизведения.


Так в том-то и дело, что эта функция написана чтоб работать на платформах до 8.3.8
А с 8.3.8 её можно переделать на более правильную
 
tormozitДата: Пятница, 26.01.2018, 07:02 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 2085
Репутация: 27
Статус: Оффлайн
Для этого есть функция ПолВТ
 
tormozitДата: Пятница, 26.01.2018, 07:03 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 2085
Репутация: 27
Статус: Оффлайн
Опиши сначала полностью проблему, а потом уже способ ее решения.
 
gslawaДата: Пятница, 26.01.2018, 07:08 | Сообщение # 6
Лейтенант
Группа: Проверенные
Сообщений: 43
Репутация: 18
Статус: Оффлайн
Цитата tormozit ()
Для этого есть функция ПолВТ

Она так-же использует функцию из заголовка ИменаИспользуемыхВЗапросеВременныхТаблицЛкс
 
tormozitДата: Пятница, 26.01.2018, 07:18 | Сообщение # 7
Генералиссимус
Группа: Администраторы
Сообщений: 2085
Репутация: 27
Статус: Оффлайн
И это правильно, т.к. заявлена опять же поддержка 8.2.12+
 
gslawaДата: Пятница, 26.01.2018, 07:47 | Сообщение # 8
Лейтенант
Группа: Проверенные
Сообщений: 43
Репутация: 18
Статус: Оффлайн
Код
ОС: Windows x86 Microsoft Windows 8.1 version 6.3  (Build 9600)
Платформа: 8.3.11.2954
Конфигурация: Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.57.10)
Режим БД: клиент-серверный
Приложение: Управляемое приложение 32б
Основной режим запуска: Управляемое приложение
От имени администратора Windows: Нет
Режим совместимости: Версия8_3_10
Инструменты разработчика: Подсистема 4.39


Выполняем код:
Код
    МенеджерВТ = Новый МенеджерВременныхТаблиц;
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
    
    Запрос.Текст =
    "ВЫБРАТЬ *
    |ПОМЕСТИТЬ ВТ_Валюты
    |ИЗ
    |    Справочник.Валюты КАК Валюты";
    Запрос.Выполнить();
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Ссылка КАК Ссылка,
    |    Валюты.Наценка КАК НаценкаВалюты
    |ИЗ
    |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |  ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Валюты КАК Валюты
    |  ПО РеализацияТоваровУслуг.ВалютаДокумента = Валюты.Ссылка
    |ГДЕ
    |    РеализацияТоваровУслуг.Дата >= ДатаВремя(2018, 1, 1)";
    
    От(Запрос);


Открываем в "Объекты для отладки ИР"
Получаем три виртуальные таблицы
Мне кажется должна быть одна

Добавлено (26.01.2018, 07:47)
---------------------------------------------

Цитата tormozit ()
И это правильно, т.к. заявлена опять же поддержка 8.2.12+


В том, то и дело что до 8.3.8 не возможно было посмотреть то, что находится в менеджереВТ

Может стоит подправить функцию так, чтоб она в 8.3.8+ работала более корректно, а на более старых платформах так, как сейчас.
Прикрепления: 6567611.jpg(185.0 Kb)
 
tormozitДата: Суббота, 27.01.2018, 14:31 | Сообщение # 9
Генералиссимус
Группа: Администраторы
Сообщений: 2085
Репутация: 27
Статус: Оффлайн
Спасибо. Ошибку обнаружения имен обычных таблиц в качестве имен временных таблиц воспроизвел.
 
tormozitДата: Воскресенье, 11.02.2018, 17:59 | Сообщение # 10
Генералиссимус
Группа: Администраторы
Сообщений: 2085
Репутация: 27
Статус: Оффлайн
Исправлено в 4.40
 
Форум » Основной » Проблемные ситуации » Функция ирОбщий.ИменаИспользуемыхВЗапросеВременныхТаблицЛк (Новые возможности в платформе 8.3.8)
  • Страница 1 из 1
  • 1
Поиск: