Bosma писал(а) 11. Декабря 2018 :: 09:24:ADirks писал(а) 02. Октября 2018 :: 05:03:Мой любимый вариант: по метаданным генерим view'хи с русскими именами, и далее где и как угодно пользуемся ими, а не напрямую табличками.
Собственно, тогда и метапарсер практически не нужен, и запросы прямо в студии колупать можно (ибо всё по-русски написано).
а есть скрипт по генерации view'х?
Мнгабукаф, в одно сообщение не влезает
Перем Запрос;
//===========================================================
Функция Ошибка(стрСообщение)
Сообщить(стрСообщение, "!");
ЗаписьЖурналаРегистрации(стрСообщение,, "ОшибкаПриОбновленииФункцийSQL",, 5);
//ВЛог("Общие.БД", стрСообщение);
Возврат 0;
КонецФункции
Функция СписокВСтроку(Сп, Разделитель = ",", ВключатьПустыеЗначения = 0, РазделительПредставления = "") Экспорт
Перем н, Стр, Значение, Представление, Зпт;
Стр = ""; Зпт = "";
Для н = 1 По Сп.РазмерСписка() Цикл
Значение = Строка( Сп.ПолучитьЗначение(н, Представление) );
Если (ПустаяСтрока(Значение) = 0) ИЛИ (ВключатьПустыеЗначения = 1) Тогда
Стр = Стр + Зпт + Значение;
Если РазделительПредставления <> "" Тогда
Стр = Стр + РазделительПредставления+СокрЛП(Представление);
КонецЕсли;
Зпт = Разделитель;
КонецЕсли;
КонецЦикла;
Возврат Стр;
КонецФункции
Функция СоздатьПредставление(Имя, ТекстЗапроса_Создание, фПересоздавать)
//Проверка наличия, и удаление при необходимости
Если фПересоздавать = 1 Тогда
ТекстЗапроса = "Set NoCount ON
|If OBJECT_ID('dbo."+Имя+"') Is Not Null
| DROP VIEW "+Имя+"
|SELECT 1
|";
Иначе
ТекстЗапроса = "Set NoCount ON
|SELECT CASE WHEN OBJECT_ID('dbo."+Имя+"') Is Null THEN 1 ELSE 0 END
|";
КонецЕсли;
Попытка
фСоздавать = Запрос.ВыполнитьСкалярный(ТекстЗапроса);
Исключение
Ошибка(ТекстЗапроса_Создание+"
|"+Запрос.ПолучитьОписаниеОшибки());
Возврат 0;
КонецПопытки;
Если фСоздавать = 0 Тогда
Возврат 1;
КонецЕсли;
//Собственно создание View
Если Запрос.Выполнить(ТекстЗапроса_Создание) <> 1 Тогда
Ошибка(ТекстЗапроса_Создание+"
|"+Запрос.ПолучитьОписаниеОшибки());
Возврат 0;
КонецЕсли;
Возврат 1;
КонецФункции