Пятница, 11.10.2024, 07:39
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Конструктор запроса, пожелание
unichkinДата: Четверг, 28.07.2016, 11:11 | Сообщение # 1
Полковник
Группа: Проверенные
Сообщений: 200
Репутация: 37
Статус: Оффлайн
Добрый день. Нужен инструмент для быстрого изменения синонимов таблицы. Т.е. есть например ВТ "Продажи", у одного из выходных полей есть синоним "РеглОплатаПланаПоПродажам", я хочу заменить его на "рег_План_Оплата" - и везде, где он далее используется чтобы сработала такая автозамена.  Возможно ли это?
 
tormozitДата: Понедельник, 01.08.2016, 00:20 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6387
Репутация: 165
Статус: Оффлайн
Достаточно изменить псевдоним выбранной таблицы.
 
unichkinДата: Четверг, 04.08.2016, 12:09 | Сообщение # 3
Полковник
Группа: Проверенные
Сообщений: 200
Репутация: 37
Статус: Оффлайн
Не то. Вот пример:

ВЫБРАТЬ
    т1.ФИО КАК Сотрудник
ПОМЕСТИТЬ ВТ_УволенныеСотрудники
ИЗ (    
        ВЫБРАТЬ
            ВТ_Сотрудники .ФизЛицо КАК ФИО
        ИЗ ВТ_Сотрудники КАК ВТ_Сотрудники  
        ГДЕ ВТ_Сотрудники.Уволен) КАК т1
;
ВЫБРАТЬ 
    ВЫБОР КОГДА ВТ_УволенныеСотрудники.Сотрудник.ПОЛ = "М" ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК ПолЧислом
ИЗ 
    ВТ_УволенныеСотрудники  КАК ВТ_УволенныеСотрудники 

Если я с помощью ИР изменяю псевдоним в вложенном запросе с "ФИО" на например "УволенныйСотрудник", то псевдоним в верхней выборке остается прежним. А мне нужно чтобы была выполнена сквозная замена по всему запросу - в т.ч. и в формулах. 
Т.е. на выходе хочу получить:

ВЫБРАТЬ 
    т1.УволенныйСотрудник КАК УволенныйСотрудник
ПОМЕСТИТЬ ВТ_УволенныеСотрудники 
ИЗ (    
        ВЫБРАТЬ 
            ВТ_Сотрудники .ФизЛицо КАК УволенныйСотрудник // Я меняю алиас только здесь
        ИЗ ВТ_Сотрудники КАК ВТ_Сотрудники  
        ГДЕ ВТ_Сотрудники.Уволен) КАК т1
;
ВЫБРАТЬ 
    ВЫБОР КОГДА ВТ_УволенныеСотрудники.УволенныйСотрудник.ПОЛ = "М" ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК ПолЧислом
ИЗ 
    ВТ_УволенныеСотрудники  КАК ВТ_УволенныеСотрудники
 
tormozitДата: Четверг, 04.08.2016, 23:05 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 6387
Репутация: 165
Статус: Оффлайн
Проверил твой пример. Поле во внешнем запросе переименовалось, как ты желаешь.
Подозреваю, что ты опять путаешь названия инструментов и на самом деле имел ввиду не конструктор запроса.
Поэтому предлагаю тебе всегда вставлять скриншот, чтобы даже если опять напутаешь, я бы мог это сразу выявить.
 
unichkinДата: Пятница, 05.08.2016, 21:55 | Сообщение # 5
Полковник
Группа: Проверенные
Сообщений: 200
Репутация: 37
Статус: Оффлайн
Я помню свои ошибки) И говорю именно о конструкторе. Псевдоним заменяется только у верхнего поля, а дальше - нет. Т.е. конструктор на выходе даст вместо "  т1.ФИО КАК Сотрудник " => "т1.УволенныйСотрудник КАК Сотрудник ". А я хочу чтобы получалось ""т1.УволенныйСотрудник КАК УволенныйСотрудник " - и далее, в т.ч.  и формулах. Могу вечером видео записать.

Добавлено (05.08.2016, 21:55)
---------------------------------------------
Добавил видео https://youtu.be/7M1OW6EgYas

 
tormozitДата: Суббота, 06.08.2016, 14:32 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 6387
Репутация: 165
Статус: Оффлайн
Ты хочешь чтобы переименование одного поля, автоматически переименовывало другое поле, которое с ним жестко не связано. Это будет часто вредно. Поэтому так делать я не буду. Замечу что штатный конструктор запроса это тоже не делает именно по той же причине.
Однако в процессе анализа твоего обращения я нашел ошибку - после переименования поля временной таблицы не выполняется переименование обращений к нему во всех выражениях запроса. Т.е. если в твоем примере поле Сотрудник (псевдоним)
Цитата
ВЫБРАТЬ
    т1.ФИО КАК Сотрудник
переименовать на Сотрудник1, то во втором запросе переименования не произойдет.
Эта ошибка будет исправлена в следующей версии.
 
unichkinДата: Воскресенье, 07.08.2016, 01:33 | Сообщение # 7
Полковник
Группа: Проверенные
Сообщений: 200
Репутация: 37
Статус: Оффлайн
"автоматически переименовывало другое поле, которое с ним жестко не связано" - как "жестко не связано"? Куда жестче-то?)
Т.е.
Выбрать Товары.ЕдиницаИзмерения КАК ЕдИзм ИЗ ВТ_Товары Поместить ВТ_РеквизитыТоваров;
Выбрать ВТ_РеквизитыТоваров.ЕдИзм ИЗ ВТ_РеквизитыТоваров

- ты хочешь сказать что нельзя считать связь "ВТ_РеквизитыТоваров.ЕдИзм"  с "Товары.ЕдиницаИзмерения КАК ЕдИзм" жесткой связью? Одно следует из другого, тут все прямолинейно. Или я не понял, что подразумевается под "жесткой" связью. И как это может быть вредно? Я вижу единственно возможную конфликтную ситуацию - когда в следующей выборке назначается такой-же алиас для поля другой таблицы. Но это момент исключения, который можно проанализировать и дать алерт.
p.s. Это все конечно - только мои мысли. Нет так нет. 
p.p.s У меня реально ситуация сейчас с огромным запросом в 100 выходных полей, который нужно привести в порядок. Если откинуть все рассуждения о изначально неправильном подходе, первый шаг на пути "конфетка из г..на" - это привести его в более-менее читабельный вид. Причем - такой случай у меня далеко не первый. Просто мне кажется, такая фишка будет востребована, потому и создал тему.
 
tormozitДата: Воскресенье, 07.08.2016, 10:07 | Сообщение # 8
Генералиссимус
Группа: Администраторы
Сообщений: 6387
Репутация: 165
Статус: Оффлайн
Жесткая связь - одинаковое имя поля в разных местах запроса, при изменении одного из которых запрос становится логически некорректным. Платформа выдаст ошибку при попытке его выполнить или загрузить в конструктор запроса. Именно такую проблему я обнаружил и она будет исправлена.
Гибкая связь - связь между полем слева и справа от слова КАК или же между полем и его псевдонимом. Ее невозможно разорвать.
 
tormozitДата: Понедельник, 08.08.2016, 00:57 | Сообщение # 9
Генералиссимус
Группа: Администраторы
Сообщений: 6387
Репутация: 165
Статус: Оффлайн
Указанная в http://devtool1c.ucoz.ru/forum/3-519-2299-16-1470483154 ошибка исправлено в 3.74
 
  • Страница 1 из 1
  • 1
Поиск: