Конструктор запроса, пожелание
|
|
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
|
|
| |