mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 05:04:11 +00:00
*Исправлена ошибка открытия формы "О подсистеме" на 8.2.17-
*Исправлена ошибка кнопки "Открыть связанный тонкий клиент" на 8.2
*Исправлена ошибка создания служебного пользователя внешнего соединения вызывает ошибку в разделенной базе
Портативный
*Исправлена ошибка запуска в разделенной базе
Управление итогами
*Увеличен таймаут при выполнении запросов ADO до 120 секунд
Анализ журнала регистрации
*Оптимизировано отображение очень больших выборок
+Добавлено отображение разделителей сеансов
Консоль заданий
*По умолчанию период выборки теперь 30 мин
Редактор пользователей
*Устранены ошибки при работе в разделенной базе
Редактор констант
*Исправлена ошибка открытия в неразделенном сеансе разделенной базы
+Теперь при пропуске недоступных констант выводятся сообщения с их именами и отображается индикатор наличия таких констант
Редакторе объекта БД
*Исправлен в режиме совместимости 8.2.16 при записи объектов выводит сообщения об ошибке установки реквизита "ИмяПредопределенныхДанных"
*Исправлены привязки на последней закладке"Связанные колонки БД"
*Исправлены ошибки в разделенной базе
Выгрузка/загрузка данных через файл
*Исправлена ошибка кнопки "Отбор без значения в ячейке" в командной панели списка ошибок
Консоль запросов
+В режиме заполнения коллекции теперь доступны все операции
*Исправлено определение границ текста узлов при наличии крайних комментариев
849 lines
59 KiB
Plaintext
849 lines
59 KiB
Plaintext
//ирПортативный Перем ирПортативный Экспорт;
|
||
//ирПортативный Перем ирОбщий Экспорт;
|
||
//ирПортативный Перем ирСервер Экспорт;
|
||
//ирПортативный Перем ирКэш Экспорт;
|
||
//ирПортативный Перем ирПривилегированный Экспорт;
|
||
|
||
#Если Клиент Тогда
|
||
Перем мОбъектЗапроса Экспорт; // запрос
|
||
Перем мКомандаADO Экспорт; // запрос
|
||
Перем мСоединениеADO Экспорт; // запрос
|
||
Перем мWMIService Экспорт; // запрос
|
||
Перем мСтрокаЗапроса;
|
||
Перем мРежимРедактораЗапроса Экспорт; // Консоль открывается для редактирования одного запроса
|
||
Перем мСсылка Экспорт;
|
||
Перем мРедактируемыйНаборДанных Экспорт;
|
||
Перем мРежимОтладки Экспорт;
|
||
Перем мКоллекцияДляЗаполнения Экспорт;
|
||
Перем мПлатформыADODB Экспорт;
|
||
Перем мВременныеТаблицыМенеджера1С Экспорт; // Структура имен временных таблиц 1С менеджера временных таблиц
|
||
|
||
Функция ПолучитьНовуюТаблицуПараметров()
|
||
|
||
ТаблицаПараметров = Новый ТаблицаЗначений;
|
||
|
||
// Порядок должен соответствовать установленному в табличном поле!
|
||
ТаблицаПараметров.Колонки.Добавить("ИмяПараметра", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(100))); // Квалификатор продублирован в поле ввода колонки
|
||
ТаблицаПараметров.Колонки.Добавить("ЭтоВыражение");
|
||
ТаблицаПараметров.Колонки.Добавить("Выражение", Новый ОписаниеТипов("Строка"));
|
||
ТаблицаПараметров.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов"));
|
||
ТаблицаПараметров.Колонки.Добавить("НеИспользоватьОграничениеТипа", Новый ОписаниеТипов("Булево"));
|
||
ТаблицаПараметров.Колонки.Добавить("Значение"); // Без колонки ТП
|
||
ТаблицаПараметров.Колонки.Добавить("НИмяПараметра", ТаблицаПараметров.Колонки.ИмяПараметра.ТипЗначения); // Без колонки ТП
|
||
Возврат ТаблицаПараметров;
|
||
|
||
КонецФункции // ПолучитьНовуюТаблицуПараметров()
|
||
|
||
Процедура ИнициализацияСлужебногоРежима()
|
||
|
||
ЭтотОбъект.ИспользоватьАвтосохранение = Ложь;
|
||
мСтрокаЗапроса = ДеревоЗапросов.Строки.Добавить();
|
||
мСтрокаЗапроса.ПараметрыЗапроса = ПолучитьНовуюТаблицуПараметров();
|
||
|
||
КонецПроцедуры // ИнициализацияСлужебногоРежима
|
||
|
||
Процедура ДобавитьПараметрыИзЗапроса(пЗапросОтладки, пСтрокаЗапроса)
|
||
|
||
ТаблицаПараметров = пСтрокаЗапроса.ПараметрыЗапроса;
|
||
ОписаниеТиповЭлементаУправленияПараметра = ТаблицаПараметров.Колонки.Значение.ТипЗначения;
|
||
МаркерНеверныхПараметров = "Неверные параметры";
|
||
ЗапросОтладки = Новый Запрос(пЗапросОтладки.Текст);
|
||
ЗапросОтладки.МенеджерВременныхТаблиц = пЗапросОтладки.МенеджерВременныхТаблиц;
|
||
Попытка
|
||
ПараметрыЗапроса = ЗапросОтладки.НайтиПараметры();
|
||
Исключение
|
||
Сообщить(ОписаниеОшибки());
|
||
ПараметрыЗапроса = Новый Массив;
|
||
КонецПопытки;
|
||
// Получим значения использованных в тексте параметров
|
||
Для каждого ПараметрЗапроса Из ПараметрыЗапроса Цикл
|
||
Если ТаблицаПараметров.Найти(ПараметрЗапроса.Имя, "НИмяПараметра") <> Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
ИмяПараметра = ПараметрЗапроса.Имя;
|
||
СтрокаПараметров = ТаблицаПараметров.Добавить();
|
||
СтрокаПараметров.ИмяПараметра = ИмяПараметра;
|
||
ирОбщий.ОбновитьКопиюСвойстваВНижнемРегистреЛкс(СтрокаПараметров, "ИмяПараметра");
|
||
СтрокаПараметров.ЭтоВыражение = Ложь;
|
||
СтрокаПараметров.ТипЗначения = ПараметрЗапроса.ТипЗначения;
|
||
ЗначениеПараметраЗапроса = 0;
|
||
Если пЗапросОтладки.Параметры.Свойство(ИмяПараметра, ЗначениеПараметраЗапроса) Тогда
|
||
ЗначениеПараметраЗапроса = ирОбщий.ПолучитьСовместимоеЗначениеПараметраЛкс(ЗначениеПараметраЗапроса, ИмяПараметра, ОписаниеТиповЭлементаУправленияПараметра);
|
||
ТипЗначенияПараметра = ТипЗнч(ЗначениеПараметраЗапроса);
|
||
СтрокаПараметров.Значение = ЗначениеПараметраЗапроса;
|
||
Если ТипЗначенияПараметра = Тип("СписокЗначений") Тогда
|
||
СтрокаПараметров.ЭтоВыражение = 2;
|
||
ИначеЕсли ОписаниеТиповЭлементаУправленияПараметра.СодержитТип(ТипЗначенияПараметра) Тогда
|
||
Иначе
|
||
СтрокаПараметров.НеИспользоватьОграничениеТипа = Истина;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
// Получим значения установленных параметров
|
||
ДополнитьТаблицуПараметровЗапросаПоСтруктуре(пЗапросОтладки.Параметры, ТаблицаПараметров);
|
||
|
||
КонецПроцедуры // ДобавитьПараметрыИзЗапроса()
|
||
|
||
Функция ДополнитьТаблицуПараметровЗапросаПоСтруктуре(СтруктураПараметров, пТаблицаПараметров)
|
||
|
||
Для каждого КлючИЗначение Из СтруктураПараметров Цикл
|
||
Если пТаблицаПараметров.Найти(НРег(КлючИЗначение.Ключ), "НИмяПараметра") <> Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
ИмяПараметра = КлючИЗначение.Ключ;
|
||
СтрокаПараметров = пТаблицаПараметров.Добавить();
|
||
СтрокаПараметров.ИмяПараметра = ИмяПараметра;
|
||
ирОбщий.ОбновитьКопиюСвойстваВНижнемРегистреЛкс(СтрокаПараметров, "ИмяПараметра");
|
||
СтрокаПараметров.ЭтоВыражение = Ложь;
|
||
СтрокаПараметров.Значение = КлючИЗначение.Значение;
|
||
Если ТипЗнч(КлючИЗначение.Значение) = Тип("СписокЗначений") Тогда
|
||
СтрокаПараметров.ЭтоВыражение = 2;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Возврат Неопределено;
|
||
|
||
КонецФункции
|
||
|
||
Функция ОткрытьПоОбъектуМетаданных(ПолноеИмяМД) Экспорт
|
||
|
||
ИнициализацияСлужебногоРежима();
|
||
ТекстЗапроса = "ВЫБРАТЬ
|
||
| *
|
||
|ИЗ
|
||
| " + ПолноеИмяМД + " КАК Т";
|
||
мСтрокаЗапроса.ТекстЗапроса = ТекстЗапроса;
|
||
мСтрокаЗапроса.Запрос = ПолноеИмяМД;
|
||
Форма = ЭтотОбъект.ПолучитьФорму();
|
||
Форма.Открыть();
|
||
Возврат Форма;
|
||
|
||
КонецФункции
|
||
|
||
// ТекстЗапроса - Строка - используется только в случае, если сам объект не содержит свойста с текстом (например WMI)
|
||
// ТекстЗапросаИлиИменаВременныхТаблиц - Строка, - текст запроса или имена временных таблиц через запятую
|
||
Функция ОткрытьДляОтладки(Запрос, ТипЗапроса = "Обычный", ИмяЗапроса = "Запрос для отладки", Модально = Истина, ТекстЗапросаИлиИменаВременныхТаблиц = "") Экспорт
|
||
|
||
ИнициализацияСлужебногоРежима();
|
||
Если ТипЗнч(Запрос) = Тип("COMОбъект") Тогда
|
||
ТекстЗапроса = ТекстЗапросаИлиИменаВременныхТаблиц;
|
||
ТипЗапроса = "WQL";
|
||
мWMIService = Запрос;
|
||
Попытка
|
||
ТекстЗапроса = Запрос.CommandText;
|
||
ЭтоКомандаADO = Истина;
|
||
ТипЗапроса = "ADO";
|
||
мКомандаADO = Запрос;
|
||
Исключение
|
||
ЭтоКомандаADO = Ложь;
|
||
Попытка
|
||
Пустышка = Запрос.ConnectionString;
|
||
ЭтоСоединениеADO = Истина;
|
||
ТипЗапроса = "ADO";
|
||
мСоединениеADO = Запрос;
|
||
Исключение
|
||
ЭтоСоединениеADO = Ложь;
|
||
КонецПопытки;
|
||
КонецПопытки;
|
||
Иначе
|
||
мОбъектЗапроса = Запрос;
|
||
ТекстЗапроса = мОбъектЗапроса.Текст;
|
||
КонецЕсли;
|
||
мСтрокаЗапроса.ТекстЗапроса = ТекстЗапроса;
|
||
мСтрокаЗапроса.Запрос = ИмяЗапроса;
|
||
мСтрокаЗапроса.ТипЗапроса = ТипЗапроса;
|
||
мРежимОтладки = Истина;
|
||
Форма = ЭтотОбъект.ПолучитьФорму();
|
||
мСтрокаЗапроса.ПараметрыЗапроса = ПолучитьНовуюТаблицуПараметров();
|
||
Если ТипЗнч(Запрос) = Тип("COMОбъект") Тогда
|
||
Если ТипЗапроса = "ADO" Тогда
|
||
Если ЭтоКомандаADO Тогда
|
||
Форма.СтрокаСоединенияADO = Запрос.ActiveConnection.ConnectionString;
|
||
Форма.ИменованныеПараметрыADO = Запрос.NamedParameters;
|
||
Если Запрос.NamedParameters Тогда
|
||
СтруктураПараметров = Новый Структура();
|
||
Для Каждого Parameter Из Запрос.Parameters Цикл
|
||
КлючПараметра = Parameter.Name;
|
||
Если Не ирОбщий.ЛиИмяПеременнойЛкс(КлючПараметра) Тогда
|
||
КлючПараметра = "_" + КлючПараметра;
|
||
КонецЕсли;
|
||
Если Не ирОбщий.ЛиИмяПеременнойЛкс(КлючПараметра) Тогда
|
||
КлючПараметра = КлючПараметра + XMLСтрока(СтруктураПараметров.Количество());
|
||
КонецЕсли;
|
||
Если СтруктураПараметров.Свойство(КлючПараметра) Тогда
|
||
ВызватьИсключение "Не удалось назначить параметру уникальное имя";
|
||
КонецЕсли;
|
||
СтруктураПараметров.Вставить(КлючПараметра, Parameter.Value);
|
||
КонецЦикла;
|
||
Иначе
|
||
СтруктураПараметров = Новый ТаблицаЗначений;
|
||
СтруктураПараметров.Колонки.Добавить("Ключ");
|
||
СтруктураПараметров.Колонки.Добавить("Значение");
|
||
Для Каждого Parameter Из Запрос.Parameters Цикл
|
||
СтрокаТаблицы = СтруктураПараметров.Добавить();
|
||
СтрокаТаблицы.Ключ = Parameter.Name;
|
||
СтрокаТаблицы.Значение = Parameter.Value;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
ДополнитьТаблицуПараметровЗапросаПоСтруктуре(СтруктураПараметров, мСтрокаЗапроса.ПараметрыЗапроса);
|
||
Иначе
|
||
Форма.СтрокаСоединенияADO = Запрос.ConnectionString;
|
||
КонецЕсли;
|
||
Форма.ПлатформаADO = НайтиПлатформуADOПоСтрокеСоединения(Форма.СтрокаСоединенияADO);
|
||
КонецЕсли;
|
||
Иначе
|
||
ДобавитьПараметрыИзЗапроса(Запрос, мСтрокаЗапроса);
|
||
ИменаВременныхТаблиц = ирОбщий.ИменаИспользуемыхВЗапросеВременныхТаблицЛкс(Запрос, ТекстЗапросаИлиИменаВременныхТаблиц);
|
||
Для Каждого ИмяВременнойТаблицы Из ИменаВременныхТаблиц Цикл
|
||
Если Не ирОбщий.ЛиИмяПеременнойЛкс(ИмяВременнойТаблицы) Тогда
|
||
ВызватьИсключение "Указано некорректное имя временной таблицы """ + ИмяВременнойТаблицы + """";
|
||
КонецЕсли;
|
||
мВременныеТаблицыМенеджера1С.Вставить(ИмяВременнойТаблицы);
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Если Модально Тогда
|
||
Возврат Форма.ОткрытьМодально();
|
||
Иначе
|
||
Форма.Открыть();
|
||
КонецЕсли;
|
||
|
||
КонецФункции
|
||
|
||
Функция ОткрытьЗапросБД(ТекстЗапроса, ИмяЗапроса = "Запрос для отладки", Параметры = Неопределено, Автоподключение = Ложь) Экспорт
|
||
|
||
ИнициализацияСлужебногоРежима();
|
||
мСтрокаЗапроса.ТекстЗапроса = ТекстЗапроса;
|
||
мСтрокаЗапроса.Запрос = ИмяЗапроса;
|
||
мСтрокаЗапроса.ТипЗапроса = "ADO";
|
||
мРежимОтладки = Истина;
|
||
мСтрокаЗапроса.ПараметрыЗапроса = ПолучитьНовуюТаблицуПараметров();
|
||
Если Параметры <> Неопределено Тогда
|
||
Для каждого СтрокаПараметраИсточника Из Параметры Цикл
|
||
СтрокаПараметров = мСтрокаЗапроса.ПараметрыЗапроса.Добавить();
|
||
СтрокаПараметров.ИмяПараметра = СтрокаПараметраИсточника.Имя;
|
||
ирОбщий.ОбновитьКопиюСвойстваВНижнемРегистреЛкс(СтрокаПараметров, "ИмяПараметра");
|
||
СтрокаПараметров.ЭтоВыражение = Ложь;
|
||
СтрокаПараметров.Значение = СтрокаПараметраИсточника.Значение;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
ИсточникДанных = ПолучитьСтруктуруИсточникаДанныхADO();
|
||
ЗаполнитьПараметрыADOДляЭтойБД(ИсточникДанных, Автоподключение);
|
||
мСтрокаЗапроса.ПараметрыADO = ИсточникДанных;
|
||
Форма = ЭтотОбъект.ПолучитьФорму();
|
||
Форма.Открыть();
|
||
|
||
КонецФункции
|
||
|
||
Процедура ЗаполнитьПараметрыADOДляЭтойБД(Знач ИсточникДанных, Автоподключение = Ложь) Экспорт
|
||
|
||
ФормаПодключения = ирОбщий.ОткрытьФормуСоединенияСУБДЛкс(Автоподключение);
|
||
//ФормаПодключения.Закрыть();
|
||
ИсточникДанных.Платформа = 11; // ADO-SQLOLEDB
|
||
ИсточникДанных.БазаСервер = ФормаПодключения.ИмяСервера;
|
||
ИсточникДанных.БазаИмя = ФормаПодключения.ИмяБД;
|
||
ИсточникДанных.АутентификацияОС = Не ЗначениеЗаполнено(ФормаПодключения.ИмяПользователя);
|
||
ИсточникДанных.Пользователь = ФормаПодключения.ИмяПользователя;
|
||
ИсточникДанных.Пароль = ФормаПодключения.Пароль;
|
||
ИсточникДанных.Вставить("Типизировать1С", Истина);
|
||
ИсточникДанных.Вставить("БинарныеВСтроку", Истина);
|
||
ИсточникДанных.Вставить("ИспользованиеGWF", 1);
|
||
ИсточникДанных.Вставить("СмещениеГодаADO", 2000);
|
||
//ИсточникДанных.Вставить("РасширенноеПолучениеМетаданных", РасширенноеПолучениеМетаданных);
|
||
|
||
КонецПроцедуры
|
||
|
||
//Параметры:
|
||
// Коллекция - ТаблицаЗначений, ДеревоЗначений - если без колонок, то результату разрешается иметь произвольные колонки, иначе они фиксированы
|
||
// Запрос - Запрос, *Неопределено - начальный запрос
|
||
Функция ОткрытьДляЗаполненияКоллекции(КоллекцияДляЗаполнения, Запрос = Неопределено, ТипЗапроса = "Компоновка", Имя = "Запрос") Экспорт
|
||
|
||
мКоллекцияДляЗаполнения = КоллекцияДляЗаполнения;
|
||
мРежимЗаполненияКоллекции = Истина;
|
||
ИнициализацияСлужебногоРежима();
|
||
мСтрокаЗапроса.Запрос = Имя;
|
||
мСтрокаЗапроса.ТипЗапроса = ТипЗапроса;
|
||
Если Запрос <> Неопределено Тогда
|
||
ТекстЗапроса = Запрос.Текст;
|
||
мСтрокаЗапроса.ТекстЗапроса = ТекстЗапроса;
|
||
КонецЕсли;
|
||
Форма = ЭтотОбъект.ПолучитьФорму();
|
||
Если Запрос <> Неопределено Тогда
|
||
ДобавитьПараметрыИзЗапроса(Запрос, мСтрокаЗапроса);
|
||
КонецЕсли;
|
||
Результат = Форма.ОткрытьМодально();
|
||
Если Форма.ЭлементыФормы.РезультатКоллекция.Значение.Количество() > 0 Тогда
|
||
Ответ = Вопрос("Хотите заполнить коллекцию полученным результатом?", РежимДиалогаВопрос.ОКОтмена);
|
||
Если Ответ = КодВозвратаДиалога.ОК Тогда
|
||
Возврат Форма.ЭлементыФормы.РезультатКоллекция.Значение;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Возврат Неопределено;
|
||
|
||
КонецФункции
|
||
|
||
Функция ОткрытьПоПостроителю(Построитель, ИмяЗапроса = "Исполняемый запрос построителя") Экспорт
|
||
|
||
ИнициализацияСлужебногоРежима();
|
||
мСтрокаЗапроса.Запрос = ИмяЗапроса;
|
||
ЗапросОтладки = Построитель.ПолучитьЗапрос();
|
||
мСтрокаЗапроса.ТекстЗапроса = ЗапросОтладки.Текст;
|
||
мСтрокаЗапроса.ТипЗапроса = "Построитель";
|
||
Форма = ЭтотОбъект.ПолучитьФорму();
|
||
ДобавитьПараметрыИзЗапроса(ЗапросОтладки, мСтрокаЗапроса);
|
||
мРежимОтладки = Истина;
|
||
Форма.Открыть();
|
||
|
||
КонецФункции
|
||
|
||
Функция ОткрытьПоТаблицеЗначений(ТаблицаЗначений) Экспорт
|
||
|
||
ИнициализацияСлужебногоРежима();
|
||
мСтрокаЗапроса.ТекстЗапроса = "ВЫБРАТЬ * ПОМЕСТИТЬ ТЗ ИЗ &ТЗ КАК ТЗ";
|
||
Форма = ЭтотОбъект.ПолучитьФорму();
|
||
ДополнитьТаблицуПараметровЗапросаПоСтруктуре(Новый Структура("ТЗ", ТаблицаЗначений), мСтрокаЗапроса.ПараметрыЗапроса);
|
||
Форма.Открыть();
|
||
|
||
КонецФункции
|
||
|
||
Процедура ДобавитьНаборыДанных(Родитель, ПараметрыЗапроса, НаборыДанных)
|
||
|
||
Для каждого НаборДанных Из НаборыДанных Цикл
|
||
лСтрокаЗапроса = Неопределено;
|
||
Если ТипЗнч(НаборДанных) = Тип("НаборДанныхЗапросМакетаКомпоновкиДанных") Тогда
|
||
лСтрокаЗапроса = Родитель.Строки.Добавить();
|
||
лСтрокаЗапроса.Запрос = НаборДанных.Имя;
|
||
лСтрокаЗапроса.ТекстЗапроса = НаборДанных.Запрос;
|
||
лСтрокаЗапроса.ПараметрыЗапроса = ПараметрыЗапроса.Скопировать();
|
||
лСтрокаЗапроса.ТипЗапроса = "Компоновка";
|
||
ИначеЕсли ТипЗнч(НаборДанных) = Тип("НаборДанныхОбъединениеМакетаКомпоновкиДанных") Тогда
|
||
лСтрокаЗапроса = Родитель.Строки.Добавить();
|
||
лСтрокаЗапроса.Запрос = "Объединение - " + НаборДанных.Имя;
|
||
лСтрокаЗапроса.ТипЗапроса = "Папка";
|
||
ДобавитьНаборыДанных(лСтрокаЗапроса, ПараметрыЗапроса, НаборДанных.Элементы);
|
||
КонецЕсли;
|
||
Если ТипЗнч(НаборДанных) <> Тип("ВложенныйНаборДанныхМакетаКомпоновкиДанных") Тогда
|
||
Если НаборДанных.ВложенныеНаборыДанных.Количество() > 0 Тогда
|
||
Если лСтрокаЗапроса = Неопределено Тогда
|
||
лСтрокаЗапроса = Родитель.Строки.Добавить();
|
||
лСтрокаЗапроса.Запрос = НаборДанных.Имя;
|
||
лСтрокаЗапроса.ТипЗапроса = "Папка";
|
||
КонецЕсли;
|
||
ДобавитьНаборыДанных(лСтрокаЗапроса, ПараметрыЗапроса, НаборДанных.ВложенныеНаборыДанных);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры // ДобавитьНаборыДанных()
|
||
|
||
Функция ОткрытьПоМакетуКомпоновки(МакетКомпоновки, Модально = Истина, СхемаКомпоновки = Неопределено) Экспорт
|
||
|
||
//ИнициализацияСлужебногоРежима();
|
||
ЭтотОбъект.ИспользоватьАвтосохранение = Ложь;
|
||
ДобавитьМакетКомпоновки(ДеревоЗапросов, МакетКомпоновки);
|
||
мРежимОтладки = Истина;
|
||
Форма = ЭтотОбъект.ПолучитьФорму();
|
||
Если Модально Тогда
|
||
Возврат Форма.ОткрытьМодально();
|
||
Иначе
|
||
Форма.Открыть();
|
||
КонецЕсли;
|
||
|
||
КонецФункции
|
||
|
||
Функция ДобавитьМакетКомпоновки(СтрокаДереваЗапросов, МакетКомпоновки, РодительскиеЗначенияПараметров = Неопределено, СвязиПараметров = Неопределено)
|
||
|
||
ПараметрыЗапроса = ПолучитьНовуюТаблицуПараметров();
|
||
Если РодительскиеЗначенияПараметров <> Неопределено Тогда
|
||
Для Каждого СвязьПараметра Из СвязиПараметров Цикл
|
||
ИмяПараметра = Сред(СвязьПараметра.Значение, 2);
|
||
ЗначениеПараметра = РодительскиеЗначенияПараметров.Найти(ИмяПараметра).Значение;
|
||
ДобавитьПараметрЗапросаЛкс(ПараметрыЗапроса, ИмяПараметра, ЗначениеПараметра);
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
ЗаполнитьПараметрыИзМакетаКомпоновки(ПараметрыЗапроса, МакетКомпоновки.ЗначенияПараметров);
|
||
ДобавитьНаборыДанных(СтрокаДереваЗапросов, ПараметрыЗапроса, МакетКомпоновки.НаборыДанных);
|
||
Для Каждого ЭлементТела Из МакетКомпоновки.Тело Цикл
|
||
Если ТипЗнч(ЭлементТела) = Тип("ВложенныйОбъектМакетаКомпоновкиДанных") Тогда
|
||
Если ЭлементТела.КомпоновкаДанных.НаборыДанных.Количество() > 0 Тогда
|
||
лСтрокаЗапроса = СтрокаДереваЗапросов.Строки.Добавить();
|
||
лСтрокаЗапроса.Запрос = ЭлементТела.Имя;
|
||
лСтрокаЗапроса.ТипЗапроса = "Папка";
|
||
ДобавитьМакетКомпоновки(лСтрокаЗапроса, ЭлементТела.КомпоновкаДанных, МакетКомпоновки.ЗначенияПараметров, ЭлементТела.ЗначенияПараметров);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ЗаполнитьПараметрыИзМакетаКомпоновки(ПараметрыЗапроса, ЗначенияПараметров)
|
||
|
||
Для Каждого ЗначениеПараметра Из ЗначенияПараметров Цикл
|
||
ИмяПараметра = ЗначениеПараметра.Имя;
|
||
ЗначениеПараметра = ЗначениеПараметра.Значение;
|
||
Если ПараметрыЗапроса.Найти(ИмяПараметра, "ИмяПараметра") <> Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
ДобавитьПараметрЗапросаЛкс(ПараметрыЗапроса, ИмяПараметра, ЗначениеПараметра);
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ДобавитьПараметрЗапросаЛкс(ПараметрыЗапроса, Знач ИмяПараметра, Знач ЗначениеПараметра)
|
||
|
||
СтрокаПараметров = ПараметрыЗапроса.Добавить();
|
||
СтрокаПараметров.ИмяПараметра = ИмяПараметра;
|
||
ирОбщий.ОбновитьКопиюСвойстваВНижнемРегистреЛкс(СтрокаПараметров, "ИмяПараметра");
|
||
СтрокаПараметров.Значение = ЗначениеПараметра;
|
||
//ПараметрСхемы = Неопределено;
|
||
//Если СхемаКомпоновки <> Неопределено Тогда
|
||
// ПараметрСхемы = СхемаКомпоновки.Параметры.Найти(Значение.Имя);
|
||
//КонецЕсли;
|
||
Если ТипЗнч(СтрокаПараметров.Значение) = Тип("СписокЗначений") Тогда
|
||
СтрокаПараметров.ЭтоВыражение = 2;
|
||
СтрокаПараметров.ТипЗначения = СтрокаПараметров.Значение.ТипЗначения;
|
||
ИначеЕсли ТипЗнч(СтрокаПараметров.Значение) = Тип("ВыражениеКомпоновкиДанных") Тогда
|
||
//СтрокаПараметров.ЭтоВыражение = Истина;
|
||
//СтрокаПараметров.Выражение = СтрЗаменить(Значение.Значение, "&", "Параметры.");
|
||
СтрокаПараметров.ЭтоВыражение = "СКД";
|
||
СтрокаПараметров.Выражение = СтрокаПараметров.Значение;
|
||
Иначе
|
||
СтрокаПараметров.ЭтоВыражение = Ложь;
|
||
СтрокаПараметров.ТипЗначения = Новый ОписаниеТипов(ирОбщий.БыстрыйМассивЛкс(ТипЗнч(СтрокаПараметров.Значение)));
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция РедактироватьНаборДанныхСхемыКомпоновкиДанных(ВладелецФормы, НаборДанных, Схема) Экспорт
|
||
|
||
мРежимРедактораЗапроса = Истина;
|
||
мРедактируемыйНаборДанных = НаборДанных;
|
||
ИнициализацияСлужебногоРежима();
|
||
мСтрокаЗапроса.Запрос = НаборДанных.Имя;
|
||
ПараметыСхемы = Схема.Параметры;
|
||
Для Каждого ПараметрСхемы Из ПараметыСхемы Цикл
|
||
СтрокаПараметров = мСтрокаЗапроса.ПараметрыЗапроса.Добавить();
|
||
СтрокаПараметров.ИмяПараметра = ПараметрСхемы.Имя;
|
||
ирОбщий.ОбновитьКопиюСвойстваВНижнемРегистреЛкс(СтрокаПараметров, "ИмяПараметра");
|
||
СтрокаПараметров.Значение = ПараметрСхемы.Значение;
|
||
СтрокаПараметров.ТипЗначения = ПараметрСхемы.ТипЗначения;
|
||
Если ПараметрСхемы.Выражение <> "" Тогда
|
||
СтрокаПараметров.ЭтоВыражение = "СКД";
|
||
СтрокаПараметров.Выражение = ПараметрСхемы.Выражение;
|
||
//СтрокаПараметров.Выражение = СтрЗаменить(СтрокаПараметров.Выражение, "&", "Параметры.");
|
||
ИначеЕсли ТипЗнч(ПараметрСхемы.Значение) = Тип("СписокЗначений") Тогда
|
||
СтрокаПараметров.ЭтоВыражение = 2;
|
||
Иначе
|
||
СтрокаПараметров.ЭтоВыражение = Ложь;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
мСтрокаЗапроса.ТекстЗапроса = НаборДанных.Запрос;
|
||
мСтрокаЗапроса.ТипЗапроса = "Компоновка";
|
||
Форма = ЭтотОбъект.ПолучитьФорму(, ВладелецФормы);
|
||
Форма.Открыть();
|
||
|
||
КонецФункции // РедактироватьНаборДанныхСхемыКомпоновкиДанных()
|
||
|
||
Функция РедактироватьСтруктуруЗапроса(ВладелецФормы = Неопределено, СтруктураЗапроса) Экспорт
|
||
|
||
мРежимРедактораЗапроса = Истина;
|
||
ИнициализацияСлужебногоРежима();
|
||
Если СтруктураЗапроса.Свойство("Имя") Тогда
|
||
мСтрокаЗапроса.Запрос = СтруктураЗапроса.Имя;
|
||
КонецЕсли;
|
||
Если СтруктураЗапроса.Свойство("Ссылка") Тогда
|
||
мСсылка = СтруктураЗапроса.Ссылка;
|
||
КонецЕсли;
|
||
Если СтруктураЗапроса.Свойство("Параметры") Тогда
|
||
мСтрокаЗапроса.ПараметрыЗапроса = ирОбщий.ПолучитьКопиюОбъектаЛкс(СтруктураЗапроса.Параметры);
|
||
КонецЕсли;
|
||
Если СтруктураЗапроса.Свойство("ПараметрыADO") Тогда
|
||
мСтрокаЗапроса.ПараметрыADO = ирОбщий.ПолучитьКопиюОбъектаЛкс(СтруктураЗапроса.ПараметрыADO);
|
||
КонецЕсли;
|
||
Если СтруктураЗапроса.Свойство("ПараметрыWMI") Тогда
|
||
мСтрокаЗапроса.ПараметрыWMI = ирОбщий.ПолучитьКопиюОбъектаЛкс(СтруктураЗапроса.ПараметрыWMI);
|
||
КонецЕсли;
|
||
мСтрокаЗапроса.ТекстЗапроса = СтруктураЗапроса.ТекстЗапроса;
|
||
Если СтруктураЗапроса.Свойство("ТипЗапроса") Тогда
|
||
мСтрокаЗапроса.ТипЗапроса = СтруктураЗапроса.ТипЗапроса;
|
||
Иначе
|
||
мСтрокаЗапроса.ТипЗапроса = "Построитель";
|
||
КонецЕсли;
|
||
Если ВладелецФормы = Неопределено Тогда
|
||
Форма = ЭтотОбъект.ПолучитьФорму();
|
||
Форма.ОткрытьМодально();
|
||
Результат = Форма.РезультатФормы;
|
||
Иначе
|
||
Форма = ЭтотОбъект.ПолучитьФорму(, ВладелецФормы);
|
||
Форма.Открыть();
|
||
КонецЕсли;
|
||
Возврат Результат;
|
||
|
||
КонецФункции // РедактироватьСтруктуруЗапроса()
|
||
|
||
Функция НайтиПлатформуADOПоСтрокеСоединения(СтрокаСоединения)
|
||
|
||
Результат = Неопределено;
|
||
Провайдер = ирОбщий.ПолучитьПервыйФрагментЛкс(ирОбщий.ПолучитьСтрокуМеждуМаркерамиЛкс(СтрокаСоединения, "Provider=", ";"));
|
||
Для Каждого СтрокаПлатформы Из мПлатформыADODB Цикл
|
||
Если Найти(НРег(СтрокаПлатформы.СтрокаСоединения), Нрег(Провайдер)) > 0 Тогда
|
||
Результат = СтрокаПлатформы.Код;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Возврат Результат;
|
||
|
||
КонецФункции // НайтиПлатформуADOПоСтрокеСоединения()
|
||
|
||
Функция ПолучитьСтруктуруИсточникаДанныхADO() Экспорт
|
||
|
||
ИсточникДанныхADO = Новый Структура("Платформа,Путь,БазаСервер,БазаИмя,Пользователь,Пароль,ТипИсточникаДанных,СтрокаСоединения,АутентификацияОС");
|
||
Возврат ИсточникДанныхADO;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПараметрыПлатформыADO_Получить(ПлатформаЗначение) Экспорт
|
||
|
||
ПлатформаПар = Новый Структура("ТипИсточникаДанных, МаскаФайлов, СтрокаСоединения, СтрокаАутентификацииОС, ИменованныеПараметры");
|
||
Стр = мПлатформыADODB.Найти(ПлатформаЗначение, "Код");
|
||
Если Стр <> Неопределено Тогда
|
||
ЗаполнитьЗначенияСвойств(ПлатформаПар, Стр);
|
||
//ПлатформаПар.ТипИсточникаДанных = Стр.ТипИсточникаДанных;
|
||
//ПлатформаПар.СтрокаСоединения = Стр.СтрокаСоединения;
|
||
КонецЕсли;
|
||
Возврат ПлатформаПар;
|
||
|
||
КонецФункции
|
||
|
||
// Параметры - ПолучитьИсточникДанныхADO()
|
||
Функция ConnectADO(ИсточникДанных, СоединениеADO = Неопределено, стОпции = Неопределено, Еррорс = Неопределено, выхСтрокаСоединенияДляСообщения = "") Экспорт
|
||
Перем Параметры;
|
||
Перем Результат;
|
||
|
||
ПараметрыПлатформыADO = ПараметрыПлатформыADO_Получить(ИсточникДанных.Платформа);
|
||
ИсточникДанных.ТипИсточникаДанных = ПараметрыПлатформыADO.ТипИсточникаДанных;
|
||
Если Не ЗначениеЗаполнено(ИсточникДанных.СтрокаСоединения) Тогда
|
||
ИсточникДанных.СтрокаСоединения = ПараметрыПлатформыADO.СтрокаСоединения;
|
||
КонецЕсли;
|
||
Параметры=ИсточникДанных;
|
||
Еррорс=Новый Массив;
|
||
|
||
// дополнительные параметры для соединения к источнику данных
|
||
Если ТипЗнч(стОпции)<>Тип("Структура") Тогда
|
||
стОпции = Новый Структура;
|
||
КонецЕсли;
|
||
|
||
Доп_Путь=Неопределено;
|
||
Если стОпции.Свойство("Путь",Доп_Путь) Тогда
|
||
// передали другой непустой путь - используем его
|
||
Если ЗначениеЗаполнено(Доп_Путь) Тогда
|
||
Параметры.Путь = Доп_Путь;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
// параметры подключения к источнику данных (в зависимости от его типа):
|
||
ПроверятьПользователя = Истина;
|
||
ДопМаска="";
|
||
//ВыбратьПуть=Ложь;
|
||
Путь = Параметры.Путь;
|
||
Если Параметры.ТипИсточникаДанных=0 Тогда
|
||
// файл с данными
|
||
ПроверятьПользователя = Ложь;
|
||
СтрИнфо="";
|
||
Если ПустаяСтрока(Путь) Тогда
|
||
//ВыбратьПуть=Истина;
|
||
Иначе
|
||
ЗаданаМаскаФайлов = Ложь;
|
||
ПутьДоступен = ДоступностьПутиИсточникаДанных(Путь,Ложь,СтрИнфо,ЗаданаМаскаФайлов);
|
||
Если ЗаданаМаскаФайлов=Истина И (Лев(Нрег(Путь),7)<>Нрег("<Пусто>")) Тогда
|
||
ДопМаска=СокрЛП(Путь);
|
||
Если (СтрЧислоВхождений(Путь,"|")=0) Тогда
|
||
ДопМаска="Маска узла COM|"+ДопМаска;
|
||
КонецЕсли;
|
||
//ВыбратьПуть=Истина;
|
||
ИначеЕсли (ПутьДоступен = Ложь) И (Лев(Нрег(Путь),7)<>Нрег("<Пусто>")) Тогда
|
||
Еррорс.Добавить("Ошибка доступности файла с данными: "+СтрИнфо);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
ИначеЕсли Параметры.ТипИсточникаДанных=1 Тогда
|
||
// база данных файловая
|
||
Если Параметры.Платформа < 100 Тогда
|
||
ПроверятьПользователя=Ложь;
|
||
Иначе
|
||
ПроверятьПользователя=Истина;
|
||
КонецЕсли;
|
||
СтрИнфо="";
|
||
ПутьДоступен=ДоступностьПутиИсточникаДанных(Путь,Истина,СтрИнфо,);
|
||
Если НЕ ПутьДоступен Тогда
|
||
Еррорс.Добавить("Ошибка доступности каталога файловой базы: "+СтрИнфо);
|
||
КонецЕсли;
|
||
ИначеЕсли Параметры.ТипИсточникаДанных=2 Тогда
|
||
// база данных клиент-серверная
|
||
Если ПустаяСтрока(Параметры.БазаСервер) И НЕ ПустаяСтрока(Параметры.БазаИмя) Тогда
|
||
Еррорс.Добавить("Не указано имя сервера для клиент-серверной базы");
|
||
ИначеЕсли НЕ ПустаяСтрока(Параметры.БазаСервер) И ПустаяСтрока(Параметры.БазаИмя) Тогда
|
||
Еррорс.Добавить("Не указано имя базы на сервере для клиент-серверной базы");
|
||
ИначеЕсли ПустаяСтрока(Параметры.БазаСервер) И ПустаяСтрока(Параметры.БазаИмя) Тогда
|
||
Еррорс.Добавить("Не указано имя сервера и имя базы на сервере для клиент-серверной базы");
|
||
КонецЕсли;
|
||
ИначеЕсли Параметры.ТипИсточникаДанных=3 Тогда
|
||
// ресурс интернета
|
||
Если ПустаяСтрока(Путь) Тогда
|
||
Еррорс.Добавить("Не задан путь (URL) к ресурсу интернета базы данных");
|
||
КонецЕсли;
|
||
Иначе
|
||
Еррорс.Добавить("Не предусмотренный тип источника данных: "+ Параметры.ТипИсточникаДанных);
|
||
КонецЕсли;
|
||
|
||
Если ПроверятьПользователя И Не Параметры.АутентификацияОС Тогда
|
||
Если ПустаяСтрока(Параметры.Пользователь) И НЕ ПустаяСтрока(Параметры.Пароль) Тогда
|
||
Еррорс.Добавить("Не указано имя пользователя базы");
|
||
ИначеЕсли НЕ ПустаяСтрока(Параметры.Пользователь) И ПустаяСтрока(Параметры.Пароль) Тогда
|
||
Еррорс.Добавить("Не указан пароль пользователя базы");
|
||
ИначеЕсли ПустаяСтрока(Параметры.Пользователь) И ПустаяСтрока(Параметры.Пароль) Тогда
|
||
Еррорс.Добавить("Не указаны имя и пароль пользователя базы");
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
//Если ВыбратьПуть=Истина И Еррорс.Количество()=0 Тогда
|
||
// #Если Клиент Тогда
|
||
// ДиалогФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
|
||
// ДиалогФайла.Заголовок="Выбор пути к файлу с данными:";
|
||
// ДиалогФайла.МножественныйВыбор=Ложь;
|
||
// Если ДопМаска="" Тогда
|
||
// ДиалогФайла.ПолноеИмяФайла=Путь;
|
||
// ФайлПуть=Новый Файл(Путь);
|
||
// Если ФайлПуть.Существует() Тогда
|
||
// ДиалогФайла.Каталог=ФайлПуть.Путь;
|
||
// КонецЕсли;
|
||
// ДиалогФайла.Фильтр="Все файлы(*.*)|*.*";
|
||
// Иначе
|
||
// ДиалогФайла.Фильтр=ДопМаска+"|Все файлы(*.*)|*.*";
|
||
// КонецЕсли;
|
||
// Если ДиалогФайла.Выбрать() Тогда
|
||
// Параметры.Вставить("Путь",ДиалогФайла.ПолноеИмяФайла);
|
||
// стОпции.Вставить("Путь",ДиалогФайла.ПолноеИмяФайла);
|
||
// стОпции.Вставить("Отказ",Ложь);
|
||
// Иначе
|
||
// стОпции.Вставить("Путь",Неопределено);
|
||
// стОпции.Вставить("Отказ",Истина);
|
||
// Еррорс.Добавить("Выбор файла с данными для подключения к источнику данных отменен пользователем");
|
||
// КонецЕсли;
|
||
// #Иначе
|
||
// Еррорс.Добавить("Не выбран файл с данными для подключения к источнику данных");
|
||
// #КонецЕсли
|
||
//КонецЕсли;
|
||
|
||
СоединениеADO = Неопределено;
|
||
|
||
Если Еррорс.Количество()>0 Тогда
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
|
||
КомпьютераИмя = ИмяКомпьютера();
|
||
#Если Сервер Тогда
|
||
КомпьютераИмя = КомпьютераИмя + " - сервер!";
|
||
#КонецЕсли
|
||
|
||
Попытка
|
||
ApplicationID = "ADODB.Connection";
|
||
//Если ПустаяСтрока(Параметры.СерверCOM) Тогда
|
||
СоединениеADO = Новый COMОбъект(ApplicationID);
|
||
//Иначе
|
||
// СоединениеADO = Новый COMОбъект(ApplicationID, Параметры.СерверCOM);
|
||
//КонецЕсли;
|
||
Исключение
|
||
Еррорс.Добавить(
|
||
"Ошибка создания COM-объекта для подключения:
|
||
|"+ОписаниеОшибки()+"
|
||
|-----------------------------
|
||
//|СерверCOM = '"+Параметры.СерверCOM+"'
|
||
|ИмяКомпьютера = '"+КомпьютераИмя+"'
|
||
|");
|
||
Возврат Ложь;
|
||
КонецПопытки;
|
||
|
||
СоединениеФакт = Параметры.СтрокаСоединения;
|
||
Если Параметры.АутентификацияОС Тогда
|
||
СоединениеФакт = СокрП(СоединениеФакт);
|
||
Если Прав(СоединениеФакт, 1) <> ";" Тогда
|
||
СоединениеФакт = СоединениеФакт + ";";
|
||
КонецЕсли;
|
||
СоединениеФакт = СоединениеФакт + ПараметрыПлатформыADO.СтрокаАутентификацииОС;
|
||
Параметры.Пользователь = "";
|
||
Параметры.Пароль = "";
|
||
КонецЕсли;
|
||
|
||
// макро имена параметров подключения
|
||
СоединениеФакт = СтрЗаменить(СоединениеФакт,"!Путь!", Параметры.Путь);
|
||
СоединениеФакт = СтрЗаменить(СоединениеФакт,"!БазаСервер!", Параметры.БазаСервер);
|
||
СоединениеФакт = СтрЗаменить(СоединениеФакт,"!БазаИмя!", Параметры.БазаИмя);
|
||
СоединениеФакт = СтрЗаменить(СоединениеФакт,"!Пользователь!", Параметры.Пользователь);
|
||
Параметры.СтрокаСоединения = СтрЗаменить(СоединениеФакт, "!Пароль!", Параметры.Пароль);
|
||
СоединениеФакт = СтрЗаменить(СоединениеФакт,"!Пароль!", "***");
|
||
выхСтрокаСоединенияДляСообщения = СоединениеФакт;
|
||
|
||
// макро имена параметров подключения
|
||
Результат = Неопределено;
|
||
СоединениеADO.ConnectionTimeOut = 10;
|
||
СоединениеADO.CommandTimeout = 120; // 120 секунд
|
||
СоединениеADO.CursorLocation = 3; // курсоры на стороне клиента
|
||
Попытка
|
||
СоединениеADO.Open(Параметры.СтрокаСоединения, Параметры.Пользователь, Параметры.Пароль, -1); // синхронное подключение
|
||
Результат = 1;
|
||
Исключение
|
||
СтрЕррор =
|
||
"Ошибка инициализации подключения:
|
||
| "+ОписаниеОшибки()+"
|
||
|Фактическая строка соединения с базой:
|
||
| "+СоединениеФакт+"
|
||
|";
|
||
Еррорс.Добавить(СтрЕррор);
|
||
Результат=-1;
|
||
КонецПопытки;
|
||
|
||
Если Еррорс.Количество()>0 Тогда
|
||
Результат=-1;
|
||
Иначе
|
||
Если ТипЗнч(Результат)=Тип("Число") Тогда
|
||
Если Результат<0 Тогда
|
||
Результат=-1;
|
||
ИначеЕсли Результат>0 Тогда
|
||
Результат=+1;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если Результат<>1 Тогда
|
||
ЕррорТекст="Не проработанная ошибка при выполнении модуля инициализации подключения";
|
||
Если Результат=-1 Тогда
|
||
ЕррорТекст=ЕррорТекст+" (фатального характера)";
|
||
КонецЕсли;
|
||
Еррорс.Добавить(ЕррорТекст);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Возврат (Результат=1);
|
||
КонецФункции
|
||
|
||
Функция ДоступностьПутиИсточникаДанных(Путь, Знач ВидПутиКаталог=Истина, СтрИнфо, ЗаданаМаскаФайлов=Ложь) Экспорт
|
||
СтрИнфо="";
|
||
ЗаданаМаскаФайлов=Ложь;
|
||
|
||
ПрефиксНЛФС="";
|
||
Если (Лев(Нрег(Путь),7)=Нрег("<Пусто>")) Тогда
|
||
СтрИнфо="выбирается при закрытии соединения";
|
||
Если (Найти(Путь,"*")>0)ИЛИ(Найти(Путь,"?")>0) Тогда
|
||
ЗаданаМаскаФайлов=Истина;
|
||
СтрИнфо = СтрИнфо + " (по маске файлов)";
|
||
КонецЕсли;
|
||
Возврат НЕ ВидПутиКаталог;
|
||
ИначеЕсли (Лев(Нрег(Путь),5)="http:") Тогда
|
||
ПрефиксНЛФС="http";
|
||
ИначеЕсли (Лев(Нрег(Путь),4)="ftp:") Тогда
|
||
ПрефиксНЛФС="ftp";
|
||
КонецЕсли;
|
||
|
||
Если ВидПутиКаталог=Истина Тогда
|
||
МетаИмяПути = "каталог";
|
||
ИначеЕсли ВидПутиКаталог=Ложь Тогда
|
||
МетаИмяПути = "файл";
|
||
Иначе
|
||
// всякие http, ftp ресурсы - непроверяем
|
||
Если НЕ ПустаяСтрока(ПрефиксНЛФС) Тогда
|
||
СтрИнфо = "ресурс " + ПрефиксНЛФС + " не проверяется";
|
||
КонецЕсли;
|
||
Возврат Истина;
|
||
КонецЕсли;
|
||
|
||
Если НЕ ПустаяСтрока(ПрефиксНЛФС) Тогда
|
||
СтрИнфо = МетаИмяПути + " по " + ПрефиксНЛФС + " не проверяется";
|
||
Возврат Истина;
|
||
КонецЕсли;
|
||
|
||
Если ПустаяСтрока(Путь) Тогда
|
||
СтрИнфо = МетаИмяПути + " не задан";
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
|
||
Если (Найти(Путь,"*")>0)ИЛИ(Найти(Путь,"?")>0) Тогда
|
||
ЗаданаМаскаФайлов=Истина;
|
||
СтрИнфо = "задана маска файлов";
|
||
Возврат НЕ ВидПутиКаталог;
|
||
КонецЕсли;
|
||
|
||
#Если Сервер Тогда
|
||
Если НЕ (Найти(Врег(СтрокаСоединенияИнформационнойБазы()), "FILE=") = 1) Тогда
|
||
МетаИмяПути=МетаИмяПути+" на сервере 1С";
|
||
КонецЕсли;
|
||
#КонецЕсли
|
||
|
||
Файл = Новый Файл(Путь);
|
||
Если НЕ Файл.Существует() Тогда
|
||
СтрИнфо = МетаИмяПути + " не существует";
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
|
||
Если ВидПутиКаталог=Истина Тогда
|
||
Если НЕ Файл.ЭтоКаталог() Тогда
|
||
СтрИнфо = МетаИмяПути + " не является каталогом файлов";
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
Иначе
|
||
Если НЕ Файл.ЭтоФайл() Тогда
|
||
СтрИнфо = МетаИмяПути + " является каталогом файлов";
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Возврат Истина;
|
||
КонецФункции // ДоступностьПутиИсточникаДанных()
|
||
|
||
//ирПортативный лФайл = Новый Файл(ИспользуемоеИмяФайла);
|
||
//ирПортативный ПолноеИмяФайлаБазовогоМодуля = Лев(лФайл.Путь, СтрДлина(лФайл.Путь) - СтрДлина("Модули\")) + "ирПортативный.epf";
|
||
//ирПортативный #Если Клиент Тогда
|
||
//ирПортативный Контейнер = Новый Структура();
|
||
//ирПортативный Оповестить("ирПолучитьБазовуюФорму", Контейнер);
|
||
//ирПортативный Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
|
||
//ирПортативный ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
|
||
//ирПортативный ирПортативный.Открыть();
|
||
//ирПортативный КонецЕсли;
|
||
//ирПортативный #Иначе
|
||
//ирПортативный ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта
|
||
//ирПортативный #КонецЕсли
|
||
//ирПортативный ирОбщий = ирПортативный.ПолучитьОбщийМодульЛкс("ирОбщий");
|
||
//ирПортативный ирКэш = ирПортативный.ПолучитьОбщийМодульЛкс("ирКэш");
|
||
//ирПортативный ирСервер = ирПортативный.ПолучитьОбщийМодульЛкс("ирСервер");
|
||
//ирПортативный ирПривилегированный = ирПортативный.ПолучитьОбщийМодульЛкс("ирПривилегированный");
|
||
|
||
мОбъектЗапроса = Новый Запрос;
|
||
мРежимРедактораЗапроса = Ложь;
|
||
мРежимОтладки = Ложь;
|
||
мВременныеТаблицыМенеджера1С = Новый Структура;
|
||
|
||
// Создадим структуру дерева запросов
|
||
ДеревоЗапросов.Колонки.Добавить("Запрос");
|
||
ДеревоЗапросов.Колонки.Добавить("ТекстЗапроса");
|
||
ДеревоЗапросов.Колонки.Добавить("ПараметрыЗапроса");
|
||
ДеревоЗапросов.Колонки.Добавить("СпособВыгрузки", Новый ОписаниеТипов("Число"));
|
||
ДеревоЗапросов.Колонки.Добавить("НовыйМенеджерВременныхТаблиц", Новый ОписаниеТипов("Булево"));
|
||
ДеревоЗапросов.Колонки.Добавить("КодОбработкиСтрокиРезультата");
|
||
ДеревоЗапросов.Колонки.Добавить("КодПередВыполнениемЗапроса");
|
||
ДеревоЗапросов.Колонки.Добавить("КодОбработкиРезультата");
|
||
ДеревоЗапросов.Колонки.Добавить("Настройка");
|
||
ДеревоЗапросов.Колонки.Добавить("ВыбратьВсеПоля", Новый ОписаниеТипов("Булево"));
|
||
ДеревоЗапросов.Колонки.Добавить("ТипЗапроса", Новый ОписаниеТипов("Строка"));
|
||
ДеревоЗапросов.Колонки.Добавить("Длительность", Новый ОписаниеТипов("Число, Строка"));
|
||
ДеревоЗапросов.Колонки.Добавить("ДатаВыполнения", Новый ОписаниеТипов("Дата"));
|
||
ДеревоЗапросов.Колонки.Добавить("РазмерРезультата", Новый ОписаниеТипов("Число, Строка"));
|
||
ДеревоЗапросов.Колонки.Добавить("ПараметрыWMI");
|
||
ДеревоЗапросов.Колонки.Добавить("ПараметрыADO");
|
||
ДеревоЗапросов.Колонки.Добавить("СтандартнаяВыгрузкаВДерево", Новый ОписаниеТипов("Булево"));
|
||
ДеревоЗапросов.Колонки.Добавить("АвтовыборкиИтогов", Новый ОписаниеТипов("Булево"));
|
||
ДеревоЗапросов.Колонки.Добавить("ДобавлятьСлужебныеКолонкиРезультата", Новый ОписаниеТипов("Булево"));
|
||
ДеревоЗапросов.Колонки.Добавить("ОбходитьИерархическиеВыборкиРекурсивно", Новый ОписаниеТипов("Булево"));
|
||
ДеревоЗапросов.Колонки.Добавить("ВыборкиИтогов");
|
||
ДеревоЗапросов.Колонки.Добавить("НачальнаяСтрока", Новый ОписаниеТипов("Число"));
|
||
ДеревоЗапросов.Колонки.Добавить("НачальнаяКолонка", Новый ОписаниеТипов("Число"));
|
||
ДеревоЗапросов.Колонки.Добавить("КонечнаяСтрока", Новый ОписаниеТипов("Число"));
|
||
ДеревоЗапросов.Колонки.Добавить("КонечнаяКолонка", Новый ОписаниеТипов("Число"));
|
||
|
||
мПлатформыADODB = ирОбщий.ПолучитьТаблицуИзТабличногоДокументаЛкс(ПолучитьМакет("ПлатформыADODB"),,, Истина);
|
||
#КонецЕсли
|