mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 13:14:11 +00:00
1698 lines
113 KiB
Plaintext
1698 lines
113 KiB
Plaintext
//ирПортативный Перем ирПортативный Экспорт;
|
||
//ирПортативный Перем ирОбщий Экспорт;
|
||
//ирПортативный Перем ирСервер Экспорт;
|
||
//ирПортативный Перем ирКэш Экспорт;
|
||
//ирПортативный Перем ирПривилегированный Экспорт;
|
||
Перем КомандыПоиска;
|
||
Перем дзВсеОбъекты Экспорт;
|
||
Перем дзВсеПодсистемы Экспорт;
|
||
Перем стНастройки Экспорт;
|
||
Перем мСписокПолнотекстовогоПоиска; // Глобальный поиск
|
||
Перем СтатическиеВетки Экспорт;
|
||
Перем МассивСтатическихВеток;
|
||
Перем ВеткиМетаданных;
|
||
Перем RegExp; // Для поиска с помощью регулярных выражений
|
||
Перем ВерсияПлатфомы Экспорт;
|
||
Перем ИмяКорневойПодсистемы;
|
||
Перем ЕстьСправочникВнешнихОбработок Экспорт;
|
||
Перем мТекущийПользователь Экспорт;
|
||
Перем ПутьФайлаНастроек;
|
||
Перем ЕстьУниверсальныйОтчет Экспорт, Есть_РС_СохраненныеНастройки Экспорт;
|
||
//Перем Есть_СправочникОрганизаций;
|
||
Перем мСловаСтрокиУмногоПоиска Экспорт, СтрокаУмногоПоискаБезСуффикса Экспорт, СтрокаСуффиксаУмногоПоиска Экспорт, флПробоватьУмныйПоиск Экспорт, ЧислоСуффиксаУмногоПоиска, МассивПрефиксовОрганизаций, ДлинаСуффиксаУмногоПоиска;
|
||
Перем СоответствиеВидовМетаданныхДляПоискаПолногоИмени Экспорт;
|
||
Перем мВременныйФильтрИмен Экспорт;
|
||
Перем мРезультатПакетаКоличестваСтрок Экспорт;
|
||
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
Функция СохранитьВыбраннуюСтроку(Форма)
|
||
|
||
ТекСтрока = Форма.ЭлементыФормы.ДеревоИнтерфейса.ТекущаяСтрока;
|
||
Если ТекСтрока = Неопределено тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
|
||
стСтрока = Новый Структура("Представление,Уровень,Родитель,Вид,Имя");
|
||
|
||
стСтрока.Представление = ТекСтрока.Представление;
|
||
стСтрока.Уровень = ТекСтрока.Уровень();
|
||
Если стСтрока.Уровень = 1 тогда
|
||
стСтрока.Родитель = ТекСтрока.Родитель.Представление;
|
||
стСтрока.Вид = ТекСтрока.Вид;
|
||
стСтрока.Имя = ТекСтрока.Имя;
|
||
КонецЕсли;
|
||
|
||
Возврат стСтрока;
|
||
|
||
КонецФункции // СохранитьВыбраннуюСтроку
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
Функция ВосстановитьВыбраннуюСтроку(стСтрока,Форма)
|
||
|
||
ТекСтрока = Неопределено;
|
||
|
||
Если стСтрока <> Неопределено тогда
|
||
Если стСтрока.Уровень = 0 тогда
|
||
ТекСтрока = ДеревоИнтерфейса.Строки.Найти(стСтрока.Представление, "Представление", Ложь);
|
||
Иначе
|
||
стрРодитель = ДеревоИнтерфейса.Строки.Найти(стСтрока.Родитель, "Представление", Ложь);
|
||
Если стрРодитель <> Неопределено тогда
|
||
стПоиск = Новый Структура("Вид,Имя", стСтрока.Вид, стСтрока.Имя);
|
||
мСтроки = стрРодитель.Строки.НайтиСтроки(стПоиск, Ложь);
|
||
Если мСтроки.Количество() > 0 тогда
|
||
ТекСтрока = мСтроки[0];
|
||
Иначе
|
||
Если стрРодитель.Строки.Количество() > 0 тогда
|
||
ТекСтрока = стрРодитель.Строки[0];
|
||
Иначе
|
||
ТекСтрока = стрРодитель;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-20:21:17.<2iS>.СтарыхСА
|
||
//Если ТекСтрока = Неопределено тогда
|
||
// Если ДеревоИнтерфейса.Строки.Количество() > 0 тогда
|
||
// ТекСтрока = ДеревоИнтерфейса.Строки[0];
|
||
// КонецЕсли;
|
||
//КонецЕсли;
|
||
Если ТекСтрока <> Неопределено Тогда
|
||
Форма.ЭлементыФормы.ДеревоИнтерфейса.ТекущаяСтрока = ТекСтрока;
|
||
Возврат Истина;
|
||
Иначе
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-20:21:17.<2iS>.СтарыхСА
|
||
|
||
КонецФункции
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
Функция СохранитьРазвернутыеВетви(Форма)
|
||
|
||
мВетви = Новый Массив;
|
||
|
||
элДеревоИнтерфейса = Форма.ЭлементыФормы.ДеревоИнтерфейса;
|
||
|
||
Для каждого стрВетвь из ДеревоИнтерфейса.Строки цикл
|
||
// Пропустим статические
|
||
Если НЕ СтатическиеВетки[стрВетвь] = Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
Если элДеревоИнтерфейса.Развернут(стрВетвь) тогда
|
||
мВетви.Добавить(стрВетвь.Представление);
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
Возврат мВетви;
|
||
|
||
КонецФункции // СохранитьРазвернутыеВетви
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
Процедура ВосстановитьРазвернутыеВетви(Знач мРазвернутыеВетви, Форма) Экспорт
|
||
|
||
элДеревоИнтерфейса = Форма.ЭлементыФормы.ДеревоИнтерфейса;
|
||
СтрокиДереваИнтерфейса = ДеревоИнтерфейса.Строки;
|
||
|
||
Для каждого ПредставлениеВетви из мРазвернутыеВетви цикл
|
||
|
||
стрВетвь = СтрокиДереваИнтерфейса.Найти(ПредставлениеВетви, "Представление", Ложь);
|
||
Если стрВетвь <> Неопределено тогда
|
||
элДеревоИнтерфейса.Развернуть(стрВетвь);
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры // ВосстановитьРазвернутыеВетви
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
Процедура ДобавитьОбъект(СтрокиВетви, Знач МетаД, Знач ВидОбъекта, Знач ИндексКартинки)
|
||
|
||
стрСтрока = СтрокиВетви.Добавить();
|
||
стрСтрока.Вид = ВеткиМетаданных.НайтиПоЗначению(ВидОбъекта).Представление;
|
||
стрСтрока.Имя = МетаД.Имя;
|
||
стрСтрока.Представление = ?(ПустаяСтрока(МетаД.Синоним), МетаД.Имя, МетаД.Синоним);
|
||
стрСтрока.ИндексКартинки = ИндексКартинки;
|
||
|
||
спПодсистемы = Новый СписокЗначений;
|
||
//Для каждого Подсистема из МетаД.Подсистемы цикл
|
||
// ИмяПодсистемы = Подсистема.Имя;
|
||
// спПодсистемы.Добавить(ИмяПодсистемы);
|
||
//
|
||
// стрПодсистема = дзВсеПодсистемы.Строки.Найти(ИмяПодсистемы, "Имя", Истина);
|
||
// Пока стрПодсистема.Родитель <> Неопределено цикл
|
||
// стрПодсистема = стрПодсистема.Родитель;
|
||
//
|
||
// Если спПодсистемы.НайтиПоЗначению(стрПодсистема.Имя) = Неопределено тогда
|
||
// спПодсистемы.Добавить(стрПодсистема.Имя);
|
||
// КонецЕсли;
|
||
// КонецЦикла;
|
||
//КонецЦикла;
|
||
стрСтрока.Подсистемы = спПодсистемы;
|
||
|
||
КонецПроцедуры // ДобавитьОбъект
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
Процедура ДобавитьВетвьМетаданных(Ветвь, Знач ИмяВетви, Знач КартинкаВетви=0, Знач КартинкаОбъекта=0)
|
||
|
||
стрВетвь = дзВсеОбъекты.Строки.Добавить();
|
||
стрВетвь.Представление = ИмяВетви;
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-11:25:37.<2iS>.СтарыхСА
|
||
стрВетвь.Имя = стрВетвь.Представление;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-11:25:37.<2iS>.СтарыхСА
|
||
стрВетвь.ИндексКартинки = КартинкаВетви;
|
||
|
||
СтрокиВетви = стрВетвь.Строки;
|
||
Для каждого МетаД из Ветвь цикл
|
||
Если ПравоДоступа("Просмотр", МетаД) тогда
|
||
ДобавитьОбъект(СтрокиВетви, МетаД, ИмяВетви, КартинкаОбъекта);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры // ДобавитьВетвьМетаданных
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
Процедура ЗаполнитьДеревоВсехОбъектов() Экспорт
|
||
|
||
дзВсеОбъекты = Новый ДеревоЗначений;
|
||
дзВсеОбъекты.Колонки.Добавить("Имя");
|
||
дзВсеОбъекты.Колонки.Добавить("Вид");
|
||
дзВсеОбъекты.Колонки.Добавить("Представление");
|
||
дзВсеОбъекты.Колонки.Добавить("ИндексКартинки");
|
||
дзВсеОбъекты.Колонки.Добавить("Подсистемы");
|
||
|
||
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.ОбщиеФормы, "Общие формы", 6, 7);
|
||
ДобавитьВетвьМетаданных(Метаданные.Интерфейсы, "Интерфейсы", 54, 55);
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-20:37:21.<2iS>.СтарыхСА
|
||
ДобавитьВетвьМетаданных(Метаданные.Константы, "Константы", 20, 0);
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-20:37:21.<2iS>.СтарыхСА
|
||
ДобавитьВетвьМетаданных(Метаданные.Справочники, "Справочники", 2, 3);
|
||
|
||
стрКорень = дзВсеОбъекты.Строки.Добавить();
|
||
стрКорень.Представление = "Документы";
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-11:25:37.<2iS>.СтарыхСА
|
||
стрКорень.Имя = стрКорень.Представление;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-11:25:37.<2iS>.СтарыхСА
|
||
стрКорень.ИндексКартинки = 12;
|
||
СтрокиКорня = стрКорень.Строки;
|
||
Для каждого МетаД из Метаданные.ЖурналыДокументов цикл
|
||
Если ПравоДоступа("Просмотр", МетаД) тогда
|
||
ДобавитьОбъект(СтрокиКорня, МетаД, "Журналы документов", 15);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Для каждого МетаД из Метаданные.Документы цикл
|
||
Если ПравоДоступа("Просмотр", МетаД) тогда
|
||
ДобавитьОбъект(СтрокиКорня, МетаД, "Документы", 13);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.ПланыВидовХарактеристик, "Планы видов характеристик", 37, 38);
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.ПланыСчетов, "Планы счетов", 39, 40);
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.ПланыВидовРасчета, "Планы видов расчета", 47, 48);
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.Отчеты, "Отчеты", 23, 24);
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.Обработки, "Обработки", 18, 19);
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.РегистрыСведений, "Регистры сведений", 33, 34);
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.РегистрыНакопления, "Регистры накопления", 31, 32);
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.РегистрыБухгалтерии, "Регистры бухгалтерии", 41, 42);
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.РегистрыРасчета, "Регистры расчета", 49, 50);
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.БизнесПроцессы, "Бизнес-процессы", 43, 44);
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.Задачи, "Задачи", 45, 46);
|
||
|
||
ДобавитьВетвьМетаданных(Метаданные.ПланыОбмена, "Планы обмена", 51, 52);
|
||
|
||
ВыводСодержимогоКаталогов(дзВсеОбъекты);
|
||
ВыводСохраненныхВнешнихОбработок(дзВсеОбъекты);
|
||
ВыводСохраненныхНастроекОтчетов(дзВсеОбъекты);
|
||
|
||
// +++.ДОБАВЛЕНИЕ.12/04/29-20:24:01.<2iS>.СтарыхСА
|
||
СортироватьВторойУровеньДерева(дзВсеОбъекты);
|
||
// ---.ДОБАВЛЕНИЕ.12/04/29-20:24:01.<2iS>.СтарыхСА
|
||
|
||
КонецПроцедуры // ЗаполнитьДеревоВсехОбъектов
|
||
|
||
Процедура СортироватьВторойУровеньДерева(Дерево) Экспорт
|
||
|
||
// +++.ДОБАВЛЕНИЕ.12/04/29-20:16:37.<2iS>.СтарыхСА
|
||
ИмяОсновногоПредставления = ПолучитьИмяОсновногоПредставления();
|
||
Для каждого стрВетви из Дерево.Строки цикл
|
||
стрВетви.Строки.Сортировать("Вид УБЫВ, " + ИмяОсновногоПредставления, Ложь);
|
||
КонецЦикла;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/29-20:16:37.<2iS>.СтарыхСА
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
Процедура ЗаполнитьДеревоИнтерфейса(Форма) Экспорт
|
||
|
||
стСтрока = СохранитьВыбраннуюСтроку(Форма);
|
||
мРазвернутыеВетви = СохранитьРазвернутыеВетви(Форма);
|
||
ДеревоИнтерфейса.Строки.Очистить();
|
||
ЗаполнитьСтатическиеВеткиДереваИнтерфейса(Форма);
|
||
НачатьФоновыйПоиск(Форма);
|
||
элДерево = Форма.ЭлементыФормы.ДеревоИнтерфейса;
|
||
ТекущаяСтрокаУстановлена = ВосстановитьВыбраннуюСтроку(стСтрока, Форма);
|
||
//Если НЕ (СтатическиеВетки[элДерево.ТекущаяСтрока] = Неопределено) И
|
||
// элДерево.ТекущаяСтрока.Строки.Количество() > 0
|
||
//Тогда
|
||
// элДерево.ТекущаяСтрока = элДерево.ТекущаяСтрока.Строки[0];
|
||
//КонецЕсли;
|
||
//ВосстановитьРазвернутыеВетви(мРазвернутыеВетви, Форма);
|
||
ИндексНачальнойСтроки = 4;
|
||
ЧислоДинамическихСтрок = 0;
|
||
ТаблицаТиповМетаОбъектов = ирКэш.Получить().ТаблицаТиповМетаОбъектов;
|
||
Счетчик = 1;
|
||
Для Индекс = ИндексНачальнойСтроки По ДеревоИнтерфейса.Строки.Количество() - 1 Цикл
|
||
СтрокаДерева = ДеревоИнтерфейса.Строки[Индекс];
|
||
ВсеСтроки = ирОбщий.ПолучитьВсеСтрокиДереваЗначенийЛкс(СтрокаДерева);
|
||
Для Каждого ДочерняяСтрокаДерева Из ВсеСтроки Цикл
|
||
СтрокаТипаМетаОбъектов = ТаблицаТиповМетаОбъектов.Найти(ДочерняяСтрокаДерева.Вид, "Множественное");
|
||
Если Ложь
|
||
Или СтрокаТипаМетаОбъектов = Неопределено
|
||
Или СтрокаТипаМетаОбъектов.Категория <> 0
|
||
Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
ДочерняяСтрокаДерева.ПолноеИмяОбъекта = "" + СтрокаТипаМетаОбъектов.Единственное + "." + ДочерняяСтрокаДерева.Имя;
|
||
ДочерняяСтрокаДерева.Порядок = Счетчик;
|
||
Счетчик = Счетчик + 1;
|
||
КонецЦикла;
|
||
СтрокаДерева.Порядок = Счетчик;
|
||
Счетчик = Счетчик + 1;
|
||
ЧислоДинамическихСтрок = ЧислоДинамическихСтрок + ВсеСтроки.Количество();
|
||
КонецЦикла;
|
||
//ТекущаяСтрокаУстановлена = ТекущаяСтрокаУстановлена И элДерево.ТекущаяСтрока <> элДерево.Значение.Строки[ИндексНачальнойСтроки];
|
||
Если ЧислоДинамическихСтрок > 0 Тогда
|
||
Если ЧислоДинамическихСтрок <= 20 Тогда
|
||
ирОбщий.ТабличноеПолеДеревоЗначений_РазвернутьВсеСтрокиЛкс(элДерево, ИндексНачальнойСтроки);
|
||
Если Не ТекущаяСтрокаУстановлена Тогда
|
||
элДерево.ТекущаяСтрока = элДерево.Значение.Строки[ИндексНачальнойСтроки].Строки[0];
|
||
КонецЕсли;
|
||
Иначе
|
||
Если Не ТекущаяСтрокаУстановлена Тогда
|
||
элДерево.ТекущаяСтрока = элДерево.Значение.Строки[ИндексНачальнойСтроки];
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Иначе
|
||
Если Истина
|
||
И Не ТекущаяСтрокаУстановлена
|
||
И НЕ (СтатическиеВетки[элДерево.ТекущаяСтрока] = Неопределено)
|
||
И элДерево.ТекущаяСтрока.Строки.Количество() > 0
|
||
Тогда
|
||
элДерево.ТекущаяСтрока = элДерево.ТекущаяСтрока.Строки[0];
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если мРезультатПакетаКоличестваСтрок <> Неопределено Тогда
|
||
ирОбщий.ЗаполнитьКоличествоСтрокТаблицВДеревеМетаданныхЛкс(ДеревоИнтерфейса, мРезультатПакетаКоличестваСтрок);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры // ЗаполнитьДеревоИнтерфейса
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
Функция ПолучитьПутьФайлаНастроек()
|
||
|
||
// Получим папку "Application Data" в "Documents And Settings" для текущего пользователя Windows
|
||
wshShell = Новый COMОбъект("WScript.Shell");
|
||
КаталогСохранения = wshShell.ExpandEnvironmentStrings("%AppData%");
|
||
|
||
Файл = Новый Файл(КаталогСохранения);
|
||
Если Файл.Существует() тогда
|
||
КаталогСохранения = КаталогСохранения + "\1C";
|
||
|
||
Файл = Новый Файл(КаталогСохранения);
|
||
Если НЕ Файл.Существует() тогда
|
||
Попытка
|
||
СоздатьКаталог(КаталогСохранения);
|
||
Исключение
|
||
Возврат Неопределено;
|
||
КонецПопытки;
|
||
КонецЕсли;
|
||
Иначе
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
|
||
// Имя файла
|
||
СтрокаСоединения = ирКэш.ПолучитьСтрокуСоединенияСервераЛкс();
|
||
СтрокаСоединения = СтрокаСоединения + ";Usr=""" + ИмяПользователя() + """";
|
||
|
||
СлужебныеСимволы = "=\:/;";
|
||
|
||
ИмяФайла = "";
|
||
Для н = 1 по СтрДлина(СтрокаСоединения) цикл
|
||
с = Сред(СтрокаСоединения, н, 1);
|
||
Если с = """" тогда
|
||
Продолжить;
|
||
ИначеЕсли с = "$" тогда
|
||
ИмяФайла = ИмяФайла + "$$";
|
||
ИначеЕсли Найти(СлужебныеСимволы, с) <> 0 тогда
|
||
ИмяФайла = ИмяФайла + "$";
|
||
Иначе
|
||
ИмяФайла = ИмяФайла + с;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
|
||
Возврат КаталогСохранения + "\" + ИмяФайла + ".cfg";
|
||
|
||
КонецФункции // ПолучитьПутьФайлаНастроек
|
||
|
||
#Если Клиент Тогда
|
||
|
||
Процедура ЗагрузитьНастройки() Экспорт
|
||
|
||
Если ПутьФайлаНастроек = Неопределено тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
стНастройки = Неопределено;
|
||
|
||
// +++.ДОБАВЛЕНИЕ.12/09/22-14:40:03.<2iS>.СтарыхСА
|
||
стНастройки = ВосстановитьЗначение("ирИнтерфейснаяПанель.Настройки");
|
||
Если стНастройки = Неопределено Тогда
|
||
// Читаем (импортируем) из старого хранилища настроек.
|
||
ф = Новый Файл(ПутьФайлаНастроек);
|
||
Если ф.Существует() тогда
|
||
Попытка
|
||
стНастройки = ЗначениеИзФайла(ПутьФайлаНастроек);
|
||
Исключение
|
||
стНастройки = Неопределено;
|
||
КонецПопытки;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
// ---.ДОБАВЛЕНИЕ.12/09/22-14:40:03.<2iS>.СтарыхСА
|
||
|
||
Если ТипЗнч(стНастройки) <> Тип("Структура") тогда
|
||
стНастройки = Новый Структура;
|
||
КонецЕсли;
|
||
|
||
Если НЕ стНастройки.Свойство("ФильтрПодсистем") тогда
|
||
стНастройки.Вставить("ФильтрПодсистем");
|
||
КонецЕсли;
|
||
|
||
Если НЕ стНастройки.Свойство("ФильтрИмен") тогда
|
||
стНастройки.Вставить("ФильтрИмен");
|
||
КонецЕсли;
|
||
|
||
Если НЕ стНастройки.Свойство("ИсторияФильтраИмен") тогда
|
||
стНастройки.Вставить("ИсторияФильтраИмен");
|
||
стНастройки.ИсторияФильтраИмен = Новый Массив;
|
||
КонецЕсли;
|
||
|
||
Если НЕ стНастройки.Свойство("РазвернутыеСтроки") тогда
|
||
стНастройки.Вставить("РазвернутыеСтроки");
|
||
стНастройки.РазвернутыеСтроки = Новый Массив;
|
||
КонецЕсли;
|
||
|
||
Если НЕ стНастройки.Свойство("ВыбраннаяСтрока") тогда
|
||
стНастройки.Вставить("ВыбраннаяСтрока");
|
||
КонецЕсли;
|
||
|
||
Если НЕ стНастройки.Свойство("СтатистикаИспользования") тогда
|
||
стНастройки.Вставить("СтатистикаИспользования");
|
||
|
||
тзСтатистикаИспользования = Новый ТаблицаЗначений;
|
||
тзСтатистикаИспользования.Колонки.Добавить("Вид");
|
||
тзСтатистикаИспользования.Колонки.Добавить("Имя");
|
||
тзСтатистикаИспользования.Колонки.Добавить("КоличествоИспользований");
|
||
тзСтатистикаИспользования.Колонки.Добавить("ПоследнееИспользование");
|
||
|
||
стНастройки.СтатистикаИспользования = тзСтатистикаИспользования;
|
||
КонецЕсли;
|
||
|
||
// ДЛя произвольных статических веток
|
||
Для каждого КлючЗначение Из МассивСтатическихВеток Цикл
|
||
ИмяКолонки = КлючЗначение.Имя;
|
||
Если стНастройки.СтатистикаИспользования.Колонки.Найти(ИмяКолонки) = Неопределено Тогда
|
||
// Эта колонка была добавлена позже, ее может не быть в сохраненных настройках
|
||
Попытка
|
||
стНастройки.СтатистикаИспользования.Колонки.Добавить(ИмяКолонки);
|
||
Исключение
|
||
КонецПопытки;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Если НЕ стНастройки.Свойство("Каталоги") тогда
|
||
стНастройки.Вставить("Каталоги", Новый Соответствие);
|
||
КонецЕсли;
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
// Параметры обработки
|
||
|
||
Если НЕ стНастройки.Свойство("ИсторияКоманд") Тогда
|
||
стНастройки.Вставить("ИсторияКоманд", ИсторияКоманд);
|
||
КонецЕсли;
|
||
Если НЕ стНастройки.Свойство("ИспользоватьРегулярныеВыражения") Тогда
|
||
стНастройки.Вставить("ИспользоватьРегулярныеВыражения", ИспользоватьРегулярныеВыражения);
|
||
КонецЕсли;
|
||
Если стНастройки.ИспользоватьРегулярныеВыражения Тогда
|
||
RegExp = Новый COMОбъект("VBScript.RegExp");
|
||
RegExp.MultiLine = Ложь;
|
||
RegExp.Global = Истина;
|
||
RegExp.IgnoreCase = Истина;
|
||
КонецЕсли;
|
||
|
||
|
||
// Глобальный поиск
|
||
Если НЕ стНастройки.Свойство("ПолнотекстовыйПоискПорогНечеткости") Тогда
|
||
стНастройки.Вставить("ПолнотекстовыйПоискПорогНечеткости",ПолнотекстовыйПоискПорогНечеткости);
|
||
КонецЕсли;
|
||
Если НЕ стНастройки.Свойство("ПолнотекстовыйПоискРазмерПорции") Тогда
|
||
стНастройки.Вставить("ПолнотекстовыйПоискРазмерПорции",ПолнотекстовыйПоискРазмерПорции);
|
||
КонецЕсли;
|
||
|
||
// Порядок форм
|
||
Если НЕ стНастройки.Свойство("ПриАвтозапускеОткрыватьФормуСписка") Тогда
|
||
стНастройки.Вставить("ПриАвтозапускеОткрыватьФормуСписка", ПриАвтозапускеОткрыватьФормуСписка);
|
||
КонецЕсли;
|
||
|
||
Если НЕ стНастройки.Свойство("флИспользоватьУмныйПоиск") Тогда
|
||
// +++.ДОБАВЛЕНИЕ.12/04/22-01:04:18.<2iS>.СтарыхСА
|
||
стНастройки.Вставить("флИспользоватьУмныйПоиск", Ложь);
|
||
// ---.ДОБАВЛЕНИЕ.12/04/22-01:04:18.<2iS>.СтарыхСА
|
||
КонецЕсли;
|
||
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-11:08:09.<2iS>.СтарыхСА
|
||
Если НЕ стНастройки.Свойство("флИмяСиноним") Тогда
|
||
стНастройки.Вставить("флИмяСиноним", флИмяСиноним);
|
||
КонецЕсли;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-11:08:09.<2iS>.СтарыхСА
|
||
|
||
Если НЕ стНастройки.Свойство("флИскатьВПодкаталогах") Тогда
|
||
стНастройки.Вставить("флИскатьВПодкаталогах", Истина);
|
||
КонецЕсли;
|
||
|
||
Если НЕ стНастройки.Свойство("флВложенныеПодсистемы") Тогда
|
||
стНастройки.Вставить("флВложенныеПодсистемы", Истина);
|
||
КонецЕсли;
|
||
|
||
ЗаполнитьЗначенияСвойств(ЭтотОбъект, стНастройки);
|
||
|
||
КонецПроцедуры // ЗагрузитьНастройки
|
||
|
||
Процедура СохранитьНастройки(Форма) Экспорт
|
||
|
||
Если ПутьФайлаНастроек = Неопределено тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
стНастройки.ФильтрПодсистем = ФильтрПодсистем;
|
||
стНастройки.ФильтрИмен = ФильтрИмен;
|
||
стНастройки.РазвернутыеСтроки = СохранитьРазвернутыеВетви(Форма);
|
||
стНастройки.ВыбраннаяСтрока = СохранитьВыбраннуюСтроку(Форма);
|
||
|
||
мИсторияФильтраИмен = Новый Массив;
|
||
Для каждого зн из Форма.ЭлементыФормы.ФильтрИмен.СписокВыбора цикл
|
||
мИсторияФильтраИмен.Добавить(зн.Значение);
|
||
КонецЦикла;
|
||
стНастройки.ИсторияФильтраИмен = мИсторияФильтраИмен;
|
||
ЗаполнитьЗначенияСвойств(стНастройки, ЭтотОбъект);
|
||
|
||
// +++.ДОБАВЛЕНИЕ.12/09/22-14:38:07.<2iS>.СтарыхСА
|
||
СохранитьЗначение("ирИнтерфейснаяПанель.Настройки", стНастройки);
|
||
//ЗначениеВФайл(ПутьФайлаНастроек, стНастройки);
|
||
// ---.ДОБАВЛЕНИЕ.12/09/22-14:38:07.<2iS>.СтарыхСА
|
||
|
||
КонецПроцедуры // СохранитьНастройки
|
||
|
||
#КонецЕсли
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
Процедура ОбновитьСтатистикуИспользования(стрОбъект, Форма) Экспорт
|
||
|
||
ТекДата = ТекущаяДата();
|
||
|
||
тзСтатистикаИспользования = стНастройки.СтатистикаИспользования;
|
||
|
||
стПоиск = Новый Структура("Вид,Имя");
|
||
стПоиск.Вид = стрОбъект.Вид;
|
||
стПоиск.Имя = стрОбъект.Имя;
|
||
мСтроки = тзСтатистикаИспользования.НайтиСтроки(стПоиск);
|
||
Если мСтроки.Количество() = 0 тогда
|
||
стрСтатистика = тзСтатистикаИспользования.Добавить();
|
||
стрСтатистика.Вид = стрОбъект.Вид;
|
||
стрСтатистика.Имя = стрОбъект.Имя;
|
||
стрСтатистика.КоличествоИспользований = 1;
|
||
стрСтатистика.ПоследнееИспользование = ТекДата;
|
||
Иначе
|
||
стрСтатистика = мСтроки[0];
|
||
стрСтатистика.КоличествоИспользований = стрСтатистика.КоличествоИспользований + 1;
|
||
стрСтатистика.ПоследнееИспользование = ТекДата;
|
||
КонецЕсли;
|
||
|
||
стНастройки.СтатистикаИспользования = тзСтатистикаИспользования;
|
||
|
||
// Сохраним старую выделенную строку
|
||
ТекСтрока = Форма.ЭлементыФормы.ДеревоИнтерфейса.ТекущаяСтрока;
|
||
стСтрока = Неопределено;
|
||
Для каждого СтатическаяВетка Из СтатическиеВетки Цикл
|
||
Если НЕ (СтатическиеВетки[ТекСтрока.Родитель] = Неопределено) тогда
|
||
стСтрока = СохранитьВыбраннуюСтроку(Форма);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
ЗаполнитьСтатическиеВеткиДереваИнтерфейса(Форма);
|
||
|
||
// Восстановим старую выделенную строку
|
||
Если стСтрока <> Неопределено тогда
|
||
ВосстановитьВыбраннуюСтроку(стСтрока, Форма);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры // ОбновитьСтатистикуИспользования
|
||
|
||
// Добавляет строку в статическую ветку (автозапуск, избранное и т.п.)
|
||
//
|
||
// Параметры
|
||
// СтрокаДерева - строка дерева значений, которую требуется добавить в статическую ветку
|
||
//
|
||
Процедура ДобавитьСтрокуВСтатическуюВетку(СтрокаДерева, ИмяКолонки) Экспорт
|
||
|
||
тзСтатистикаИспользования = стНастройки.СтатистикаИспользования;
|
||
СтрокаСтатическойВетки = тзСтатистикаИспользования.Добавить();
|
||
ЗаполнитьЗначенияСвойств(СтрокаСтатическойВетки, СтрокаДерева);
|
||
СтрокаСтатическойВетки[ИмяКолонки] = 1;
|
||
|
||
КонецПроцедуры //
|
||
|
||
// Открывает форму обработки.
|
||
// Предназначена для автооткрытия формы в 1С при запуске.
|
||
// Помещаем в табло команду ВнешниеОбработки.Создать("<путь>ip8.epf").Открыть() и при каждом запуске, если окно табло включено, обработка будет запускаться автоматически
|
||
// Параметры
|
||
//
|
||
// Возвращаемое значение:
|
||
// булево - статус открытия (октрылась или нет)
|
||
//
|
||
Функция Открыть() экспорт
|
||
|
||
Форма = ЭтотОбъект.ПолучитьФорму();
|
||
Форма.Открыть();
|
||
Возврат Форма.Открыта()
|
||
|
||
КонецФункции // Открыть()
|
||
|
||
// Проверяет строку на то, что это уникальный идентификатор
|
||
//
|
||
// Параметры
|
||
// ПроверяемаяСтрока
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево - признак того, что проверяемая строка является уникальным идентикфикатором
|
||
//
|
||
Функция ЭтоУникальныйИдентификатор(ПроверяемаяСтрока) Экспорт
|
||
|
||
Если ТипЗнч(ПроверяемаяСтрока) = Тип("УникальныйИдентификатор") Тогда
|
||
Возврат Истина
|
||
ИначеЕсли стНастройки.ИспользоватьРегулярныеВыражения Тогда
|
||
Возврат ПроверитьУсловие(ПроверяемаяСтрока, "[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}")
|
||
Иначе
|
||
// Упрощенная проверка - 4 дефиса в заданных позициях
|
||
Возврат (Сред(ПроверяемаяСтрока, 9, 1)+Сред(ПроверяемаяСтрока, 14, 1)+Сред(ПроверяемаяСтрока, 19, 1)+Сред(ПроверяемаяСтрока, 24, 1) = "----" )
|
||
КонецЕсли;
|
||
|
||
КонецФункции // ЭтоУникальныйИдентификатор()
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// проверяет условия с помощью регулярных выражений,
|
||
// если НЕ ТолькоПроверка - заменяет выражение с помощью шаблона ШаблонЗамены и возвращает в переменной ИтоговаяСтрока
|
||
Функция ПроверитьУсловие(СтрокаПоиска,ШаблонПоиска,ТолькоПроверка=Истина,ШаблонЗамены="",ИтоговаяСтрока="") Экспорт
|
||
|
||
Попытка
|
||
RegExp.Pattern = ШаблонПоиска;
|
||
Найдено = RegExp.Test(СтрокаПоиска);
|
||
Исключение
|
||
//Сообщить(ОписаниеОшибки());
|
||
Возврат Ложь;
|
||
КонецПопытки;
|
||
|
||
Если НЕ Найдено или ТолькоПроверка тогда
|
||
ИтоговаяСтрока = "";
|
||
возврат Найдено ;
|
||
Иначе
|
||
ИтоговаяСтрока = RegExp.Replace(СтрокаПоиска,ШаблонЗамены);
|
||
возврат Найдено;
|
||
КонецЕсли;
|
||
|
||
КонецФункции // ПроверитьУсловие()
|
||
|
||
// Получает ссылку по заданному виду и ИД объекта
|
||
//
|
||
// Параметры
|
||
// ВидОбъекта - полное имя объекта метаданных
|
||
// Ид - Уникальный идентификатор объекта метаданных
|
||
//
|
||
// Возвращаемое значение:
|
||
// Ссылка на найденный объект, либо неопределено
|
||
//
|
||
Функция ПолучитьСсылкуПоУИД(ВидОбъекта, Ид) Экспорт
|
||
|
||
Поз = Найти(ВидОбъекта, ".");
|
||
Если Поз = 0 Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
ТипОбъекта = Лев(ВидОбъекта, Поз-1);
|
||
ИмяОбъектаМД = Сред(ВидОбъекта, Поз+1);
|
||
ИдОбъекта = Новый УникальныйИдентификатор(Ид);
|
||
ПараметрыКонструктора = Новый Массив;
|
||
ПараметрыКонструктора.Добавить(ИдОбъекта);
|
||
Попытка
|
||
ТипСсылки = Тип(ТипОбъекта + "Ссылка." + ИмяОбъектаМД);
|
||
Исключение
|
||
Возврат Неопределено;
|
||
КонецПопытки;
|
||
Результат = Новый (ТипСсылки, ПараметрыКонструктора);
|
||
Возврат Результат;
|
||
|
||
КонецФункции // ПолучитьСсылкуПоУИД()
|
||
|
||
Функция ПолучитьИмяОсновногоПредставления()
|
||
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-10:55:56.<2iS>.СтарыхСА
|
||
Если флИмяСиноним Тогда
|
||
ИмяКолонкиПредставления = "Имя";
|
||
Иначе
|
||
ИмяКолонкиПредставления = "Представление";
|
||
КонецЕсли;
|
||
Возврат ИмяКолонкиПредставления;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-10:55:56.<2iS>.СтарыхСА
|
||
|
||
КонецФункции
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
Функция ОбъектПроходитФильтры(стрОбъект, Знач СтрокаПоиска = "", ПроверятьПодсистему=Ложь, СоставФильтраПодсистем = Неопределено)
|
||
|
||
Если СтрокаПоиска = "" Тогда
|
||
СтрокаПоиска = мВременныйФильтрИмен;
|
||
КонецЕсли;
|
||
|
||
// Поиск - по представлению
|
||
Если ТипЗнч(СтрОбъект) = Тип("СтрокаДереваЗначений") Тогда
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-10:55:56.<2iS>.СтарыхСА
|
||
ИмяКолонкиПредставления = ПолучитьИмяОсновногоПредставления();
|
||
Представление = стрОбъект[ИмяКолонкиПредставления];
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-10:55:56.<2iS>.СтарыхСА
|
||
Иначе
|
||
// В случае передачи имени файла
|
||
Представление = стрОбъект;
|
||
КонецЕсли;
|
||
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-11:38:57.<2iS>.СтарыхСА
|
||
МассивФрагментов = ирОбщий.ПолучитьМассивИзСтрокиСРазделителемЛкс(СтрокаПоиска, " ", Истина);
|
||
Для Каждого СтрокаПоиска Из МассивФрагментов Цикл
|
||
// Собственно, поиск по подстроке
|
||
Если НЕ (ПустаяСтрока(СокрЛП(СтрокаПоиска))) Тогда
|
||
Если ?(стНастройки.ИспользоватьРегулярныеВыражения,
|
||
НЕ ПроверитьУсловие(Представление, СтрокаПоиска), // Проверка регулярным выражением
|
||
(Найти(НРег(Представление), НРег(СтрокаПоиска)) = 0) // Проверка обычным поиском
|
||
)
|
||
Тогда
|
||
// Полная строка не нашлась, попробуем найти строку без уточняющего суффикса
|
||
Если флПробоватьУмныйПоиск = Истина Тогда
|
||
Если ?(стНастройки.ИспользоватьРегулярныеВыражения,
|
||
НЕ ПроверитьУсловие(Представление, СтрокаУмногоПоискаБезСуффикса), // Проверка регулярным выражением
|
||
(Найти(НРег(Представление), НРег(СтрокаУмногоПоискаБезСуффикса)) = 0) // Проверка обычным поиском
|
||
)
|
||
Тогда
|
||
Возврат Ложь;
|
||
КонецЕсли
|
||
Иначе
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-11:38:57.<2iS>.СтарыхСА
|
||
|
||
// Отбор по подсистемам - самый медленный, оставим его напоследок
|
||
Если Истина
|
||
И НЕ ПустаяСтрока(ФильтрПодсистем)
|
||
// +++.ДОБАВЛЕНИЕ.12/10/30-01:03:35.<2iS>.СтарыхСА
|
||
//И ФильтрПодсистем <> ИмяКорневойПодсистемы
|
||
// ---.ДОБАВЛЕНИЕ.12/10/30-01:03:35.<2iS>.СтарыхСА
|
||
И НЕ ПроверятьПодсистему
|
||
Тогда
|
||
// Если установлен фильтр подсистемы, то нужны только объекты метаданных, настройки отчетов, внешние обработки и файлы не выводим
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
Если Истина
|
||
И Не ПустаяСтрока(ФильтрПодсистем)
|
||
И ФильтрПодсистем <> ИмяКорневойПодсистемы
|
||
Тогда
|
||
// Проверка подсистем
|
||
Если Истина
|
||
И ПроверятьПодсистему
|
||
И ФильтрПодсистем <> ИмяКорневойПодсистемы
|
||
И Не ПустаяСтрока(ФильтрПодсистем)
|
||
Тогда
|
||
// Убрать мусор, который не относится к подсистемам
|
||
Если стрОбъект.Вид = "СправочникВнешниеОбработки" Тогда
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
Если ВерсияПлатфомы>="8.2" Тогда
|
||
// Код для 8.2
|
||
ОбъектМД = Метаданные[стрОбъект.Вид][стрОбъект.Имя];
|
||
// Если (СоставФильтраПодсистем.Получить(ОбъектМД) = Неопределено) тогда
|
||
Если НЕ ОбъектСодержитсяВОднойИзПодсистемФильтра(СоставФильтраПодсистем, ОбъектМД) Тогда
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
Иначе
|
||
// Код для 8.0 и 8.1
|
||
Если (стрОбъект.Подсистемы.НайтиПоЗначению(ФильтрПодсистем) = Неопределено) тогда
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Возврат Истина;
|
||
|
||
КонецФункции // ОбъектПроходитФильтры
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
Процедура ЗаполнитьСтатическиеВеткиДереваИнтерфейса(Форма) Экспорт
|
||
|
||
Если СтатическиеВетки = Неопределено ИЛИ ДеревоИнтерфейса.Строки.Количество() = 0 Тогда
|
||
СтатическиеВетки = Новый Соответствие();
|
||
Для каждого ЭлементМассива Из МассивСтатическихВеток Цикл
|
||
Если ЭлементМассива.Использовать = Истина Тогда
|
||
СтрокаКорняСтатическойВетки = ДеревоИнтерфейса.Строки.Добавить();
|
||
СтрокаКорняСтатическойВетки.Имя = ЭлементМассива.Имя;
|
||
СтрокаКорняСтатическойВетки.Представление = ЭлементМассива.Представление;
|
||
СтатическиеВетки.Вставить(СтрокаКорняСтатическойВетки, ЭлементМассива);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
элДеревоИнтерфейса = Форма.ЭлементыФормы.ДеревоИнтерфейса;
|
||
|
||
// Для избежания дублей статистику надо свернуть
|
||
тзСтатистикаИспользования = стНастройки.СтатистикаИспользования;
|
||
СтрокаКолонокДляСвертки = "";
|
||
Для каждого СтатическаяВетка Из СтатическиеВетки Цикл
|
||
Если СтатическаяВетка.Значение.РазрешитьПеретаскивание = Истина Тогда
|
||
СтрокаКолонокДляСвертки = СтрокаКолонокДляСвертки + "," + СтатическаяВетка.Значение.Имя;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
тзСтатистикаИспользования.Свернуть("Вид,Имя,ПоследнееИспользование","КоличествоИспользований"+СтрокаКолонокДляСвертки);
|
||
|
||
стПоиск = Новый Структура("Вид,Имя");
|
||
Для каждого СтатическаяВетка Из СтатическиеВетки Цикл
|
||
Если СтатическаяВетка.Значение.Использовать = Ложь Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
//
|
||
тзСтатистикаИспользования.Сортировать(СтатическаяВетка.Значение.СтрокаСортировки);
|
||
|
||
СтрокиКорня = СтатическаяВетка.Ключ.Строки;
|
||
СтрокиКорня.Очистить();
|
||
|
||
нВставленоПозиций = 0;
|
||
Для каждого стрСтатистика из тзСтатистикаИспользования цикл
|
||
ЗаполнитьЗначенияСвойств(стПоиск, стрСтатистика);
|
||
Если СтатическаяВетка.Ключ.Строки.НайтиСтроки(стПоиск, Истина).Количество() = 0 Тогда
|
||
Если нВставленоПозиций > СтатическаяВетка.Значение.КоличествоОтображаемыхЭлементов Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
ЗначениеСортировки = стрСтатистика[Лев(СтатическаяВетка.Значение.СтрокаСортировки,Найти(СтатическаяВетка.Значение.СтрокаСортировки, " ")-1)];
|
||
Если ЗначениеСортировки = Неопределено ИЛИ ЗначениеСортировки = 0 ИЛИ ЗначениеСортировки = '00010101' // Попытка универсального подхода к отсечке пустых значений
|
||
тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
|
||
Если ЭтоУникальныйИдентификатор(стПоиск.Имя) Тогда
|
||
СсылкаПоИД = ПолучитьСсылкуПоУИД(стПоиск.Вид, стПоиск.Имя); // Попытка открыть результат полнотекстового поиска
|
||
Если СсылкаПоИД = Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Представление = Строка(СсылкаПоИД);
|
||
Если Истина
|
||
И СтатическаяВетка.Значение.Фильтровать
|
||
И НЕ ?(стНастройки.ИспользоватьРегулярныеВыражения,
|
||
ПроверитьУсловие(Представление, мВременныйФильтрИмен),
|
||
Найти(НРег(Представление), НРег(мВременныйФильтрИмен)) > 0)
|
||
Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
стрОбъектИнтерфейса = СтрокиКорня.Добавить();
|
||
стрОбъектИнтерфейса.Вид = стПоиск.Вид;
|
||
стрОбъектИнтерфейса.Имя = стПоиск.Имя;
|
||
стрОбъектИнтерфейса.Представление = Представление;
|
||
стрОбъектИнтерфейса.ИндексКартинки = 62;
|
||
Иначе
|
||
// Обработка результатов полнотекстового поиска в случае, если они не видны
|
||
мСтроки = дзВсеОбъекты.Строки.НайтиСтроки(стПоиск, Истина);
|
||
Если мСтроки.Количество() = 0 тогда
|
||
// Попытка поиска среди объектов - не метаданных (работает только с теми элементами, которые видны)
|
||
мСтроки = ДеревоИнтерфейса.Строки.НайтиСтроки(стПоиск, Истина);
|
||
Если мСтроки.Количество() = 0 тогда
|
||
Продолжить;
|
||
Иначе
|
||
стрОбъект = мСтроки[0];
|
||
ИндексКартинки = стрОбъект.ИндексКартинки;
|
||
КонецЕсли;
|
||
Иначе
|
||
стрОбъект = мСтроки[0];
|
||
ИндексКартинки = стрОбъект.ИндексКартинки;
|
||
КонецЕсли;
|
||
Если СтатическаяВетка.Значение.Фильтровать И НЕ ОбъектПроходитФильтры(стрОбъект) тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
стрОбъектИнтерфейса = СтрокиКорня.Добавить();
|
||
стрОбъектИнтерфейса.Вид = стрОбъект.Вид;
|
||
стрОбъектИнтерфейса.Имя = стрОбъект.Имя;
|
||
стрОбъектИнтерфейса.Представление = стрОбъект.Представление;
|
||
стрОбъектИнтерфейса.ИндексКартинки = ИндексКартинки;
|
||
КонецЕсли;
|
||
|
||
нВставленоПозиций = нВставленоПозиций + 1;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Если НЕ ПустаяСтрока(СтатическаяВетка.Значение.СортировкаПриОтображении) Тогда
|
||
СтрокиКорня.Сортировать(СтатическаяВетка.Значение.СортировкаПриОтображении);
|
||
КонецЕсли;
|
||
|
||
РазвернутьВетку = Ложь;
|
||
Если СтатическаяВетка.Значение.Свойство("Развернуть", РазвернутьВетку) И РазвернутьВетку = Истина Тогда
|
||
|
||
Если НЕ элДеревоИнтерфейса.Развернут(СтатическаяВетка.Ключ) тогда
|
||
элДеревоИнтерфейса.Развернуть(СтатическаяВетка.Ключ);
|
||
КонецЕсли;
|
||
|
||
Иначе
|
||
|
||
Если элДеревоИнтерфейса.Развернут(СтатическаяВетка.Ключ) тогда
|
||
элДеревоИнтерфейса.Свернуть(СтатическаяВетка.Ключ);
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
СтатическаяВетка.Ключ.Представление = СтатическаяВетка.Значение.Представление;
|
||
СтатическаяВетка.Ключ.ИндексКартинки = -1;
|
||
СтатическаяВетка.Ключ.Имя = СтатическаяВетка.Значение.Имя;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры // ЗаполнитьСтатическиеВеткиДереваИнтерфейса
|
||
|
||
|
||
//////////////////
|
||
// Фоновые команды
|
||
|
||
Процедура НачатьФоновыйПоиск(Форма) Экспорт
|
||
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-10:21:47.<2iS>.СтарыхСА
|
||
Если флИспользоватьУмныйПоиск Тогда
|
||
КомандыПоиска.Добавить("ПоискПоМетаданным");
|
||
Иначе
|
||
ПоискПоМетаданным();
|
||
КонецЕсли;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-10:21:47.<2iS>.СтарыхСА
|
||
|
||
КомандыПоиска.Добавить("ВыводСохраненныхНастроекОтчетов");
|
||
КомандыПоиска.Добавить("ПолнотекстовыйПоиск");
|
||
|
||
// Эти ветки теперь хранятся целиком в дзВсеОбъекты
|
||
//КомандыПоиска.Добавить("ВыводСодержимогоКаталогов");
|
||
//КомандыПоиска.Добавить("ВыводСохраненныхВнешнихОбработок");
|
||
|
||
Форма.ПодключитьОбработчикОжидания("ФоновыйПоиск", 0.1, Истина);
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
Функция ВыполнитьФоновыйПоиск() Экспорт
|
||
|
||
Если КомандыПоиска.Количество()>0 Тогда
|
||
Выполнить(КомандыПоиска[0]+"()");
|
||
КомандыПоиска.Удалить(0);
|
||
Возврат Истина
|
||
КонецЕсли;
|
||
Возврат Ложь;
|
||
|
||
КонецФункции
|
||
|
||
Функция СоставПодсистемФильтра(СтрокаДереваПодсистем = Неопределено, соотвСоставПодсистемФильтра = Неопределено)
|
||
Если соотвСоставПодсистемФильтра = Неопределено Тогда
|
||
соотвСоставПодсистемФильтра = Новый Соответствие;
|
||
КонецЕсли;
|
||
Если СтрокаДереваПодсистем = Неопределено Тогда
|
||
СтрокаДереваПодсистем = дзВсеПодсистемы.Строки.Найти(ФильтрПодсистем, "ПолноеИмя" ,Истина);
|
||
КонецЕсли;
|
||
Если СтрокаДереваПодсистем <> Неопределено Тогда
|
||
Если флВложенныеПодсистемы И СтрокаДереваПодсистем.Строки.Количество() Тогда
|
||
Для каждого Подсистема Из СтрокаДереваПодсистем.Строки Цикл
|
||
СоставПодсистемФильтра(Подсистема, соотвСоставПодсистемФильтра)
|
||
КонецЦикла;
|
||
соотвСоставПодсистемФильтра.Вставить(СтрокаДереваПодсистем.МД);
|
||
Иначе
|
||
соотвСоставПодсистемФильтра.Вставить(СтрокаДереваПодсистем.МД);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Возврат соотвСоставПодсистемФильтра;
|
||
КонецФункции
|
||
|
||
Функция ОбъектСодержитсяВОднойИзПодсистемФильтра(соотвСоставПодсистемФильтра, ОбъектМД)
|
||
|
||
Для каждого Подсистема Из соотвСоставПодсистемФильтра Цикл
|
||
Если Подсистема.Ключ.Состав.Содержит(ОбъектМД) Тогда
|
||
Возврат Истина;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Возврат Ложь;
|
||
КонецФункции // ОбъектСодержитсяВОднойИзПодсистемФильтра()
|
||
|
||
|
||
Процедура ПоискПоМетаданным()
|
||
Перем НайденныйОбъект;
|
||
|
||
ОбновитьФильтрУмногоПоиска();
|
||
|
||
СтрокаНулей = "00000000000000";
|
||
|
||
// Фильтр подсистем для ускорения определим один раз
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-12:34:32.<2iS>.СтарыхСА
|
||
СоставПодсистемФильтра = СоставПодсистемФильтра();
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-12:34:32.<2iS>.СтарыхСА
|
||
|
||
Для каждого стрКорень из дзВсеОбъекты.Строки цикл
|
||
|
||
СтрокиКорня = Неопределено;
|
||
Для каждого стрОбъект из стрКорень.Строки цикл
|
||
Если НЕ ОбъектПроходитФильтры(стрОбъект,, ВеткиМетаданных.НайтиПоЗначению(стрКорень.Имя) <> Неопределено, СоставПодсистемФильтра) тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
Если СтрокиКорня = Неопределено тогда
|
||
стрКореньИнтерфейса = ДеревоИнтерфейса.Строки.Добавить();
|
||
стрКореньИнтерфейса.Представление = стрКорень.Представление;
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-11:30:29.<2iS>.СтарыхСА
|
||
стрКореньИнтерфейса.Имя = стрКореньИнтерфейса.Представление;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-11:30:29.<2iS>.СтарыхСА
|
||
стрКореньИнтерфейса.ИндексКартинки = стрКорень.ИндексКартинки;
|
||
|
||
СтрокиКорня = стрКореньИнтерфейса.Строки;
|
||
КонецЕсли;
|
||
|
||
стрОбъектИнтерфейса = СтрокиКорня.Добавить();
|
||
стрОбъектИнтерфейса.Вид = стрОбъект.Вид;
|
||
стрОбъектИнтерфейса.Имя = стрОбъект.Имя;
|
||
стрОбъектИнтерфейса.Представление = стрОбъект.Представление;
|
||
стрОбъектИнтерфейса.ИндексКартинки = стрОбъект.ИндексКартинки;
|
||
|
||
Если флПробоватьУмныйПоиск = Истина Тогда
|
||
Попытка
|
||
ОбъектМД = Метаданные[стрОбъект.Вид][стрОбъект.Имя];
|
||
Исключение
|
||
// Метаданные кончились
|
||
Возврат
|
||
КонецПопытки;
|
||
|
||
Если стрОбъект.Вид = "Справочники" ИЛИ стрОбъект.Вид = "ПланыВидовХарактеристик" ИЛИ стрОбъект.Вид = "ПланыСчетов" ИЛИ стрОбъект.Вид = "ПланыВидовРасчета" ИЛИ стрОбъект.Вид = "Документы" ИЛИ стрОбъект.Вид = "БизнесПроцессы" ИЛИ стрОбъект.Вид = "Задачи" Тогда
|
||
Если стрОбъект.Вид = "Справочники" ИЛИ стрОбъект.Вид = "ПланыВидовХарактеристик" ИЛИ стрОбъект.Вид = "ПланыСчетов" ИЛИ стрОбъект.Вид = "ПланыВидовРасчета" Тогда
|
||
ДлинаКода = ОбъектМД.ДлинаКода;
|
||
Если Истина
|
||
И ДлинаКода > 0
|
||
И (Ложь// Есть где искать по коду
|
||
Или стрОбъект.Вид = "ПланыВидовХарактеристик" // Либо это план видов характеристик (только строковые коды)
|
||
Или стрОбъект.Вид = "ПланыСчетов" // Либо это план счетов (только строковые коды)
|
||
Или (ЧислоСуффиксаУмногоПоиска = 0 И Строка(ОбъектМД.ТипКода)="Строка") // Либо тип кода строковый
|
||
Или (ЧислоСуффиксаУмногоПоиска>0 И Строка(ОбъектМД.ТипКода)="Число") // Искомый суффикс похож на число
|
||
)
|
||
Тогда
|
||
Выполнить("НайденныйОбъект = " + стрОбъект.Вид + "." + стрОбъект.Имя + ".НайтиПоКоду(СтрокаСуффиксаУмногоПоиска)" );
|
||
Если НЕ НайденныйОбъект.Пустая() Тогда
|
||
СтрокаОбъекта = ДеревоИнтерфейса.Строки.Вставить(0);
|
||
СтрокаОбъекта.Имя = НайденныйОбъект.УникальныйИдентификатор();
|
||
СтрокаОбъекта.Вид = НайденныйОбъект.Метаданные().ПолноеИмя();
|
||
СтрокаОбъекта.Представление = НайденныйОбъект;
|
||
СтрокаОбъекта.ИндексКартинки = 62;
|
||
Продолжить
|
||
КонецЕсли
|
||
ИначеЕсли (ЧислоСуффиксаУмногоПоиска > 0 И Строка(ОбъектМД.ТипКода)="Строка") Тогда
|
||
// Номер может быть частичным - автодополняем префиксами и нулями
|
||
Для каждого Префикс Из МассивПрефиксовОрганизаций Цикл
|
||
Для сч=0 По ДлинаКода-СтрДлина(Префикс)-ДлинаСуффиксаУмногоПоиска Цикл
|
||
КодСПрефиксом = Префикс + Лев(СтрокаНулей, сч) + СтрокаСуффиксаУмногоПоиска;
|
||
Выполнить("НайденныйОбъект = " + стрОбъект.Вид + "." + стрОбъект.Имя + ".НайтиПоКоду(КодСПрефиксом)" );
|
||
Если НЕ НайденныйОбъект.Пустая() Тогда
|
||
СтрокаОбъекта = ДеревоИнтерфейса.Строки.Вставить(0);
|
||
СтрокаОбъекта.Имя = НайденныйОбъект.УникальныйИдентификатор();
|
||
СтрокаОбъекта.Вид = НайденныйОбъект.Метаданные().ПолноеИмя();
|
||
СтрокаОбъекта.Представление = НайденныйОбъект;
|
||
СтрокаОбъекта.ИндексКартинки = 62;
|
||
Продолжить
|
||
КонецЕсли
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
Если ОбъектМД.ДлинаНаименования > 0 Тогда
|
||
Выполнить("НайденныйОбъект = " + стрОбъект.Вид + "." + стрОбъект.Имя + ".НайтиПоНаименованию(СтрокаСуффиксаУмногоПоиска, Ложь" + ?(стрОбъект.Вид="ПланыСчетов", ", " + стрОбъект.Вид + "." + стрОбъект.Имя + ".ПустаяСсылка())", ")") );
|
||
Если НЕ НайденныйОбъект.Пустая() Тогда
|
||
|
||
СтрокаОбъекта = ДеревоИнтерфейса.Строки.Вставить(0);
|
||
СтрокаОбъекта.Имя = НайденныйОбъект.УникальныйИдентификатор();
|
||
СтрокаОбъекта.Вид = НайденныйОбъект.Метаданные().ПолноеИмя();
|
||
СтрокаОбъекта.Представление = НайденныйОбъект;
|
||
СтрокаОбъекта.ИндексКартинки = 62;
|
||
Продолжить
|
||
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли стрОбъект.Вид = "Документы" ИЛИ стрОбъект.Вид = "БизнесПроцессы" ИЛИ стрОбъект.Вид = "Задачи" Тогда
|
||
ДлинаНомера = ОбъектМД.ДлинаНомера ;
|
||
Если ДлинаНомера > 0 И ((ЧислоСуффиксаУмногоПоиска>0 И Строка(ОбъектМД.ТипНомера) = "Число") ИЛИ (ЧислоСуффиксаУмногоПоиска=0 И Строка(ОбъектМД.ТипНомера)="Строка")) Тогда
|
||
Выполнить("НайденныйОбъект = " + стрОбъект.Вид + "." + стрОбъект.Имя + ".НайтиПоНомеру("+?(стрОбъект.Вид="Задачи", "СтрокаСуффиксаУмногоПоиска)", "СтрокаСуффиксаУмногоПоиска, РабочаяДата)" ));
|
||
Если НЕ НайденныйОбъект.Пустая() Тогда
|
||
|
||
СтрокаОбъекта = ДеревоИнтерфейса.Строки.Вставить(0);
|
||
СтрокаОбъекта.Имя = НайденныйОбъект.УникальныйИдентификатор();
|
||
СтрокаОбъекта.Вид = НайденныйОбъект.Метаданные().ПолноеИмя();
|
||
СтрокаОбъекта.Представление = НайденныйОбъект;
|
||
СтрокаОбъекта.ИндексКартинки = 62;
|
||
Продолжить
|
||
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли (ЧислоСуффиксаУмногоПоиска > 0 И Строка(ОбъектМД.ТипНомера)="Строка") Тогда
|
||
// Номер может быть частичным - автодополняем префиксами и нулями
|
||
Для каждого Префикс Из МассивПрефиксовОрганизаций Цикл
|
||
Для сч=0 По ДлинаНомера - СтрДлина(Префикс)-ДлинаСуффиксаУмногоПоиска Цикл
|
||
НомерСПрефиксом = Префикс + Лев(СтрокаНулей, сч) + СтрокаСуффиксаУмногоПоиска;
|
||
Выполнить("НайденныйОбъект = " + стрОбъект.Вид + "." + стрОбъект.Имя + ".НайтиПоНомеру("+?(стрОбъект.Вид="Задачи", "НомерСПрефиксом)", "НомерСПрефиксом, РабочаяДата)" ));
|
||
Если НЕ НайденныйОбъект.Пустая() Тогда
|
||
|
||
СтрокаОбъекта = ДеревоИнтерфейса.Строки.Вставить(0);
|
||
СтрокаОбъекта.Имя = НайденныйОбъект.УникальныйИдентификатор();
|
||
СтрокаОбъекта.Вид = НайденныйОбъект.Метаданные().ПолноеИмя();
|
||
СтрокаОбъекта.Представление = НайденныйОбъект;
|
||
СтрокаОбъекта.ИндексКартинки = 62;
|
||
Продолжить
|
||
|
||
КонецЕсли
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
// Если поиск по коду, наименованию, номеру не удался, попробуем поискать по индексируемым реквизитам
|
||
Для каждого РеквизитОбъектаМД Из ОбъектМД.Реквизиты Цикл
|
||
Если РеквизитОбъектаМД.Индексирование <> Метаданные.СвойстваОбъектов.Индексирование.НЕИндексировать Тогда
|
||
Выполнить("НайденныйОбъект = " + стрОбъект.Вид + "." + стрОбъект.Имя + ".НайтиПоРеквизиту(РеквизитОбъектаМД.Имя, СтрокаСуффиксаУмногоПоиска)");
|
||
Если НЕ НайденныйОбъект.Пустая() Тогда
|
||
|
||
СтрокаОбъекта = ДеревоИнтерфейса.Строки.Вставить(0);
|
||
СтрокаОбъекта.Имя = НайденныйОбъект.УникальныйИдентификатор();
|
||
СтрокаОбъекта.Вид = НайденныйОбъект.Метаданные().ПолноеИмя();
|
||
СтрокаОбъекта.Представление = НайденныйОбъект;
|
||
СтрокаОбъекта.ИндексКартинки = 62;
|
||
Продолжить
|
||
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецЦикла;
|
||
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
Процедура ВыводСодержимогоКаталогов(ДеревоОбъектов = Неопределено, СтрокаПоиска="")
|
||
|
||
// Вывод содержимого каталогов
|
||
Для каждого Каталог Из стНастройки.Каталоги Цикл
|
||
СтрокиКорня = Неопределено;
|
||
МассивНайденныхФайлов = НайтиФайлы(Каталог.Ключ, "*", флИскатьВПодкаталогах=Истина);
|
||
Для каждого НайденныйФайл Из МассивНайденныхФайлов Цикл
|
||
Расширение = ВРЕГ(НайденныйФайл.Расширение);
|
||
Если Расширение = ".EPF" Тогда
|
||
ВидФайла = "Внешние обработки";
|
||
ИндексКартинки = 19; // 56;
|
||
ИначеЕсли ВерсияПлатфомы >= "8.1" И Расширение = ".ERF" Тогда
|
||
ВидФайла = "Внешние отчеты";
|
||
ИндексКартинки = 19; // 57;
|
||
ИначеЕсли Расширение = ".TXT" Тогда
|
||
ВидФайла = "Текстовые документы";
|
||
ИндексКартинки = 58;
|
||
ИначеЕсли Расширение = ".MXL" Тогда
|
||
ВидФайла = "Табличные документы";
|
||
ИндексКартинки = 59;
|
||
ИначеЕсли Расширение = ".RCF" Тогда
|
||
ВидФайла = "Настройки консоли отчетов";
|
||
ИндексКартинки = 60;
|
||
ИначеЕсли Расширение = ".SEL" Тогда
|
||
ВидФайла = "Настройки консоли запросов";
|
||
ИндексКартинки = 61;
|
||
Иначе
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
Если НЕ ОбъектПроходитФильтры(НайденныйФайл.ИмяБезРасширения, СтрокаПоиска) Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
Если СтрокиКорня = Неопределено тогда
|
||
стрКореньИнтерфейса = ?(ДеревоОбъектов = Неопределено, ДеревоИнтерфейса.Строки.Добавить(), ДеревоОбъектов.Строки.Добавить()) ;
|
||
стрКореньИнтерфейса.Представление = Каталог.Значение;
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-11:31:23.<2iS>.СтарыхСА
|
||
стрКореньИнтерфейса.Имя = стрКореньИнтерфейса.Представление;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-11:31:23.<2iS>.СтарыхСА
|
||
стрКореньИнтерфейса.ИндексКартинки = 12;
|
||
СтрокиКорня = стрКореньИнтерфейса.Строки;
|
||
КонецЕсли;
|
||
стрОбъектИнтерфейса = СтрокиКорня.Добавить();
|
||
стрОбъектИнтерфейса.Вид = ВидФайла;
|
||
стрОбъектИнтерфейса.Имя = НайденныйФайл.ПолноеИмя;
|
||
стрОбъектИнтерфейса.Представление = НайденныйФайл.ИмяБезРасширения;
|
||
стрОбъектИнтерфейса.ИндексКартинки = ИндексКартинки;
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ВыводСохраненныхНастроекОтчетов(ДеревоОбъектов = Неопределено, СтрокаПоиска = "")
|
||
|
||
// Вывод сохраненных настроек отчетов
|
||
Если ЕстьУниверсальныйОтчет И Есть_РС_СохраненныеНастройки Тогда
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст = "ВЫБРАТЬ
|
||
| СохраненныеНастройки.ИмяОбъекта КАК Вид,
|
||
| СохраненныеНастройки.НаименованиеНастройки как Имя,
|
||
| СохраненныеНастройки.НаименованиеНастройки как Представление,
|
||
| 24 как ИндексКартинки
|
||
|ИЗ
|
||
| РегистрСведений.СохраненныеНастройки КАК СохраненныеНастройки
|
||
|ГДЕ
|
||
| Выразить(СохраненныеНастройки.ИмяОбъекта как Строка(12)) = ""ОтчетОбъект.""
|
||
| И СохраненныеНастройки.Пользователь = &ТекущийПользователь";
|
||
|
||
Запрос.УстановитьПараметр("ТекущийПользователь", мТекущийПользователь);
|
||
|
||
РезультатЗапросаПоНастройкам = Запрос.Выполнить();
|
||
Если НЕ РезультатЗапросаПоНастройкам.Пустой() Тогда
|
||
|
||
СтрокаКорняОтчетов = ?(ДеревоОбъектов = Неопределено, ДеревоИнтерфейса, ДеревоОбъектов).Строки.Найти("Отчеты");
|
||
ВыборкаНастроек = РезультатЗапросаПоНастройкам.Выбрать();
|
||
Пока ВыборкаНастроек.Следующий() Цикл
|
||
Если НЕ ОбъектПроходитФильтры(ВыборкаНастроек.Представление, СтрокаПоиска) Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
Если СтрокаКорняОтчетов = Неопределено Тогда
|
||
стрКореньИнтерфейса = ?(ДеревоОбъектов = Неопределено, ДеревоИнтерфейса, ДеревоОбъектов).Строки.Добавить();
|
||
стрКореньИнтерфейса.Представление = "Отчеты";
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-11:31:58.<2iS>.СтарыхСА
|
||
стрКореньИнтерфейса.Имя = стрКореньИнтерфейса.Представление;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-11:31:58.<2iS>.СтарыхСА
|
||
стрКореньИнтерфейса.ИндексКартинки = 23;
|
||
СтрокиКорня = стрКореньИнтерфейса.Строки;
|
||
Иначе
|
||
СтрокиКорня = СтрокаКорняОтчетов.Строки;
|
||
КонецЕсли;
|
||
|
||
ИмяОтчета = Сред(ВыборкаНастроек.Вид, Найти(ВыборкаНастроек.Вид, ".")+1);
|
||
СтрокаОтчетаДляНастройки = СтрокиКорня.Найти(ИмяОтчета, "Имя", Истина);
|
||
Если СтрокаОтчетаДляНастройки = Неопределено Тогда
|
||
МДОтчет = Метаданные.Отчеты.Найти(ИмяОтчета);
|
||
Если МДОтчет = Неопределено Тогда
|
||
// Случай, когда в регистре сведний хранится название уже несуществующего отчета
|
||
Продолжить;
|
||
Иначе
|
||
СтрокаОтчетаДляНастройки = СтрокиКорня.Добавить();
|
||
СтрокаОтчетаДляНастройки.Вид = "Отчеты";
|
||
СтрокаОтчетаДляНастройки.Имя = ИмяОтчета;
|
||
СтрокаОтчетаДляНастройки.Представление = МДОтчет.Синоним;
|
||
СтрокаОтчетаДляНастройки.ИндексКартинки = 23;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
стрОбъектИнтерфейса = СтрокаОтчетаДляНастройки.Строки.Добавить();
|
||
ЗаполнитьЗначенияСвойств(стрОбъектИнтерфейса, ВыборкаНастроек);
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
Процедура ВыводСохраненныхВнешнихОбработок(ДеревоОбъектов = Неопределено, СтрокаПоиска = "")
|
||
|
||
// Вывод сохраненных внешних обработок
|
||
Если ЕстьСправочникВнешнихОбработок Тогда
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст = "ВЫБРАТЬ
|
||
| Наименование как Представление, Код как Имя, ""СправочникВнешниеОбработки"" как Вид,
|
||
| 19 как ИндексКартинки
|
||
|ИЗ
|
||
| Справочник.ВнешниеОбработки";
|
||
|
||
РезультатЗапросаПоСправочникуОбработок = Запрос.Выполнить();
|
||
Если НЕ РезультатЗапросаПоСправочникуОбработок.Пустой() Тогда
|
||
ПредставлениеКорняВнешнихОбработок = "Справочник ""Внешние обработки""";
|
||
СтрокаКорняВнешнихОбработок = ?(ДеревоОбъектов = Неопределено, ДеревоИнтерфейса, ДеревоОбъектов).Строки.Найти(ПредставлениеКорняВнешнихОбработок);
|
||
Если СтрокаКорняВнешнихОбработок = Неопределено Тогда
|
||
СтрокаКорняВнешнихОбработок = ?(ДеревоОбъектов = Неопределено, ДеревоИнтерфейса, ДеревоОбъектов).Строки.Добавить();
|
||
СтрокаКорняВнешнихОбработок.Представление = ПредставлениеКорняВнешнихОбработок;
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-11:25:37.<2iS>.СтарыхСА
|
||
СтрокаКорняВнешнихОбработок.Имя = СтрокаКорняВнешнихОбработок.Представление;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-11:25:37.<2iS>.СтарыхСА
|
||
СтрокаКорняВнешнихОбработок.ИндексКартинки = 18;
|
||
КонецЕсли;
|
||
СтрокиКорня = СтрокаКорняВнешнихОбработок.Строки;
|
||
ВыборкаПоСправочникуВнешнихОбработок = РезультатЗапросаПоСправочникуОбработок.Выбрать();
|
||
Пока ВыборкаПоСправочникуВнешнихОбработок.Следующий() Цикл
|
||
Если ОбъектПроходитФильтры(ВыборкаПоСправочникуВнешнихОбработок.Представление, СтрокаПоиска) Тогда
|
||
стрОбъектИнтерфейса = СтрокаКорняВнешнихОбработок.Строки.Добавить();
|
||
ЗаполнитьЗначенияСвойств(стрОбъектИнтерфейса, ВыборкаПоСправочникуВнешнихОбработок);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// Глобальный поиск
|
||
|
||
|
||
Процедура ПолнотекстовыйПоиск()
|
||
|
||
// Полнотекстовый поиск по данным ИБ
|
||
Если ПолнотекстовыйПоискВыполнен() Тогда
|
||
КоличествоРезультатовПоиска = мСписокПолнотекстовогоПоиска.Количество();
|
||
ПолноеКоличествоРезультатовПоиска = мСписокПолнотекстовогоПоиска.ПолноеКоличество();
|
||
ПредставлениеКорняПолнотекстовогоПоиска = "Полнотекстовый поиск (" + КоличествоРезультатовПоиска + " из " + ПолноеКоличествоРезультатовПоиска + ")";
|
||
СтрокаКорня = ДеревоИнтерфейса.Строки.Найти(ПредставлениеКорняПолнотекстовогоПоиска);
|
||
Если СтрокаКорня = Неопределено Тогда
|
||
СтрокаКорня = ДеревоИнтерфейса.Строки.Добавить();
|
||
СтрокаКорня.Представление = ПредставлениеКорняПолнотекстовогоПоиска;
|
||
// +++.ДОБАВЛЕНИЕ.12/04/21-11:25:37.<2iS>.СтарыхСА
|
||
СтрокаКорня.Имя = СтрокаКорня.Представление;
|
||
// ---.ДОБАВЛЕНИЕ.12/04/21-11:25:37.<2iS>.СтарыхСА
|
||
СтрокаКорня.ИндексКартинки = 62;
|
||
КонецЕсли;
|
||
СтрокиКорня = СтрокаКорня.Строки;
|
||
Если мСписокПолнотекстовогоПоиска.НачальнаяПозиция() > 0 Тогда
|
||
// Строка возврата назад
|
||
КонецЕсли;
|
||
Для сч = 0 По КоличествоРезультатовПоиска-1 Цикл
|
||
стрОбъектИнтерфейса = СтрокиКорня.Добавить();
|
||
ЭлементСпискаПолнотекстовогоПоиска = мСписокПолнотекстовогоПоиска.Получить(сч);
|
||
стрОбъектИнтерфейса.Имя = ЭлементСпискаПолнотекстовогоПоиска.Значение.УникальныйИдентификатор();
|
||
стрОбъектИнтерфейса.Вид = ЭлементСпискаПолнотекстовогоПоиска.Метаданные.ПолноеИмя();
|
||
стрОбъектИнтерфейса.Представление = "" + ЭлементСпискаПолнотекстовогоПоиска.Метаданные + ":" + ЭлементСпискаПолнотекстовогоПоиска.Представление;
|
||
стрОбъектИнтерфейса.ИндексКартинки = 62;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ПолнотекстовыйПоискВыполнен()
|
||
Если ФильтрИмен = "" ИЛИ мСписокПолнотекстовогоПоиска = Неопределено Тогда
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
МассивМД = Новый Массив();
|
||
Если ФильтрПодсистем <> ИмяКорневойПодсистемы И (ПустаяСтрока(ФильтрПодсистем) = Ложь) Тогда
|
||
//ПодсистемаФильтра = Метаданные.Подсистемы.Найти(ФильтрПодсистем);
|
||
//Для каждого ВидМД Из ВеткиМетаданных Цикл
|
||
// Если
|
||
// ВидМД.Значение = "Справочники" ИЛИ
|
||
// ВидМД.Значение = "Документы"ИЛИ
|
||
// ВидМД.Значение = "ПланыВидовХарактеристик"ИЛИ
|
||
// ВидМД.Значение = "ПланыСчетов"ИЛИ
|
||
// ВидМД.Значение = "ПланыВидовРасчета"ИЛИ
|
||
// ВидМД.Значение = "БизнесПроцессы"ИЛИ
|
||
// ВидМД.Значение = "Задачи"ИЛИ
|
||
// ВидМД.Значение = "ПланыОбмена"
|
||
//
|
||
// Тогда
|
||
// Для Каждого МД Из Метаданные[ВидМД.Представление] Цикл
|
||
// Если МД.Подсистемы.Содержит(ПодсистемаФильтра) Тогда
|
||
// МассивМД.Добавить(МД);
|
||
// КонецЕсли;
|
||
// КонецЦикла;
|
||
// КонецЕсли;
|
||
//КонецЦикла;
|
||
Иначе
|
||
Для каждого ВидМД Из ВеткиМетаданных Цикл
|
||
Если
|
||
ВидМД.Значение = "Справочники" ИЛИ
|
||
ВидМД.Значение = "Документы"ИЛИ
|
||
ВидМД.Значение = "ПланыВидовХарактеристик"ИЛИ
|
||
ВидМД.Значение = "ПланыСчетов"ИЛИ
|
||
ВидМД.Значение = "ПланыВидовРасчета"ИЛИ
|
||
ВидМД.Значение = "БизнесПроцессы"ИЛИ
|
||
ВидМД.Значение = "Задачи"ИЛИ
|
||
ВидМД.Значение = "ПланыОбмена"
|
||
|
||
Тогда
|
||
Для Каждого МД Из Метаданные[ВидМД.Представление] Цикл
|
||
МассивМД.Добавить(МД);
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
мСписокПолнотекстовогоПоиска.ОбластьПоиска = МассивМД;
|
||
|
||
мСписокПолнотекстовогоПоиска.ПорогНечеткости = стНастройки.ПолнотекстовыйПоискПорогНечеткости;
|
||
|
||
мСписокПолнотекстовогоПоиска.СтрокаПоиска = ФильтрИмен;
|
||
мСписокПолнотекстовогоПоиска.РазмерПорции = стНастройки.ПолнотекстовыйПоискРазмерПорции;
|
||
мСписокПолнотекстовогоПоиска.ПерваяЧасть();
|
||
Возврат мСписокПолнотекстовогоПоиска.ПолноеКоличество()>0;
|
||
КонецФункции
|
||
|
||
|
||
///////////////////////////////////////////////////////
|
||
// Служебные процедуры и функции
|
||
|
||
// --------------------------------------------
|
||
Функция СтрокаМассив(Знач Значение,Разделитель) Экспорт
|
||
Если ТипЗнч(Значение)=Тип("Строка") Тогда
|
||
МнСтр=СтрЗаменить(Значение,Разделитель,Символы.ПС);
|
||
Массив=Новый Массив;
|
||
Для н=1 По СтрЧислоСтрок(МнСтр) Цикл
|
||
Массив.Добавить(СтрПолучитьСтроку(МнСтр,н));
|
||
КонецЦикла;
|
||
Возврат Массив;
|
||
ИначеЕсли ТипЗнч(Значение)=Тип("Массив") Тогда
|
||
Строка="";
|
||
Для Каждого Элемент Из Значение Цикл
|
||
Строка=Строка+?(Строка<>"",Разделитель,"")+Элемент;
|
||
КонецЦикла;
|
||
Возврат Строка;
|
||
Иначе
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
КонецФункции // гмРазобратьСтроку()
|
||
|
||
// Устанавливает переменные умного поиска для дальнейшего использования
|
||
//
|
||
Процедура ОбновитьФильтрУмногоПоиска(Принудительно=Ложь) Экспорт
|
||
|
||
Если МассивПрефиксовОрганизаций = Неопределено Тогда
|
||
//Если Есть_СправочникОрганизаций Тогда
|
||
// Запрос = Новый Запрос("Выбрать различные разрешенные Префикс из Справочник.Организации");
|
||
// МассивПрефиксовОрганизаций = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Префикс");
|
||
// МассивПрефиксовОрганизаций.Добавить("");
|
||
//Иначе
|
||
МассивПрефиксовОрганизаций = Новый Массив;
|
||
//КонецЕсли;
|
||
КонецЕсли;
|
||
Если стНастройки.флИспользоватьУмныйПоиск = Истина Тогда
|
||
Если НЕ Принудительно И ЗначениеЗаполнено(мСловаСтрокиУмногоПоиска) и Лев(ФильтрИмен, СтрДлина(мСловаСтрокиУмногоПоиска[0]))=мСловаСтрокиУмногоПоиска[0] Тогда
|
||
Возврат
|
||
КонецЕсли;
|
||
мСловаСтрокиУмногоПоиска = СтрокаМассив(ФильтрИмен, " ");
|
||
КоличествоСлов = мСловаСтрокиУмногоПоиска.Количество();
|
||
Если КоличествоСлов>1 Тогда
|
||
СтрокаУмногоПоискаБезСуффикса = "";
|
||
Для сч=0 По КоличествоСлов-2 Цикл
|
||
СтрокаУмногоПоискаБезСуффикса = ?(ПустаяСтрока(СтрокаУмногоПоискаБезСуффикса), "", СтрокаУмногоПоискаБезСуффикса + " ") + мСловаСтрокиУмногоПоиска[сч];
|
||
КонецЦикла;
|
||
СтрокаСуффиксаУмногоПоиска = мСловаСтрокиУмногоПоиска[КоличествоСлов-1];
|
||
ДлинаСуффиксаУмногоПоиска = СтрДлина(СтрокаСуффиксаУмногоПоиска);
|
||
Попытка
|
||
ЧислоСуффиксаУмногоПоиска = Число(СокрЛП(СтрокаСуффиксаУмногоПоиска));
|
||
Исключение
|
||
ЧислоСуффиксаУмногоПоиска = 0;
|
||
КонецПопытки;
|
||
флПробоватьУмныйПоиск = Истина;
|
||
Иначе
|
||
мСловаСтрокиУмногоПоиска = Неопределено;
|
||
СтрокаУмногоПоискаБезСуффикса = "";
|
||
СтрокаСуффиксаУмногоПоиска = "";
|
||
флПробоватьУмныйПоиск = Ложь;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры // ОбновитьФильтрУмногоПоиска()
|
||
|
||
// Простейший вывод таблицы значений в табличный документ
|
||
//
|
||
// Параметры
|
||
// ТЗ - таблица значений
|
||
//
|
||
// Возвращаемое значение:
|
||
// Сформированный табличный документ
|
||
//
|
||
Функция ВывестиТЗвТД(ТЗ, Показывать = Ложь, Заголовок = "Таблица значений") Экспорт
|
||
_ПостроительОтчета = Новый ПостроительОтчета;
|
||
_ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);
|
||
_ПостроительОтчета.ЗаполнитьНастройки();
|
||
_ТД = Новый ТабличныйДокумент;
|
||
_ПостроительОтчета.Вывести(_ТД);
|
||
Если Показывать Тогда
|
||
_ТД.Показать(Заголовок);
|
||
КонецЕсли;
|
||
Возврат _ТД;
|
||
КонецФункции // ВывестиТЗвТД()
|
||
|
||
//ирПортативный #Если Клиент Тогда
|
||
//ирПортативный Контейнер = Новый Структура();
|
||
//ирПортативный Оповестить("ирПолучитьБазовуюФорму", Контейнер);
|
||
//ирПортативный Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
|
||
//ирПортативный ПолноеИмяФайлаБазовогоМодуля = ВосстановитьЗначение("ирПолноеИмяФайлаОсновногоМодуля");
|
||
//ирПортативный ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
|
||
//ирПортативный КонецЕсли;
|
||
//ирПортативный ирОбщий = ирПортативный.ПолучитьОбщийМодульЛкс("ирОбщий");
|
||
//ирПортативный ирКэш = ирПортативный.ПолучитьОбщийМодульЛкс("ирКэш");
|
||
//ирПортативный ирСервер = ирПортативный.ПолучитьОбщийМодульЛкс("ирСервер");
|
||
//ирПортативный ирПривилегированный = ирПортативный.ПолучитьОбщийМодульЛкс("ирПривилегированный");
|
||
//ирПортативный #КонецЕсли
|
||
|
||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
// РАЗДЕЛ НАСТРОЕК
|
||
|
||
ИсторияКоманд = 50;
|
||
ИспользоватьРегулярныеВыражения = Истина;
|
||
ПолнотекстовыйПоискПорогНечеткости = 0;
|
||
ПолнотекстовыйПоискРазмерПорции = 0; // Если 0 - то полнотекстовый поиск отключен
|
||
|
||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||
// Соответствие статических веток (История использования и Избранное) и настроек для них
|
||
//Представление, - отображение в интерфейсе
|
||
//СтрокаСортировки, - строка сортировки в таблице статистики
|
||
//КоличествоОтображаемыхЭлементов, - сколько элементов выводить
|
||
//Фильтровать - фильтровать ли данную ветку вместе с деревом
|
||
|
||
МассивСтатическихВеток = Новый Массив;
|
||
|
||
//// Быстрый поиск
|
||
//МассивСтатическихВеток.Добавить(Новый Структура(
|
||
// "Имя,Использовать,Представление,СтрокаСортировки,КоличествоОтображаемыхЭлементов,Фильтровать,СортировкаПриОтображении,РазрешитьПеретаскивание,Автозапуск,Развернуть",
|
||
// "БыстрыйПоиск",
|
||
// Истина, // Использовать ли данную ветку
|
||
// "Быстрый поиск", // Представление ветки в дереве
|
||
// "БыстрыйПоиск УБЫВ", // Строка сортировки статистической таблицы. Определяет, какие элементы выводятся
|
||
// 5, // Количество элементов, отображаемых в данной ветке
|
||
// Истина, // Фильтровать ли ветку при непустой строке фильтра
|
||
// "", // не сортировать
|
||
// Ложь, // Разрешить перетаскивание
|
||
// Ложь // Автозапуск команд в данной ветке при открытии обработки
|
||
// ,Истина // Ветка развернута
|
||
// )
|
||
// );
|
||
|
||
// Недавние
|
||
МассивСтатическихВеток.Добавить(Новый Структура(
|
||
"Имя,Использовать,Представление,СтрокаСортировки,КоличествоОтображаемыхЭлементов,Фильтровать,СортировкаПриОтображении,РазрешитьПеретаскивание,Автозапуск,Развернуть",
|
||
"НедавноИспользованные",
|
||
Истина, // Использовать ли данную ветку
|
||
"Недавно использованные", // Представление ветки в дереве
|
||
"ПоследнееИспользование УБЫВ", // Строка сортировки статистической таблицы. Сортировка определяет, какие элементы выводятся
|
||
10, // Количество элементов, отбражаемых в данной ветке
|
||
Ложь, // Фильтровать ли ветку при непустой строке фильтра
|
||
// Сортировка отображаемых элементов
|
||
// "Вид,Имя" - обычная сортировка
|
||
"", // сортировка по дате использования
|
||
Ложь, // Перетаскивание
|
||
Ложь // Автозапуск
|
||
,Ложь // Ветка свернута
|
||
)
|
||
);
|
||
// Часто используемые
|
||
МассивСтатическихВеток.Добавить(Новый Структура(
|
||
"Имя,Использовать,Представление,СтрокаСортировки,КоличествоОтображаемыхЭлементов,Фильтровать,СортировкаПриОтображении,РазрешитьПеретаскивание,Автозапуск,Развернуть",
|
||
"ЧастоИспользуемые",
|
||
Истина,
|
||
"Часто используемые",
|
||
"КоличествоИспользований УБЫВ,ПоследнееИспользование",
|
||
10,
|
||
Ложь,
|
||
// Сортировка отображаемых элементов
|
||
"Вид,Имя",
|
||
Ложь, // Перетаскивание
|
||
Ложь // Автозапуск
|
||
,Ложь // Ветка свернута
|
||
)
|
||
);
|
||
// Избранное
|
||
МассивСтатическихВеток.Добавить(Новый Структура(
|
||
"Имя,Использовать,Представление,СтрокаСортировки,КоличествоОтображаемыхЭлементов,Фильтровать,СортировкаПриОтображении,РазрешитьПеретаскивание,Автозапуск,Развернуть",
|
||
"Избранное",
|
||
Истина, // Использовать ли данную ветку
|
||
"Избранное", // Представление ветки в дереве
|
||
"Избранное УБЫВ",
|
||
10,
|
||
Ложь,
|
||
// Сортировка отображаемых элементов
|
||
"Вид,Имя",
|
||
Истина, // Перетаскивание
|
||
Ложь // Автозапуск
|
||
,Ложь // Ветка свернута
|
||
)
|
||
);
|
||
// Автозапуск
|
||
МассивСтатическихВеток.Добавить(Новый Структура(
|
||
"Имя,Использовать,Представление,СтрокаСортировки,КоличествоОтображаемыхЭлементов,Фильтровать,СортировкаПриОтображении,РазрешитьПеретаскивание,Автозапуск,Развернуть",
|
||
"Автозапуск",
|
||
Истина, // Использовать ли данную ветку
|
||
"Автозапуск", // Представление ветки в дереве
|
||
"Автозапуск УБЫВ", // Строка сортировки статистической таблицы. Определяет, какие элементы выводятся
|
||
10, // Количество элементов, отображаемых в данной ветке
|
||
Ложь, // Фильтровать ли ветку при непустой строке фильтра
|
||
"", // не сортировать
|
||
Истина, // Разрешить перетаскивание
|
||
Истина // Автозапуск команд в данной ветке при открытии обработки
|
||
,Ложь // Ветка свернута
|
||
)
|
||
);
|
||
// Пример пользовательской статической ветки (раскомментируйте и добавьте необходимое количество экземпляров)
|
||
//СтатическиеВетки.Вставить(ДеревоИнтерфейса.Строки.Добавить(), Новый Структура(
|
||
// "Имя,Использовать,Представление,СтрокаСортировки,КоличествоОтображаемыхЭлементов,Фильтровать,СортировкаПриОтображении,РазрешитьПеретаскивание,Автозапуск",
|
||
// "МойСборникКоманд", // Представление ветки в дереве
|
||
// Истина, // Использовать ли данную ветку
|
||
// "Мой сборник команд", // Представление ветки в дереве
|
||
// "МойСборникКоманд УБЫВ", // Строка сортировки статистической таблицы. Определяет, какие элементы выводятся
|
||
// 10, // Количество элементов, отображаемых в данной ветке
|
||
// Ложь, // Фильтровать ли ветку при непустой строке фильтра
|
||
// "", // не сортировать
|
||
// Истина, // Разрешить перетаскивание
|
||
// Ложь // Автозапуск команд в данной ветке при открытии обработки
|
||
// )
|
||
// );
|
||
//
|
||
|
||
|
||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
// ИНИЦИАЛИЗАЦИЯ ОБРАБОТКИ
|
||
|
||
|
||
КолонкиДерева = ДеревоИнтерфейса.Колонки;
|
||
Если КолонкиДерева.Найти("Представление") = Неопределено Тогда
|
||
КолонкиДерева.Добавить("Представление");
|
||
КолонкиДерева.Добавить("Имя");
|
||
КолонкиДерева.Добавить("Вид");
|
||
КолонкиДерева.Добавить("ИндексКартинки");
|
||
КолонкиДерева.Добавить("ПолноеИмяОбъекта");
|
||
КолонкиДерева.Добавить("КоличествоСтрок");
|
||
КолонкиДерева.Добавить("Порядок");
|
||
КонецЕсли;
|
||
|
||
КомандыПоиска = Новый Массив();
|
||
|
||
ПутьФайлаНастроек = ПолучитьПутьФайлаНастроек();
|
||
|
||
ВеткиМетаданных = Новый СписокЗначений;
|
||
ВеткиМетаданных.Добавить("Общие формы","ОбщиеФормы");
|
||
ВеткиМетаданных.Добавить("Интерфейсы","Интерфейсы");
|
||
ВеткиМетаданных.Добавить("Константы","Константы");
|
||
ВеткиМетаданных.Добавить("Справочники","Справочники");
|
||
ВеткиМетаданных.Добавить("Документы","Документы");
|
||
ВеткиМетаданных.Добавить("Журналы документов","ЖурналыДокументов");
|
||
ВеткиМетаданных.Добавить("Отчеты","Отчеты");
|
||
ВеткиМетаданных.Добавить("Обработки","Обработки");
|
||
ВеткиМетаданных.Добавить("Планы видов характеристик","ПланыВидовХарактеристик");
|
||
ВеткиМетаданных.Добавить("Регистры сведений","РегистрыСведений");
|
||
ВеткиМетаданных.Добавить("Регистры накопления","РегистрыНакопления");
|
||
ВеткиМетаданных.Добавить("Планы счетов","ПланыСчетов");
|
||
ВеткиМетаданных.Добавить("Планы видов расчета","ПланыВидовРасчета");
|
||
ВеткиМетаданных.Добавить("Регистры бухгалтерии","РегистрыБухгалтерии");
|
||
ВеткиМетаданных.Добавить("Регистры расчета","РегистрыРасчета");
|
||
ВеткиМетаданных.Добавить("Бизнес-процессы","БизнесПроцессы");
|
||
ВеткиМетаданных.Добавить("Задачи","Задачи");
|
||
ВеткиМетаданных.Добавить("Планы обмена","ПланыОбмена");
|
||
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени = Новый Соответствие;
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("ОбщиеФормы", "ОбщаяФорма");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("Интерфейсы","Интерфейс");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("Константы","Константа");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("Справочники","Справочник");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("Документы","Документ");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("ЖурналыДокументов","ЖурналДокументов");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("Отчеты","Отчет");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("Обработки","Обработка");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("ПланыВидовХарактеристик", "ПланВидовХарактеристик");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("РегистрыСведений","РегистрСведений");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("РегистрыНакопления","РегистрНакопления");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("ПланыСчетов","ПланСчетов");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("ПланыВидовРасчета","ПланВидовРасчета");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("РегистрыБухгалтерии","РегистрБухгалтерии");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("РегистрыРасчета","РегистрРасчета");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("БизнесПроцессы","БизнесПроцесс");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("Задачи","Задача");
|
||
СоответствиеВидовМетаданныхДляПоискаПолногоИмени.Вставить("ПланыОбмена","ПланОбмена");
|
||
|
||
ЕстьУниверсальныйОтчет = (Метаданные.Отчеты.Найти("УниверсальныйОтчет") <> Неопределено);
|
||
Есть_РС_СохраненныеНастройки = (Метаданные.РегистрыСведений.Найти("СохраненныеНастройки") <> Неопределено);
|
||
//Есть_СправочникОрганизаций = (Метаданные.Справочники.Найти("Организации") <> Неопределено);
|
||
ЕстьСправочникВнешнихОбработок = (Метаданные.Справочники.Найти("ВнешниеОбработки") <> Неопределено);
|
||
ИмяКорневойПодсистемы = "Конфигурация." + Метаданные.Имя;
|
||
|
||
Если Метаданные.ПараметрыСеанса.Найти("ТекущийПользователь") = Неопределено Тогда
|
||
мТекущийПользователь = Неопределено;
|
||
Иначе
|
||
Попытка
|
||
мТекущийПользователь = ПараметрыСеанса.ТекущийПользователь;
|
||
Исключение
|
||
КонецПопытки;
|
||
КонецЕсли;
|
||
|
||
СистемнаяИнформация = Новый СистемнаяИнформация;
|
||
ВерсияПлатфомы = Лев(СистемнаяИнформация.ВерсияПриложения,3);
|
||
Если Истина
|
||
И ПолнотекстовыйПоискРазмерПорции > 0 // Включен
|
||
И ВерсияПлатфомы >= "8.1" // и платформа позволяет
|
||
Тогда
|
||
Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Разрешить Тогда
|
||
мСписокПолнотекстовогоПоиска = ПолнотекстовыйПоиск.СоздатьСписок();
|
||
мСписокПолнотекстовогоПоиска.ПолучатьОписание = Ложь;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|