mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-16 20:54:11 +00:00
2196 lines
164 KiB
Plaintext
2196 lines
164 KiB
Plaintext
Перем RegExp;
|
||
Перем RegExp2;
|
||
|
||
Перем ИсполнительСкрытыхКомандСистемы;
|
||
Перем VBScript;
|
||
Перем ФайлРаспаковщикаZIP;
|
||
Перем мПлатформа;
|
||
|
||
Процедура ЗаполнитьСтрокуТипа(НоваяСтрока)
|
||
|
||
НоваяСтрока.БазовыйТип = ирОбщий.ПервыйФрагментЛкс(НоваяСтрока.Слово);
|
||
|
||
НоваяСтрока.ТипТипа = "Основной";
|
||
|
||
Если НоваяСтрока.ЯзыкПрограммы = 0 Тогда
|
||
МаркерПеречисления = "Перечисление";
|
||
|
||
Если Лев(НоваяСтрока.Слово, СтрДлина(МаркерПеречисления)) = МаркерПеречисления Тогда
|
||
ИмяСистемногоПеречисления = СтрЗаменить(НоваяСтрока.Слово, МаркерПеречисления, "");
|
||
|
||
Попытка
|
||
Если Строка(Вычислить(ИмяСистемногоПеречисления)) = "Перечисление" + ИмяСистемногоПеречисления Тогда
|
||
|
||
ДобавитьСвойствоГлобальногоКонтекста(НоваяСтрока, ИмяСистемногоПеречисления);
|
||
КонецЕсли;
|
||
|
||
Исключение
|
||
|
||
КонецПопытки;
|
||
КонецЕсли;
|
||
|
||
Если Ложь
|
||
Или Найти(НоваяСтрока.Слово, "<") > 0
|
||
Или Найти(НоваяСтрока.Слово, "ВнешняяОбработка") > 0
|
||
Или Найти(НоваяСтрока.Слово, "ВнешнийОтчет") > 0
|
||
Тогда
|
||
|
||
Представление = ирОбщий.ПредставлениеИзИдентификатораЛкс(НоваяСтрока.БазовыйТип);
|
||
Иначе
|
||
Представление = НоваяСтрока.БазовыйТип;
|
||
КонецЕсли;
|
||
Идентификатор = "";
|
||
|
||
Если Истина
|
||
|
||
И Найти(НоваяСтрока.Слово, "<") = 0
|
||
|
||
И Найти(НоваяСтрока.Слово, " ") = 0
|
||
И Найти(НоваяСтрока.Слово, "ВнешняяОбработка") = 0
|
||
И Найти(НоваяСтрока.Слово, "ВнешнийОтчет") = 0
|
||
|
||
Тогда
|
||
|
||
Попытка
|
||
// Обычные типы
|
||
ЗначениеТип = Тип(НоваяСтрока.Слово);
|
||
Идентификатор = ирОбщий.СтрокаМеждуМаркерамиЛкс("" + ЗначениеВСтрокуВнутр(ЗначениеТип), ",", "}", Ложь);
|
||
Исключение
|
||
//ирОбщий.СообщитьЛкс("Неверное имя типа - " + НоваяСтрока.Слово);
|
||
//Представление = "*";
|
||
ЗначениеТип = НоваяСтрока.Слово;
|
||
Если НоваяСтрока.ТипТипа = "Основной" Тогда
|
||
НоваяСтрока.ТипТипа = "Расширение";
|
||
КонецЕсли;
|
||
КонецПопытки;
|
||
Представление = Строка(ЗначениеТип);
|
||
|
||
КонецЕсли;
|
||
НоваяСтрока.ИД = Идентификатор;
|
||
|
||
НоваяСтрока.Представление = Представление;
|
||
Иначе // НоваяСтрока.ЯзыкПрограммы = 1
|
||
Если Ложь
|
||
|
||
Или НоваяСтрока.БазовыйТип = "Константа"
|
||
|
||
Или НоваяСтрока.БазовыйТип = "Константы"
|
||
|
||
Тогда
|
||
|
||
НоваяСтрока.ТипТипа = "Расширение";
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
RegExp.Global = Ложь;
|
||
RegExp.Pattern = "<[^>]+>|([^<>]* [^<>]*)";
|
||
Результат = RegExp.НайтиВхождения(НоваяСтрока.Слово);
|
||
Для Каждого Item Из Результат Цикл
|
||
Если Item.SubMatches(0) <> Неопределено Тогда
|
||
НоваяСтрока.ТипТипа = "Расширение";
|
||
Прервать;
|
||
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
НоваяСтрока.НСлово = НРег(НоваяСтрока.НСлово);
|
||
|
||
// Это другое расширение. Именно то, которое в документации имеется ввиду
|
||
Если ирОбщий.ПервыйФрагментЛкс(НоваяСтрока.Слово, " ") = "Расширение" Тогда
|
||
НоваяСтрокаРасширения = ТаблицаРасширений.Найти(НоваяСтрока.Слово, "Расширение");
|
||
Если НоваяСтрокаРасширения = Неопределено Тогда
|
||
НоваяСтрокаРасширения = ТаблицаРасширений.Добавить();
|
||
КонецЕсли;
|
||
Если Найти(НоваяСтрока.Слово, " тестируемого поля формы ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "ТестируемоеПолеФормы";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " поля формы ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "ПолеФормы";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " группы формы ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "ГруппаФормы";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " таблицы формы ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "ТаблицаФормы";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " декорации формы ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "ДекроацияФормы";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " табличного поля ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "ТабличноеПоле";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " колонки ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "КолонкаТабличногоПоля";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " поля ввода ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "ПолеВвода";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " формы клиентского приложения") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "ФормаКлиентскогоПриложения";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " управляемой формы") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "УправляемаяФорма";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " формы ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "Форма";
|
||
КонецЕсли;
|
||
НоваяСтрокаРасширения.Расширение = НоваяСтрока.Слово;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ДобавитьСвойствоГлобальногоКонтекста(Знач НоваяСтрока, Знач ИмяСвойства)
|
||
|
||
НоваяСтрока.ТипТипа = "Перечисление";
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы", ИмяСвойства, НоваяСтрока.ЯзыкПрограммы);
|
||
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
|
||
НоваяСтрокаТипа = ТаблицаОбщихТипов.Добавить();
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаТипа, НоваяСтрока);
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаТипа, СтруктураКлюча);
|
||
|
||
ЗаполнитьСтрокуТипа(НоваяСтрокаТипа);
|
||
НоваяСтрока.Представление = НоваяСтрока.БазовыйТип;
|
||
//НоваяСтрокаТипа.ПутьКОписанию = "";
|
||
|
||
КонецЕсли;
|
||
|
||
НоваяСтрокаКонтекста = ТаблицаКонтекстов.Добавить();
|
||
|
||
НоваяСтрокаКонтекста.ТипКонтекста = "Глобальный";
|
||
|
||
НоваяСтрокаКонтекста.Слово = ИмяСвойства;
|
||
|
||
НоваяСтрокаКонтекста.ТипЗначения = НоваяСтрока.Слово;
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаКонтекста, НоваяСтрока, "ЯзыкПрограммы,ПутьКОписанию,НомерВерсииПлатформы");
|
||
|
||
НоваяСтрокаКонтекста.ТипСлова = "Свойство";
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СкорректироватьКлючТипа(Структура)
|
||
|
||
|
||
Попытка
|
||
// Выполняется много раз!
|
||
|
||
Если Строка(Вычислить(Структура.Слово)) = "Перечисление" + Структура.Слово Тогда
|
||
|
||
Структура.Слово = "Перечисление" + Структура.Слово;
|
||
КонецЕсли;
|
||
|
||
Исключение
|
||
|
||
КонецПопытки;
|
||
|
||
|
||
|
||
КонецПроцедуры // СкорректироватьКлючТипа()
|
||
|
||
|
||
Функция ПолучитьПримитивныеТипыЛкс(Имена = Ложь) Экспорт
|
||
|
||
МассивИменТипов = Новый Массив;
|
||
МассивИменТипов.Добавить("Null");
|
||
МассивИменТипов.Добавить("Неопределено");
|
||
МассивИменТипов.Добавить("Число");
|
||
МассивИменТипов.Добавить("Строка");
|
||
МассивИменТипов.Добавить("Дата");
|
||
МассивИменТипов.Добавить("Булево");
|
||
МассивИменТипов.Добавить("Тип");
|
||
Если Имена Тогда
|
||
МассивТипов = МассивИменТипов;
|
||
Иначе
|
||
МассивТипов = Новый Массив;
|
||
Для Каждого ИмяТипа Из МассивИменТипов Цикл
|
||
МассивТипов.Добавить(Тип(ИмяТипа));
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Возврат МассивТипов;
|
||
|
||
КонецФункции // ЛксПолучитьПримитивныеТипы()
|
||
|
||
Процедура ЗаполнитьСтатическое()
|
||
|
||
ТаблицаИменЭлементовКоллекций.Очистить();
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Структура";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя ключа>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ФиксированнаяСтруктура";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя ключа>";
|
||
НоваяСтрока.ИмяОбщегоТипа = "ФиксированнаяСтруктура";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Рисунки";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя рисунка>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ВидыСубконто";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя вида субконто>";
|
||
|
||
// Тут не совсем прямо, т.к. у метаданного нет такой коллекции =(
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ВнешниеОбработки";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя внешней обработки>";
|
||
|
||
// Тут не совсем прямо, т.к. у метаданного нет такой коллекции =(
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ВнешниеОтчеты";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя внешнего отчета>";
|
||
|
||
// Тут не совсем прямо, т.к. у метаданного нет такой коллекции =(
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ТочкиМаршрута";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя точки маршрута бизнес-процесса>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Области";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя области>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ПризнакиУчетаСубконто";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя флага учета субконто>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Параметры";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя параметра>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "УсловноеОформление";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя элемента оформления>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ВидыСубконто";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Номер субконто>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Индексы";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя индекса>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Источники";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя источника>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Колонки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя колонки>";
|
||
|
||
//НоваяСтрока.ИмяОбщегоТипа = "СтрокаТаблицыЗначений"; // было закомментировано
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ОформленияЯчеек";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя колонки>";
|
||
НоваяСтрока.ИмяОбщегоТипа = "Ячейки";
|
||
|
||
// Заглушка
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Колонки";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя колонки списка>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Поля";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя поля>";
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Свойства";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя свойства>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Методы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя метода>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ОбщиеМодули";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя общего модуля>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ТабличныеЧасти";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя табличной части>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Реквизиты";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя реквизита>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Ресурсы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя ресурса>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Измерения";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя измерения>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "РеквизитыАдресации";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя реквизита адресации>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ЗначенияПеречисления";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя значения перечисления>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Графы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя графы журнала>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Перерасчеты";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя перерасчета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Формы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя формы>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Стили";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя стиля>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ЭлементыСтиля";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя элемента стиля>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Отбор";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя элемента отбора>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "НастройкаОформления";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя настройки>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Движения";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя регистра>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Картинки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя картинки>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "РегистрыСведений";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя регистра сведений>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "РегистрыРасчета";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя регистра расчета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "РегистрыНакопления";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя регистра накопления>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "РегистрыБухгалтерии";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя регистра бухгалтерии>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Справочники";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя справочника>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Документы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя документа>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПланыВидовХарактеристик";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя плана видов характеристик>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПланыВидовРасчета";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя плана видов расчета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПланыСчетов";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя плана счетов>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПризнакиУчета";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя признака учета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПланыОбмена";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя плана обмена>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Константы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя константы>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "БизнесПроцессы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя бизнес-процесса>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Задачи";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя задачи>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Обработки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя обработки>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Отчеты";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя отчета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ЖурналыДокументов";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя журнала документов>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Перечисления";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя перечисления>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Операции";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя операции>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Макеты";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя макета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Последовательности";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя последовательности>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "КритерииОтбора";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя критерия отбора>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Интерфейсы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя интерфейса>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ОбщиеМакеты";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя общего макета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ОбщиеФормы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя общей формы>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "НумераторыДокументов";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя нумератора документов>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "WebСервисы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя WebСервиса>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "WSСсылки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя WS-Ссылки>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Подсистемы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя подсистемы>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Роли";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя роли>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПараметрыСеанса";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя параметра сеанса>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПакетыXDTO";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя ПакетаXDTO>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ОбщиеКартинки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя общей картинки>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "РегламентныеЗадания";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя регламентного задания>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПодпискиНаСобытия";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя подписки на событие>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Языки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя языка>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Предопределенные";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя предопределенного элемента справочника>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Предопределенные";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя предопределенного вида характеристик>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Предопределенные";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя предопределенного счета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Предопределенные";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя предопределенного объекта>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ЭлементыФормы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя элемента управления>";
|
||
НоваяСтрока.ИмяОбщегоТипа = "ЭлементыФормы";
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Элементы";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя элемента управления>";
|
||
НоваяСтрока.ИмяОбщегоТипа = "ВсеЭлементыФормы";
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Страницы";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя страницы>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Кнопки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя кнопки>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ВстроенныеТаблицы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя встроенной таблицы>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "<Имя коллекции метаданных>";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя объекта описания метаданного>";
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "<Имя общего модуля>"; // Несуществующее
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя процедуры или функции>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "События";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя события>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ВнешниеИсточникиДанных";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя внешнего источника>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Таблицы";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя таблицы внешнего источника данных>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ОбщиеРеквизиты";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя общего реквизита>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Таблицы";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя таблицы>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ТаблицыИзмерений";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя таблицы измерения>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Кубы";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя куба>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "СтандартныеРеквизиты";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя стандартного реквизита>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "<Коллекция>";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя элемента>";
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ЗаполнитьВсе()
|
||
|
||
#Если Сервер И Не Сервер Тогда
|
||
мПлатформа = Обработки.ирПлатформа.Создать();
|
||
#КонецЕсли
|
||
СинтаксПомощник = Обработки.ирСинтаксПомощник.Создать();
|
||
шТип = СинтаксПомощник.шТип;
|
||
шКонецТегаКлюч = СинтаксПомощник.шКонецТегаКлюч;
|
||
шТег = СинтаксПомощник.шТег;
|
||
шТегКлюч = СинтаксПомощник.шТегКлюч;
|
||
шТегНеКлюч = СинтаксПомощник.шТегНеКлюч;
|
||
ЭтаФорма.Модифицированность = Истина;
|
||
//Если СловаЯзыкаЗапросов.Количество() = 0 Тогда
|
||
// Предупреждение("Сначала необходимо загрузить данные ручного ввода");
|
||
// Возврат;
|
||
//КонецЕсли;
|
||
ТаблицаКонтекстов.Очистить();
|
||
|
||
ТаблицаШаблоновКонтекстов.Очистить();
|
||
|
||
ТаблицаОбщихТипов.Очистить();
|
||
ТаблицаПараметров.Очистить();
|
||
ирОбщий.ДобавитьИндексВТаблицуЛкс(ТаблицаОбщихТипов, "БазовыйТип");
|
||
ирОбщий.ДобавитьИндексВТаблицуЛкс(ТаблицаОбщихТипов, "Слово, ЯзыкПрограммы");
|
||
|
||
|
||
ЗаполнитьСтатическое();
|
||
|
||
|
||
// Добавим функции языка запросов
|
||
|
||
//Список = Новый СписокЗначений;
|
||
|
||
//Список.Добавить("СУММА", "Число");
|
||
|
||
//Список.Добавить("МАКСИМУМ", "Произвольный");
|
||
|
||
//Список.Добавить("МИНИМУМ", "Произвольный");
|
||
|
||
//Список.Добавить("ЗНАЧЕНИЕ", "Произвольный");
|
||
|
||
//Список.Добавить("СРЕДНЕЕ", "Число");
|
||
|
||
//Список.Добавить("КОЛИЧЕСТВО", "Число");
|
||
|
||
//Список.Добавить("ВЫРАЗИТЬ", "Произвольный");
|
||
|
||
//Список.Добавить("ЕСТЬNULL", "Произвольный");
|
||
|
||
//Список.Добавить("ПРЕДСТАВЛЕНИЕ", "Строка");
|
||
|
||
//Список.Добавить("ПРЕДСТАВЛЕНИЕССЫЛКИ", "Строка");
|
||
|
||
//Список.Добавить("ПОДСТРОКА", "Строка");
|
||
|
||
//Список.Добавить("РАЗНОСТЬДАТ", "Число");
|
||
|
||
//Список.Добавить("ДАТАВРЕМЯ", "Дата");
|
||
|
||
//Список.Добавить("НАЧАЛОПЕРИОДА", "Дата");
|
||
|
||
//Список.Добавить("КОНЕЦПЕРИОДА", "Дата");
|
||
|
||
//Список.Добавить("ДЕНЬНЕДЕЛИ", "Число");
|
||
|
||
//Список.Добавить("ЧАС", "Число");
|
||
|
||
//Список.Добавить("МИНУТА", "Число");
|
||
|
||
//Список.Добавить("СЕКУНДА", "Число");
|
||
|
||
//Список.Добавить("МЕСЯЦ", "Число");
|
||
|
||
//Список.Добавить("ДЕНЬГОДА", "Число");
|
||
|
||
//Список.Добавить("НЕДЕЛЯ", "Число");
|
||
|
||
//Список.Добавить("ДЕНЬНЕДЕЛИ", "Число");
|
||
|
||
//Список.Добавить("ГОД", "Число");
|
||
|
||
//Список.Добавить("КВАРТАЛ", "Число");
|
||
//Список.Добавить("ДОБАВИТЬКДАТЕ", "Дата");
|
||
|
||
|
||
//// Добавим ключевые слова встроенного языка
|
||
//Список = Новый Массив;
|
||
|
||
//Список.Добавить("Не");
|
||
|
||
//Список.Добавить("И");
|
||
|
||
//Список.Добавить("Или");
|
||
|
||
//Список.Добавить("По");
|
||
|
||
//Список.Добавить("Экспорт");
|
||
|
||
//Список.Добавить("Перем");
|
||
|
||
//Список.Добавить("Процедура");
|
||
|
||
//Список.Добавить("КонецПроцедуры");
|
||
|
||
//Список.Добавить("Функция");
|
||
|
||
//Список.Добавить("КонецФункции");
|
||
|
||
//Список.Добавить("Возврат");
|
||
|
||
//Список.Добавить("Перейти");
|
||
//Список.Добавить("Для");
|
||
|
||
//Список.Добавить("Каждого");
|
||
|
||
//Список.Добавить("Из");
|
||
|
||
//Список.Добавить("Цикл");
|
||
|
||
//Список.Добавить("КонецЦикла");
|
||
|
||
//Список.Добавить("Пока");
|
||
|
||
//Список.Добавить("Прервать");
|
||
|
||
//Список.Добавить("Продолжить");
|
||
|
||
//Список.Добавить("Если");
|
||
|
||
//Список.Добавить("Тогда");
|
||
|
||
//Список.Добавить("Иначе");
|
||
|
||
//Список.Добавить("ИначеЕсли");
|
||
|
||
//Список.Добавить("КонецЕсли");
|
||
|
||
//Список.Добавить("Попытка");
|
||
|
||
//Список.Добавить("Исключение");
|
||
|
||
//Список.Добавить("КонецПопытки");
|
||
|
||
//Список.Добавить("ВызватьИсключение");
|
||
|
||
//Список.Добавить("Выполнить");
|
||
//Список.Добавить("Новый");
|
||
|
||
|
||
//Для Каждого КлючевоеСлово Из Список Цикл
|
||
|
||
// НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
|
||
// НоваяСтрока.Слово = КлючевоеСлово;
|
||
|
||
// НоваяСтрока.ТипКонтекста = "Общее";
|
||
|
||
// НоваяСтрока.ТипСлова = "Конструкция";
|
||
|
||
//КонецЦикла;
|
||
|
||
|
||
|
||
// Добавим специальные шаблоны
|
||
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
|
||
НоваяСтрока.Слово = "<Имя свойства>";
|
||
|
||
НоваяСтрока.ТипКонтекста = "COMОбъект";
|
||
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
|
||
НоваяСтрока.Слово = "<Имя метода>";
|
||
|
||
НоваяСтрока.ТипКонтекста = "COMОбъект";
|
||
|
||
НоваяСтрока.ТипСлова = "Метод";
|
||
|
||
|
||
// А это просто не сочил важным добавить в синтакс-помощник
|
||
|
||
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
НоваяСтрока.Слово = "<Имя страницы>";
|
||
НоваяСтрока.ТипКонтекста = "СтраницыПанели";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "СтраницаПанели";
|
||
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
НоваяСтрока.Слово = "<Имя поля>";
|
||
НоваяСтрока.ТипКонтекста = "ПоляНастройки";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "ПолеНастройки";
|
||
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
НоваяСтрока.Слово = "<Имя элемента>";
|
||
НоваяСтрока.ТипКонтекста = "НаборыДанныхСхемыКомпоновкиДанных";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "НаборДанныхЗапросСхемыКомпоновкиДанных, НаборДанныхОбъектСхемыКомпоновкиДанных, НаборДанныхОбъединениеСхемыКомпоновкиДанных";
|
||
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
НоваяСтрока.Слово = "<Имя элемента>";
|
||
НоваяСтрока.ТипКонтекста = "ПараметрыСхемыКомпоновкиДанных";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "ПараметрСхемыКомпоновкиДанных";
|
||
|
||
Для ЯзыкПрограммы = 1 По 2 Цикл
|
||
СписокПараметров = Новый Массив;
|
||
СписокПараметров.Добавить("Год");
|
||
СписокПараметров.Добавить("Месяц");
|
||
СписокПараметров.Добавить("День");
|
||
СписокПараметров.Добавить("Час");
|
||
СписокПараметров.Добавить("Минута");
|
||
СписокПараметров.Добавить("Секунда");
|
||
Для Счетчик = 1 По СписокПараметров.Количество() Цикл
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
НоваяСтрокаПараметра.ЯзыкПрограммы = ЯзыкПрограммы;
|
||
НоваяСтрокаПараметра.ТипКонтекста = "Глобальный";
|
||
Если ЯзыкПрограммы = 1 Тогда
|
||
НоваяСтрокаПараметра.Слово = "ДАТАВРЕМЯ";
|
||
Иначе
|
||
НоваяСтрокаПараметра.Слово = "ДатаВремя";
|
||
КонецЕсли;
|
||
НоваяСтрокаПараметра.Номер = Счетчик;
|
||
НоваяСтрокаПараметра.Параметр = СписокПараметров[Счетчик - 1];
|
||
КонецЦикла;
|
||
|
||
СписокПараметров = Новый Массив;
|
||
СписокПараметров.Добавить("ИсходнаяДата");
|
||
СписокПараметров.Добавить("ЕдиницаИзмерения");
|
||
СписокПараметров.Добавить("КоличествоЕдиниц");
|
||
Для Счетчик = 1 По СписокПараметров.Количество() Цикл
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
НоваяСтрокаПараметра.ЯзыкПрограммы = ЯзыкПрограммы;
|
||
НоваяСтрокаПараметра.ТипКонтекста = "Глобальный";
|
||
Если ЯзыкПрограммы = 1 Тогда
|
||
НоваяСтрокаПараметра.Слово = "ДОБАВИТЬКДАТЕ";
|
||
Иначе
|
||
НоваяСтрокаПараметра.Слово = "ДобавитьКДате";
|
||
КонецЕсли;
|
||
НоваяСтрокаПараметра.Номер = Счетчик;
|
||
НоваяСтрокаПараметра.Параметр = СписокПараметров[Счетчик - 1];
|
||
КонецЦикла;
|
||
|
||
СписокПараметров = Новый Массив;
|
||
СписокПараметров.Добавить("ВычитаемаяДата");
|
||
СписокПараметров.Добавить("ИсходнаяДата");
|
||
СписокПараметров.Добавить("ЕдиницаИзмерения");
|
||
Для Счетчик = 1 По СписокПараметров.Количество() Цикл
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
НоваяСтрокаПараметра.ЯзыкПрограммы = ЯзыкПрограммы;
|
||
НоваяСтрокаПараметра.ТипКонтекста = "Глобальный";
|
||
Если ЯзыкПрограммы = 1 Тогда
|
||
НоваяСтрокаПараметра.Слово = "РАЗНОСТЬДАТ";
|
||
Иначе
|
||
НоваяСтрокаПараметра.Слово = "РазностьДат";
|
||
КонецЕсли;
|
||
НоваяСтрокаПараметра.Номер = Счетчик;
|
||
НоваяСтрокаПараметра.Параметр = СписокПараметров[Счетчик - 1];
|
||
КонецЦикла;
|
||
|
||
СписокПараметров = Новый Массив;
|
||
СписокПараметров.Добавить("Строка");
|
||
СписокПараметров.Добавить("ПерваяПозиция");
|
||
СписокПараметров.Добавить("ПоследняяПозиция");
|
||
Для Счетчик = 1 По СписокПараметров.Количество() Цикл
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
НоваяСтрокаПараметра.ЯзыкПрограммы = ЯзыкПрограммы;
|
||
НоваяСтрокаПараметра.ТипКонтекста = "Глобальный";
|
||
Если ЯзыкПрограммы = 1 Тогда
|
||
НоваяСтрокаПараметра.Слово = "ПОДСТРОКА";
|
||
Иначе
|
||
НоваяСтрокаПараметра.Слово = "Подстрока";
|
||
КонецЕсли;
|
||
НоваяСтрокаПараметра.Номер = Счетчик;
|
||
НоваяСтрокаПараметра.Параметр = СписокПараметров[Счетчик - 1];
|
||
КонецЦикла;
|
||
|
||
СписокПараметров = Новый Массив;
|
||
СписокПараметров.Добавить("Произвольный");
|
||
СписокПараметров.Добавить("ЗаменаNULL");
|
||
Для Счетчик = 1 По СписокПараметров.Количество() Цикл
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
НоваяСтрокаПараметра.ЯзыкПрограммы = ЯзыкПрограммы;
|
||
НоваяСтрокаПараметра.ТипКонтекста = "Глобальный";
|
||
Если ЯзыкПрограммы = 1 Тогда
|
||
НоваяСтрокаПараметра.Слово = "ЕСТЬNULL";
|
||
Иначе
|
||
НоваяСтрокаПараметра.Слово = "ЕстьNull";
|
||
КонецЕсли;
|
||
НоваяСтрокаПараметра.Номер = Счетчик;
|
||
НоваяСтрокаПараметра.Параметр = СписокПараметров[Счетчик - 1];
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
ТаблицаКорневыхОбъектовКонфигурации = ирКэш.ТипыМетаОбъектов(Ложь, Ложь);
|
||
|
||
РабочийКаталог = ПолучитьИмяВременногоФайла();
|
||
СоздатьКаталог(РабочийКаталог);
|
||
ФайлРаспаковщикаZIP = мПлатформа.ПолучитьФайлРаспаковщикаZIP(Истина);
|
||
|
||
// Синтакс-помощник для языка запросов
|
||
МаркерЯзыкаЗапросов = "//shquery_ru";
|
||
Для Каждого СтрокаСлова Из СловаЯзыкаЗапросов Цикл
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаСлова);
|
||
НоваяСтрока.Слово = СтрокаСлова.СловоЗапроса;
|
||
НоваяСтрока.ТипКонтекста = "Глобальный";
|
||
Если Ложь
|
||
Или Найти(НоваяСтрока.ПутьКОписанию, МаркерЯзыкаЗапросов) = 1
|
||
Или СтрокаСлова.ПутьКОписанию = "//dcsui_ru/SKD_CharacteristicTypes" // Антибаг платформы http://partners.v8.1c.ru/forum/thread.jsp?id=997975#997975
|
||
Тогда
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
Иначе
|
||
НоваяСтрока.ЯзыкПрограммы = 2;
|
||
КонецЕсли;
|
||
Если НРег(НоваяСтрока.ТипСлова) = НРег("Метод") Тогда
|
||
НайденныеСтроки = ТаблицаПараметров.НайтиСтроки(Новый Структура("Слово, ЯзыкПрограммы", НоваяСтрока.Слово, НоваяСтрока.ЯзыкПрограммы));
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаПараметра, НоваяСтрока, "ТипКонтекста, Слово, ЯзыкПрограммы");
|
||
НоваяСтрокаПараметра.Параметр = "";
|
||
НоваяСтрокаПараметра.Номер = 1;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
// Синтакс-помощник для языка выражений компоновки
|
||
ИмяКниги = "dcsui_ru";
|
||
ФайлАрхиваДанных = СинтаксПомощник.АрхивСинтаксПомощникаПоИмени(, ИмяКниги);
|
||
ирОбщий.ЗапуститьСкрытоеПриложениеИДождатьсяЗавершенияЛкс(ФайлРаспаковщикаZIP.Имя + " -o " + ФайлАрхиваДанных.ПолноеИмя + " -d " + РабочийКаталог);
|
||
ИменаФайлов = Новый Структура;
|
||
ИменаФайлов.Вставить("SKD_Functions", "Метод");
|
||
ИменаФайлов.Вставить("SKD_AgregOperation", "Метод");
|
||
Хтмл = Новый COMОбъект("HTMLFile");
|
||
ТекстовыйДокумент = Новый ТекстовыйДокумент;
|
||
// {ОписаниеРегулярногоВыражения.Начало} конструктор из подсистемы "Инструменты разработчика" (http://devtool1c.ucoz.ru)
|
||
// Перем шИмя, ИмяПараметра, ТипПараметра, ПараметрФункции, ИмяФункции, ФункцияСКД;
|
||
// {Шаблон.Начало}
|
||
// + <шИмя> = [_ЁА-ЯA-Z][_ЁА-ЯA-Z0-9]*
|
||
// + <ИмяПараметра> = <шИмя>
|
||
// + <ТипПараметра> = [^<]+
|
||
// + <ПараметрФункции> = <LI[^>]*>(?:\s*<DIV[^<]*>)?\s*<STRONG[^>]*>(<ИмяПараметра>)\s*</STRONG>[^<_ЁА-Я]+(?:Тип[^<_ЁА-Я]*<STRONG[^>]*>(<ТипПараметра>)</STRONG>)?
|
||
// + <ИмяФункции> = <шИмя>
|
||
// + <ФункцияСКД> = <H2[^>]*>\s*<a[^>]*?>\s*(?:</a>\s*)?(<ИмяФункции>)[^$]*?(?:Параметр(?:ы)?:[^$:]*?(?:<ПараметрФункции>[^$]*?)+?(?:[^$:]*?)?)?(?:$|(?=<H2))
|
||
// {Шаблон.Конец}
|
||
шИмя = "[_ЁА-ЯA-Z][_ЁА-ЯA-Z0-9]*";
|
||
ИмяПараметра = "" + шИмя + "";
|
||
ТипПараметра = "[^<]+";
|
||
ПараметрФункции = "<LI[^>]*>(?:\s*<DIV[^<]*>)?\s*<STRONG[^>]*>(" + ИмяПараметра + ")\s*</STRONG>[^<_ЁА-Я]+(?:Тип[^<_ЁА-Я]*<STRONG[^>]*>(" + ТипПараметра + ")</STRONG>)?";
|
||
ИмяФункции = "" + шИмя + "";
|
||
ФункцияСКД = "<H2[^>]*>\s*<a[^>]*?>\s*(?:</a>\s*)?(" + ИмяФункции + ")[^$]*?(?:Параметр(?:ы)?:[^$:]*?(?:" + ПараметрФункции + "[^$]*?)+?(?:[^$:]*?)?)?(?:$|(?=<H2))";
|
||
// {ОписаниеРегулярногоВыражения.Конец}
|
||
RegExp.Global = Истина;
|
||
RegExp.Multiline = Ложь;
|
||
RegExp.Pattern = ФункцияСКД;
|
||
RegExp.IgnoreCase = Истина;
|
||
RegExpВложенный = ирОбщий.НовыйВычислительРегВыражений();
|
||
RegExpВложенный.Global = Истина;
|
||
RegExpВложенный.Multiline = Ложь;
|
||
RegExpВложенный.IgnoreCase = Истина;
|
||
RegExpВложенный.Pattern = ПараметрФункции;
|
||
Для Каждого КлючИЗначение Из ИменаФайлов Цикл
|
||
ИмяФайлаСтраницы = КлючИЗначение.Ключ;
|
||
ТекстовыйДокумент.Прочитать(РабочийКаталог + "\" + ИмяФайлаСтраницы);
|
||
Хтмл.open("text/html");
|
||
Хтмл.write(ТекстовыйДокумент.ПолучитьТекст());
|
||
Хтмл.close();
|
||
ТегиСсылок = Хтмл.GetElementsByTagName("a");
|
||
ИменаПолейКлюча = "ТипКонтекста, Слово, ЯзыкПрограммы";
|
||
КлючПоиска = Новый Структура(ИменаПолейКлюча);
|
||
Для Каждого ТегСсылки Из ТегиСсылок Цикл
|
||
МассивФрагментов = ирОбщий.СтрРазделитьЛкс(ТегСсылки.href, "#");
|
||
Если МассивФрагментов[0] = "about:blank" Тогда
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "Глобальный";
|
||
НоваяСтрока.ЯзыкПрограммы = 2;
|
||
НоваяСтрока.ТипСлова = КлючИЗначение.Значение;
|
||
НоваяСтрока.Слово = ТегСсылки.textContent;
|
||
НоваяСтрока.ПутьКОписанию = "//" + ИмяКниги + "/" + ИмяФайлаСтраницы + "#" + МассивФрагментов[1];
|
||
Если НРег(НоваяСтрока.ТипСлова) = НРег("Метод") Тогда
|
||
ЗаполнитьЗначенияСвойств(КлючПоиска, НоваяСтрока);
|
||
Если ТаблицаПараметров.НайтиСтроки(КлючПоиска).Количество() = 0 Тогда // на предыдущих проходах цикла могли быть дубли
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаПараметра, КлючПоиска);
|
||
НоваяСтрокаПараметра.Параметр = "";
|
||
НоваяСтрокаПараметра.Номер = 1;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Вхождения = RegExp.НайтиВхождения(ТекстовыйДокумент.ПолучитьТекст());
|
||
Для каждого Вхождение Из Вхождения Цикл
|
||
ИмяФункции = Вхождение.SubMatches(0);
|
||
ВложенныеВхождения = RegExpВложенный.НайтиВхождения(Вхождение.Value);
|
||
НомерПараметра = 1;
|
||
Для каждого ВложенноеВхождение Из ВложенныеВхождения Цикл
|
||
ИмяПараметра = ВложенноеВхождение.SubMatches(0);
|
||
ТипЗначенияПараметра = ВложенноеВхождение.SubMatches(1);
|
||
КлючПоиска = Новый Структура("ТипКонтекста, Слово, ЯзыкПрограммы, Номер", "Глобальный", ИмяФункции, 2, НомерПараметра);
|
||
НайденныеПараметры = ТаблицаПараметров.НайтиСтроки(КлючПоиска);
|
||
Если НайденныеПараметры.Количество() = 0 Тогда
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаПараметра, КлючПоиска);
|
||
Иначе
|
||
НоваяСтрокаПараметра = НайденныеПараметры[0];
|
||
КонецЕсли;
|
||
НоваяСтрокаПараметра.Параметр = ИмяПараметра;
|
||
НоваяСтрокаПараметра.ТипЗначения = ТипЗначенияПараметра;
|
||
НомерПараметра = НомерПараметра + 1;
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
|
||
// Описание тернарного оператора (?) встроенного языка
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "Глобальный";
|
||
НоваяСтрока.ЯзыкПрограммы = 0;
|
||
НоваяСтрока.ТипСлова = "Метод";
|
||
НоваяСтрока.Слово = "?";
|
||
НоваяСтрока.ПутьКОписанию = "//shlang_ru/root_Quest";
|
||
НоваяСтрока.ТипЗначения = "Произвольный";
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаПараметра, НоваяСтрока, "ТипКонтекста, Слово, ЯзыкПрограммы");
|
||
НоваяСтрокаПараметра.Параметр = "Логическое выражение";
|
||
НоваяСтрокаПараметра.Номер = 1;
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаПараметра, НоваяСтрока, "ТипКонтекста, Слово, ЯзыкПрограммы");
|
||
НоваяСтрокаПараметра.Параметр = "Выражение 1";
|
||
НоваяСтрокаПараметра.Номер = 2;
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаПараметра, НоваяСтрока, "ТипКонтекста, Слово, ЯзыкПрограммы");
|
||
НоваяСтрокаПараметра.Параметр = "Выражение 2";
|
||
НоваяСтрокаПараметра.Номер = 3;
|
||
|
||
ФайлАрхиваСодержания = СинтаксПомощник.АрхивСинтаксПомощникаПоИмени(1, "shcntx_ru");
|
||
ирОбщий.ЗапуститьСкрытоеПриложениеИДождатьсяЗавершенияЛкс(ФайлРаспаковщикаZIP.Имя + " -o " + ФайлАрхиваСодержания.ПолноеИмя + " -d " + РабочийКаталог);
|
||
//Shell.Run( + " -o " + ФайлСодержания.ПолноеИмя + " + -d " + РабочийКаталог + "PackBlock", 0, Истина);
|
||
МассивФайлов = НайтиФайлы(РабочийКаталог, "*.*");
|
||
ФайлИндекса = МассивФайлов[0];
|
||
Текст = Новый ТекстовыйДокумент;
|
||
Текст.Прочитать(ФайлИндекса.ПолноеИмя);
|
||
ИндексОписания = Текст.ПолучитьТекст();
|
||
|
||
ФайлАрхиваДанных = СинтаксПомощник.АрхивСинтаксПомощникаПоИмени(, "shcntx_ru");
|
||
ирОбщий.ЗапуститьСкрытоеПриложениеИДождатьсяЗавершенияЛкс(ФайлРаспаковщикаZIP.Имя + " -o " + ФайлАрхиваДанных.ПолноеИмя + " -d " + РабочийКаталог);
|
||
ТипыКонтекстовПутей = Новый Соответствие;
|
||
RegExp.IgnoreCase = Истина;
|
||
|
||
RegExp.Multiline = Истина;
|
||
RegExp.Global = Истина;
|
||
|
||
RegExp.Pattern = "((""ru""\,""([^""]+)""[^}]*}[^{]*{[^{}]*})|({""#"",""([^""]*)""}))[^}]*},""([^""]+)""";
|
||
|
||
Результат = RegExp.НайтиВхождения(ИндексОписания);
|
||
Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(Результат.Количество(), "Обработка синтакс-помощника");
|
||
Для Каждого Item Из Результат Цикл
|
||
ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
|
||
|
||
Если Item.SubMatches(4) <> Неопределено Тогда
|
||
НовоеСлово = Item.SubMatches(4);
|
||
Иначе
|
||
НовоеСлово = Item.SubMatches(2);
|
||
КонецЕсли;
|
||
ПутьКОписанию = Item.SubMatches(5);
|
||
|
||
НРегПуть = НРег(ПутьКОписанию);
|
||
|
||
ПутьКОписаниюКонтекста = "";
|
||
|
||
ТипЭлементаКоллекции = "";
|
||
|
||
ТипЗначения = "";
|
||
СтрокаВерсииПлатформы = "";
|
||
НомерВерсииПлатформы = 0;
|
||
ЯзыкПрограммы = ?(Найти(НРегПуть, "/tables/") > 0, 1, 0);
|
||
|
||
Если ЯзыкПрограммы = 1 Тогда
|
||
|
||
ТипСлова = "Таблица";
|
||
|
||
Иначе
|
||
|
||
ТипСлова = "Свойство";
|
||
|
||
КонецЕсли;
|
||
|
||
Если Найти(НРегПуть, "/methods/") > 0 Тогда
|
||
|
||
ТипСлова = "Метод";
|
||
ПутьКОписаниюКонтекста = Лев(ПутьКОписанию, Найти(НРегПуть, "/methods/") - 1) + ".html";
|
||
Если Найти(НовоеСлово, "#") > 0 Тогда
|
||
// Почему то в 8.3.19 правильный элемент имеет имя ВыгрузитьЖурналРегистрации#&^@^%&*^#1 https://www.hostedredmine.com/issues/932670
|
||
НовоеСлово = ирОбщий.ПервыйФрагментЛкс(НовоеСлово, "#");
|
||
КонецЕсли;
|
||
ИначеЕсли Найти(НРегПуть, "/properties/") > 0 Тогда
|
||
|
||
ПутьКОписаниюКонтекста = Лев(ПутьКОписанию, Найти(НРегПуть, "/properties/") - 1) + ".html";
|
||
|
||
ИначеЕсли Найти(НРегПуть, "/events/") > 0 Тогда
|
||
|
||
ТипСлова = "Событие";
|
||
|
||
ПутьКОписаниюКонтекста = Лев(ПутьКОписанию, Найти(НРегПуть, "/events/") - 1) + ".html";
|
||
|
||
ИначеЕсли Найти(НРегПуть, "/fields/") > 0 Тогда
|
||
|
||
ТипСлова = "Поле";
|
||
|
||
ПутьКОписаниюКонтекста = Лев(ПутьКОписанию, Найти(НРегПуть, "/fields/") - 1) + ".html";
|
||
|
||
ИначеЕсли Найти(НРегПуть, "/ctors/") > 0 Тогда
|
||
|
||
ТипСлова = "Конструктор";
|
||
|
||
ПутьКОписаниюКонтекста = Лев(ПутьКОписанию, Найти(НРегПуть, "/ctors/") - 1) + ".html";
|
||
|
||
ИначеЕсли Найти(НРегПуть, "/params/") > 0 Тогда
|
||
|
||
ТипСлова = "Параметр";
|
||
|
||
ПутьКОписаниюКонтекста = Лев(ПутьКОписанию, Найти(НРегПуть, "/params/") - 1) + ".html";
|
||
ИначеЕсли Найти(НРегПуть, "/formparams/") > 0 Тогда
|
||
ТипСлова = "Параметр";
|
||
ПутьКОписаниюКонтекста = Лев(ПутьКОписанию, Найти(НРегПуть, "/formparams/") - 1) + ".html";
|
||
Иначе
|
||
//ПутьКОписаниюКонтекста = ПутьКОписанию; // тогда в качестве собственного свойства будет добавляться сам тип котнекста
|
||
Пустышка = 0;
|
||
|
||
КонецЕсли;
|
||
Если Истина
|
||
И ЯзыкПрограммы = 0
|
||
И Найти(НовоеСлово, " ") > 0
|
||
И ТипСлова = "Метод"
|
||
Тогда
|
||
// http://www.hostedredmine.com/issues/885173
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Если ПутьКОписанию = "/objects/Global context/methods/catalog3403/UnloadEventLog2325.html" Тогда
|
||
// Вредный дубль метода ВыгрузитьЖурналРегистрации() https://www.hostedredmine.com/issues/932670
|
||
Продолжить;
|
||
КонецЕсли;
|
||
ФайлОписания = Новый Файл(РабочийКаталог + ПутьКОписанию);
|
||
Попытка
|
||
Текст.Прочитать(ФайлОписания.ПолноеИмя);
|
||
ТекстПрочитан = Истина;
|
||
Исключение
|
||
ТекстПрочитан = Ложь;
|
||
КонецПопытки;
|
||
|
||
Если ТекстПрочитан Тогда
|
||
|
||
Описание = Текст.ПолучитьТекст();
|
||
|
||
Если Найти(НРегПуть, "/tables/") > 0 Тогда
|
||
|
||
RegExp.Global = Ложь;
|
||
|
||
RegExp.Pattern = "Синтаксис" + шТегНеКлюч + "(([А-Я_A-Z0-9\-\s\:]+)(\.(<[^&]+>|[А-Я_A-Z0-9\-\s\:]+))*)";
|
||
|
||
Результат = RegExp.НайтиВхождения(Описание);
|
||
|
||
Если Результат.Количество() > 0 Тогда
|
||
|
||
НовоеСлово = СинтаксПомощник.ИзвлечьИзФрагментаHTMLОбычныйТекст(Результат[0].SubMatches(0));
|
||
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если ТипСлова = "Конструктор" Тогда
|
||
ТипЗначения = "";
|
||
Иначе
|
||
RegExp.Global = Ложь;
|
||
RegExp.Pattern = "Тип:" + шТегНеКлюч + "?((?:" + шТип + ")+)";
|
||
СмещениеИндекса = 0;
|
||
Если ТипСлова = "Метод" Тогда
|
||
RegExp.Pattern = "Возвращаемое значение:" + шТег + "?(?:" + RegExp.Pattern + ")?";
|
||
СмещениеИндекса = 1;
|
||
КонецЕсли;
|
||
Результат = RegExp.НайтиВхождения(Описание);
|
||
Если Результат.Количество() > 0 Тогда
|
||
RegExp2.Global = Истина;
|
||
RegExp2.Pattern = шТип;
|
||
Результат2 = RegExp2.НайтиВхождения(Результат[0].SubMatches(0));
|
||
СтрокаТипаЗначения = "";
|
||
Для Каждого Вхождение2 Из Результат2 Цикл
|
||
СтрокаТипаЗначения = СтрокаТипаЗначения + ", " + СокрЛП(Вхождение2.SubMatches(0));
|
||
КонецЦикла;
|
||
ТипЗначения = СинтаксПомощник.ИзвлечьИзФрагментаHTMLОбычныйТекст(Сред(СтрокаТипаЗначения, 3));
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
|
||
|
||
RegExp.Global = Ложь;
|
||
|
||
RegExp.Pattern = "Элементы\x20коллекции:" + шТегНеКлюч + "?((?:" + шТип + ")+)";
|
||
|
||
Результат = RegExp.НайтиВхождения(Описание);
|
||
|
||
ТипЭлементаКоллекции = "";
|
||
|
||
Если Результат.Количество() > 0 Тогда
|
||
|
||
RegExp2.Global = Истина;
|
||
|
||
RegExp2.Pattern = шТип;
|
||
|
||
Результат2 = RegExp2.НайтиВхождения(Результат[0].SubMatches(0));
|
||
СтрокаТипаЗначения = "";
|
||
|
||
Для Каждого Вхождение2 Из Результат2 Цикл
|
||
|
||
СтрокаТипаЗначения = СтрокаТипаЗначения + ", " + СокрЛП(Вхождение2.SubMatches(0));
|
||
|
||
КонецЦикла;
|
||
|
||
ТипЭлементаКоллекции = СинтаксПомощник.ИзвлечьИзФрагментаHTMLОбычныйТекст(Сред(СтрокаТипаЗначения, 3));
|
||
|
||
КонецЕсли;
|
||
|
||
|
||
RegExp.Global = Истина;
|
||
RegExp.Pattern = "Доступен, начиная с версии (8.*?)\.<";
|
||
Результат = RegExp.НайтиВхождения(Описание);
|
||
Если Результат.Количество() > 0 Тогда
|
||
Если Результат.Количество() > 1 Тогда
|
||
Пустышка = 0; // Для отладки
|
||
КонецЕсли;
|
||
СтрокаВерсииПлатформы = Результат[Результат.Количество() - 1].SubMatches(0);
|
||
НомерВерсииПлатформы = ирОбщий.НомерВерсииПлатформыЛкс(ирОбщий.ПервыйФрагментЛкс(СтрокаВерсииПлатформы, "("));
|
||
Если НомерВерсииПлатформы <= 801000 Тогда
|
||
НомерВерсииПлатформы = 0;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если Найти(НРегПуть, "/script functions/") > 0 Тогда
|
||
// Этот раздел был в 8.2. Но в каком то релизе 8.3 убрали
|
||
ТипКонтекста = "Общее";
|
||
ВызватьИсключение "Обнаружен устаревший раздел Общее";
|
||
КонецЕсли;
|
||
|
||
ТипКонтекста = ТипыКонтекстовПутей[ПутьКОписаниюКонтекста];
|
||
Если ТипКонтекста = Неопределено Тогда
|
||
ТипКонтекста = "";
|
||
ФайлКонтекста = Новый Файл(РабочийКаталог + ПутьКОписаниюКонтекста);
|
||
Если Истина
|
||
И ФайлКонтекста.Существует()
|
||
И ФайлКонтекста.ЭтоФайл()
|
||
Тогда
|
||
Текст.Прочитать(ФайлКонтекста.ПолноеИмя);
|
||
ОписаниеКонтекста = Текст.ПолучитьТекст();
|
||
RegExp.Pattern = "(<[^>]+>)+([^\(<]+[^\(<\s])";
|
||
Результат = RegExp.НайтиВхождения(ОписаниеКонтекста);
|
||
Если Результат.Количество() > 0 Тогда
|
||
ТипКонтекста = СинтаксПомощник.ИзвлечьИзФрагментаHTMLОбычныйТекст(Результат[0].SubMatches(1));
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
//Если Найти(НРегПуть, "/global context/") > 0 Тогда
|
||
Если ТипКонтекста = "Глобальный контекст" Тогда
|
||
ТипКонтекста = "Глобальный";
|
||
КонецЕсли;
|
||
ТипыКонтекстовПутей[ПутьКОписаниюКонтекста] = ТипКонтекста;
|
||
КонецЕсли;
|
||
Если Истина
|
||
И ТипКонтекста = ""
|
||
И ЯзыкПрограммы = 1
|
||
Тогда
|
||
Фрагметны = ирОбщий.СтрРазделитьЛкс(НовоеСлово);
|
||
Если Истина
|
||
И Фрагметны.Количество() > 1
|
||
//И Найти( Фрагметны[Фрагметны.ВГраница()], "<") = 0
|
||
Тогда
|
||
ТипЗначения = НовоеСлово;
|
||
|
||
НовоеСлово = Фрагметны[Фрагметны.ВГраница()];
|
||
|
||
Фрагметны.Удалить(Фрагметны.ВГраница());
|
||
|
||
ТипКонтекста = ирОбщий.СтрСоединитьЛкс(Фрагметны, ".");
|
||
// Баг в файлах справки
|
||
|
||
Если ТипКонтекста = "РегистрСведений" Тогда
|
||
НовоеСлово = СтрЗаменить(НовоеСлово , "<Имя регистра>", "<Имя регистра сведений>");
|
||
ТипЗначения = СтрЗаменить(ТипЗначения, "<Имя регистра>", "<Имя регистра сведений>");
|
||
ИначеЕсли ТипКонтекста = "РегистрНакопления" Тогда
|
||
|
||
НовоеСлово = СтрЗаменить(НовоеСлово , "<Имя регистра>", "<Имя регистра накопления>");
|
||
|
||
ТипЗначения = СтрЗаменить(ТипЗначения, "<Имя регистра>", "<Имя регистра накопления>");
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
СинтаксПомощник.ЗагрузитьОписаниеМетода(ТипКонтекста, НовоеСлово, Описание, ТипСлова, ЯзыкПрограммы, ТаблицаПараметров, РабочийКаталог);
|
||
Если ТипКонтекста = "" Тогда
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы", НовоеСлово, ЯзыкПрограммы);
|
||
|
||
СинтаксПомощник.СкорректироватьЭлементыСтруктуры(СтруктураКлюча);
|
||
СкорректироватьКлючТипа(СтруктураКлюча);
|
||
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
|
||
НоваяСтрока = ТаблицаОбщихТипов.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
Иначе
|
||
НоваяСтрока = НайденныеСтроки[0];
|
||
КонецЕсли;
|
||
|
||
НоваяСтрока.БазовыйТип = ирОбщий.ПервыйФрагментЛкс(НовоеСлово);
|
||
|
||
НоваяСтрока.ПутьКОписанию = ПутьКОписанию;
|
||
|
||
НоваяСтрока.ТипЭлементаКоллекции = ТипЭлементаКоллекции;
|
||
НоваяСтрока.НомерВерсииПлатформы = НомерВерсииПлатформы;
|
||
Если Найти(Описание, "<p>Определяет набор ") > 0 Тогда
|
||
ДобавитьСвойствоГлобальногоКонтекста(НоваяСтрока, НовоеСлово);
|
||
КонецЕсли;
|
||
|
||
ЗаполнитьСтрокуТипа(НоваяСтрока);
|
||
Иначе
|
||
Если Найти(НовоеСлово, "<") > 0 Тогда
|
||
ТаблицаДобавления = ТаблицаШаблоновКонтекстов;
|
||
Иначе
|
||
ТаблицаДобавления = ТаблицаКонтекстов;
|
||
|
||
КонецЕсли;
|
||
НоваяСтрока = ТаблицаДобавления.Добавить();
|
||
СтруктураСтроки = ирОбщий.СтруктураСвойствСтрокиТаблицыИлиДереваЛкс(НоваяСтрока);
|
||
|
||
СтруктураСтроки.Слово = НовоеСлово;
|
||
|
||
СтруктураСтроки.ТипСлова = ТипСлова;
|
||
|
||
СтруктураСтроки.ПутьКОписанию = ПутьКОписанию;
|
||
|
||
СтруктураСтроки.ЯзыкПрограммы = ЯзыкПрограммы;
|
||
|
||
СтруктураСтроки.ТипКонтекста = ТипКонтекста;
|
||
|
||
СтруктураСтроки.ТипЗначения = ТипЗначения;
|
||
|
||
СтруктураСтроки.НомерВерсииПлатформы = НомерВерсииПлатформы;
|
||
СинтаксПомощник.СкорректироватьЭлементыСтруктуры(СтруктураСтроки);
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураСтроки);
|
||
|
||
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы", ТипКонтекста, ЯзыкПрограммы);
|
||
СинтаксПомощник.СкорректироватьЭлементыСтруктуры(СтруктураКлюча);
|
||
|
||
СкорректироватьКлючТипа(СтруктураКлюча);
|
||
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
|
||
НоваяСтрокаТипа = ТаблицаОбщихТипов.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаТипа, СтруктураКлюча);
|
||
ЗаполнитьСтрокуТипа(НоваяСтрокаТипа);
|
||
Иначе
|
||
НоваяСтрокаТипа = НайденныеСтроки[0];
|
||
|
||
КонецЕсли;
|
||
|
||
НоваяСтрокаТипа.ЕстьКонструктор = НоваяСтрокаТипа.ЕстьКонструктор ИЛИ (ТипСлова = "Конструктор");
|
||
|
||
Если ТипСлова = "Поле" Тогда
|
||
// Дублируем поля для языка выражений компоновки
|
||
СтрокаДубля = НоваяСтрока.Владелец().Добавить();
|
||
ЗаполнитьЗначенияСвойств(СтрокаДубля, НоваяСтрока);
|
||
СтрокаДубля.ЯзыкПрограммы = 2;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
|
||
|
||
|
||
|
||
// Установим типы значений у свойств глобального контекста, открывающих доступ к коллекциям корневых метаданных
|
||
СтрокаКонстанты = ТаблицаКорневыхОбъектовКонфигурации.Найти("Константы", "Множественное");
|
||
СтрокаТаблицКонстант = ТаблицаКорневыхОбъектовКонфигурации.Добавить();
|
||
ЗаполнитьЗначенияСвойств(СтрокаТаблицКонстант, СтрокаКонстанты);
|
||
СтрокаТаблицКонстант.Множественное = "Константа";
|
||
Для Каждого СтрокаТипа Из ТаблицаКорневыхОбъектовКонфигурации Цикл
|
||
Если СтрокаТипа.Множественное = "Константа" Тогда
|
||
лИмяКоллекции = "Константы";
|
||
Иначе
|
||
лИмяКоллекции = СтрокаТипа.Множественное;
|
||
КонецЕсли;
|
||
|
||
СтрокаВида = ТаблицаИменЭлементовКоллекций.Найти(лИмяКоллекции, "ИмяКоллекции");
|
||
Если СтрокаВида = Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Если СтрокаТипа.Множественное = "Константы" Тогда
|
||
|
||
ГлавноеСлово = СтрокаТипа.Множественное;
|
||
ГлавныйТипСлова = "Таблица";
|
||
ВторойТипСлова = "Поле";
|
||
Иначе
|
||
|
||
ГлавноеСлово = СтрокаТипа.Единственное;
|
||
ГлавныйТипСлова = "Свойство";
|
||
ВторойТипСлова = "Таблица";
|
||
|
||
КонецЕсли;
|
||
|
||
|
||
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово, ЯзыкПрограммы, ТипСлова, ТипЯзыка",
|
||
ГлавноеСлово, СтрокаВида.ИмяЭлементаКоллекции, 1, ВторойТипСлова, "");
|
||
НайденныйСтроки = ТаблицаШаблоновКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
Если НайденныйСтроки.Количество() = 0 Тогда
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
Иначе
|
||
НоваяСтрока = НайденныйСтроки[0];
|
||
|
||
КонецЕсли;
|
||
|
||
Если СтрокаТипа.Множественное = "Константы" Тогда
|
||
НоваяСтрока.ТипЗначения = "Произвольный";
|
||
Иначе
|
||
НоваяСтрока.ТипЗначения = СтрокаТипа.Единственное + "." + СтрокаВида.ИмяЭлементаКоллекции;
|
||
|
||
КонецЕсли;
|
||
|
||
|
||
|
||
// Таблицы для языка запросов
|
||
Если СтрокаТипа.Категория = 3 Тогда // Пропускаем внешние метаданные
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово, ЯзыкПрограммы, ТипСлова, ТипЯзыка",
|
||
|
||
"Глобальный", ГлавноеСлово, 1, ГлавныйТипСлова, "");
|
||
|
||
НайденныйСтроки = ТаблицаКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
|
||
Если НайденныйСтроки.Количество() = 0 Тогда
|
||
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
|
||
Иначе
|
||
|
||
НоваяСтрока = НайденныйСтроки[0];
|
||
|
||
КонецЕсли;
|
||
|
||
НоваяСтрока.ТипЗначения = ГлавноеСлово;
|
||
|
||
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы",
|
||
СтрокаТипа.Единственное + "." + СтрокаВида.ИмяЭлементаКоллекции, 1);
|
||
СинтаксПомощник.СкорректироватьЭлементыСтруктуры(СтруктураКлюча);
|
||
|
||
СкорректироватьКлючТипа(СтруктураКлюча);
|
||
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
|
||
НоваяСтрока = ТаблицаОбщихТипов.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
|
||
Иначе
|
||
|
||
НоваяСтрока = НайденныеСтроки[0];
|
||
|
||
КонецЕсли;
|
||
ЗаполнитьСтрокуТипа(НоваяСтрока);
|
||
|
||
КонецЦикла;
|
||
|
||
//НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
|
||
//НоваяСтрока.ТипКонтекста = "Общее";
|
||
|
||
//НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
//НоваяСтрока.ТипЗначения = "Неопределено";
|
||
|
||
//НоваяСтрока.Слово = "Неопределено";
|
||
|
||
//НоваяСтрока.ЯзыкПрограммы = 0;
|
||
|
||
//
|
||
//НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
|
||
//НоваяСтрока.ТипКонтекста = "Общее";
|
||
|
||
//НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
//НоваяСтрока.ТипЗначения = "Null";
|
||
|
||
//НоваяСтрока.Слово = "Null";
|
||
|
||
//НоваяСтрока.ЯзыкПрограммы = 0;
|
||
|
||
//
|
||
|
||
//НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
|
||
//НоваяСтрока.ТипКонтекста = "Общее";
|
||
|
||
//НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
//НоваяСтрока.ТипЗначения = "Булево";
|
||
|
||
//НоваяСтрока.Слово = "Истина";
|
||
|
||
//НоваяСтрока.ЯзыкПрограммы = 0;
|
||
|
||
//
|
||
|
||
//НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
|
||
//НоваяСтрока.ТипКонтекста = "Общее";
|
||
|
||
//НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
//НоваяСтрока.ТипЗначения = "Булево";
|
||
//НоваяСтрока.Слово = "Ложь";
|
||
|
||
//НоваяСтрока.ЯзыкПрограммы = 0;
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
|
||
НоваяСтрока.ТипКонтекста = "Глобальный";
|
||
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
НоваяСтрока.ТипЗначения = "Null";
|
||
|
||
НоваяСтрока.Слово = "NULL";
|
||
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
|
||
НоваяСтрока.ТипКонтекста = "Глобальный";
|
||
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
НоваяСтрока.ТипЗначения = "Неопределено";
|
||
|
||
НоваяСтрока.Слово = "НЕОПРЕДЕЛЕНО";
|
||
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
|
||
НоваяСтрока.ТипКонтекста = "Глобальный";
|
||
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
НоваяСтрока.ТипЗначения = "Булево";
|
||
|
||
НоваяСтрока.Слово = "ИСТИНА";
|
||
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
|
||
НоваяСтрока.ТипКонтекста = "Глобальный";
|
||
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
НоваяСтрока.ТипЗначения = "Булево";
|
||
|
||
НоваяСтрока.Слово = "ЛОЖЬ";
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "ОбъектМетаданных: Подсистема";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "КоллекцияОбъектовМетаданных";
|
||
НоваяСтрока.Слово = "Подсистемы";
|
||
НоваяСтрока.ЯзыкПрограммы = 0;
|
||
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "ВнешнийИсточникДанных.<Имя внешнего источника>";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "ВнешнийИсточникДанных.<Имя внешнего источника>.Таблица";
|
||
НоваяСтрока.Слово = "Таблица";
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "ВнешнийИсточникДанных.<Имя внешнего источника>";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "ВнешнийИсточникДанных.<Имя внешнего источника>.Таблица";
|
||
НоваяСтрока.Слово = "Таблица";
|
||
НоваяСтрока.ЯзыкПрограммы = 2;
|
||
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "ВнешнийИсточникДанных.<Имя внешнего источника>";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "ВнешнийИсточникДанных.<Имя внешнего источника>.ВременнаяТаблица";
|
||
НоваяСтрока.Слово = "ВременнаяТаблица";
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
// Добавим колонки временной таблицы
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
|
||
НоваяСтрока.ТипКонтекста = "ВременнаяТаблица";
|
||
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
НоваяСтрока.ТипЗначения = "Произвольный";
|
||
|
||
НоваяСтрока.Слово = "<Имя колонки>";
|
||
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
|
||
|
||
// Добавим колонки строки таблицы
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "СтрокаТаблицы";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "Произвольный";
|
||
НоваяСтрока.Слово = "<Имя колонки>";
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "СтрокаТаблицы";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "Произвольный";
|
||
НоваяСтрока.Слово = "<Имя колонки>";
|
||
НоваяСтрока.ЯзыкПрограммы = 2;
|
||
|
||
// Проставим в типах значения виды (шаблонные имена элементов коллекций)
|
||
МассивТаблиц = Новый Массив;
|
||
МассивТаблиц.Добавить(ТаблицаКонтекстов);
|
||
МассивТаблиц.Добавить(ТаблицаШаблоновКонтекстов);
|
||
Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(ТаблицаШаблоновКонтекстов.Количество() + ТаблицаКонтекстов.Количество(),
|
||
"Добавление дополнительных шаблонов");
|
||
Для Каждого ВременнаяТаблица Из МассивТаблиц Цикл
|
||
Для Каждого ВременнаяСтрока Из ВременнаяТаблица Цикл
|
||
ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
|
||
МассивФрагментов = ирОбщий.СтрРазделитьЛкс(ВременнаяСтрока.ТипКонтекста);
|
||
|
||
Если МассивФрагментов.Количество() > 1 Тогда
|
||
|
||
ПозицияКонцаШаблона = Найти(МассивФрагментов[МассивФрагментов.ВГраница() - 1], "<");
|
||
Если Лев(ВременнаяСтрока.Слово, 1) <> "<" Тогда
|
||
|
||
Если ПозицияКонцаШаблона > 0 Тогда
|
||
|
||
АтрибутШаблона = МассивФрагментов[МассивФрагментов.ВГраница()];
|
||
|
||
МассивФрагментов.Удалить(МассивФрагментов.ВГраница());
|
||
|
||
СтруктураКлюча = Новый Структура;
|
||
|
||
СтруктураКлюча.Вставить("ТипКонтекста", ирОбщий.СтрСоединитьЛкс(МассивФрагментов, "."));
|
||
|
||
СтруктураКлюча.Вставить("Слово", АтрибутШаблона);
|
||
Если Ложь
|
||
Или ВременнаяСтрока.ТипСлова = "Поле"
|
||
Или ВременнаяСтрока.ТипСлова = "Параметр"
|
||
|
||
Или (Истина
|
||
И ВременнаяСтрока.ТипСлова = "Таблица"
|
||
И МассивФрагментов.Количество() > 1)
|
||
Тогда
|
||
|
||
СтруктураКлюча.Вставить("ТипСлова", "Таблица");
|
||
|
||
Иначе
|
||
СтруктураКлюча.Вставить("ТипСлова", "Свойство");
|
||
КонецЕсли;
|
||
|
||
Если Найти(АтрибутШаблона, "<") > 0 Тогда
|
||
|
||
ТаблицаДобавления = ТаблицаШаблоновКонтекстов;
|
||
|
||
Иначе
|
||
|
||
ТаблицаДобавления = ТаблицаКонтекстов;
|
||
|
||
КонецЕсли;
|
||
|
||
Если ТаблицаДобавления.НайтиСтроки(СтруктураКлюча).Количество() = 0 Тогда
|
||
|
||
ДополнительнаяСтрока = ТаблицаДобавления.Добавить();
|
||
|
||
ЗаполнитьЗначенияСвойств(ДополнительнаяСтрока, СтруктураКлюча);
|
||
|
||
ДополнительнаяСтрока.ТипЗначения = ВременнаяСтрока.ТипКонтекста;
|
||
ДополнительнаяСтрока.ЯзыкПрограммы = ВременнаяСтрока.ЯзыкПрограммы;
|
||
|
||
//СтруктураКлюча = Новый Структура;
|
||
|
||
//СтруктураКлюча.Вставить("Слово", ДополнительнаяСтрока.ТипКонтекста);
|
||
|
||
//СтруктураКлюча.Вставить("ЯзыкПрограммы", ДополнительнаяСтрока.ЯзыкПрограммы);
|
||
//СтрокиТипа = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
//Если СтрокиТипа.Количество() > 0 Тогда
|
||
// ДополнительнаяСтрока.ПутьКОписанию = СтрокиТипа[0].ПутьКОписанию;
|
||
|
||
//КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если ВременнаяСтрока.Слово = "<Имя табличной части>" Тогда
|
||
|
||
АтрибутШаблона = МассивФрагментов[МассивФрагментов.ВГраница()];
|
||
|
||
ГлавныйТип = МассивФрагментов[0];
|
||
|
||
МаркерОбъекта = "Объект";
|
||
|
||
Если ВременнаяСтрока.ЯзыкПрограммы = 0 Тогда
|
||
|
||
КорневойТип = СтрЗаменить(ГлавныйТип, МаркерОбъекта, "");
|
||
ТипТабличнойЧастиЗапроса = КорневойТип + "."
|
||
|
||
+ АтрибутШаблона + "." + ВременнаяСтрока.Слово;
|
||
ТипСтрокиТабличнойЧасти = КорневойТип + "ТабличнаяЧастьСтрока."
|
||
|
||
+ АтрибутШаблона + "." + ВременнаяСтрока.Слово;
|
||
|
||
ТипТабличнойЧасти = КорневойТип + "ТабличнаяЧасть."
|
||
+ АтрибутШаблона + "." + ВременнаяСтрока.Слово;
|
||
//ВременнаяСтрока.ТипЗначения = ТипТабличнойЧасти;
|
||
|
||
Если Прав(ГлавныйТип, СтрДлина(МаркерОбъекта)) = МаркерОбъекта Тогда
|
||
СтруктураДобавляемыхТипов = Новый Соответствие;
|
||
СтруктураДобавляемыхТипов.Вставить(ТипСтрокиТабличнойЧасти,);
|
||
|
||
СтруктураДобавляемыхТипов.Вставить(ТипТабличнойЧасти, ТипСтрокиТабличнойЧасти);
|
||
Для Каждого ДобавляемыйТип Из СтруктураДобавляемыхТипов Цикл
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы", ДобавляемыйТип.Ключ, ВременнаяСтрока.ЯзыкПрограммы);
|
||
СинтаксПомощник.СкорректироватьЭлементыСтруктуры(СтруктураКлюча);
|
||
|
||
СкорректироватьКлючТипа(СтруктураКлюча);
|
||
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
|
||
НоваяСтрокаТипа = ТаблицаОбщихТипов.Добавить();
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаТипа, СтруктураКлюча);
|
||
|
||
Иначе
|
||
|
||
НоваяСтрокаТипа = НайденныеСтроки[0];
|
||
|
||
КонецЕсли;
|
||
|
||
НоваяСтрокаТипа.ТипЭлементаКоллекции = ирОбщий.ПервыйФрагментЛкс(ДобавляемыйТип.Значение);
|
||
|
||
ЗаполнитьСтрокуТипа(НоваяСтрокаТипа);
|
||
|
||
КонецЦикла;
|
||
|
||
КонецЕсли;
|
||
|
||
Иначе
|
||
|
||
// **** Для вложенных запросов придется переделать
|
||
|
||
ТипКонтекстаШаблона = ВременнаяСтрока.ТипКонтекста + "." + ВременнаяСтрока.Слово;
|
||
|
||
ВременнаяСтрока.ТипЗначения = ТипКонтекстаШаблона;
|
||
|
||
КонецЕсли;
|
||
Если Прав(ГлавныйТип, СтрДлина(МаркерОбъекта)) = МаркерОбъекта Тогда
|
||
|
||
|
||
ДополнительнаяСтрокаШаблона = ТаблицаШаблоновКонтекстов.Добавить();
|
||
|
||
ДополнительнаяСтрокаШаблона.ТипКонтекста = ТипТабличнойЧастиЗапроса;
|
||
|
||
ДополнительнаяСтрокаШаблона.ТипСлова = "Поле";
|
||
ДополнительнаяСтрокаШаблона.Слово = "<Имя реквизита>";
|
||
|
||
ДополнительнаяСтрокаШаблона.ТипЗначения = "Произвольный";
|
||
|
||
ДополнительнаяСтрокаШаблона.ЯзыкПрограммы = 1;
|
||
|
||
|
||
ДополнительнаяСтрокаШаблона = ТаблицаШаблоновКонтекстов.Добавить();
|
||
|
||
ДополнительнаяСтрокаШаблона.ТипКонтекста = ТипСтрокиТабличнойЧасти;
|
||
|
||
ДополнительнаяСтрокаШаблона.ТипСлова = "Свойство";
|
||
|
||
ДополнительнаяСтрокаШаблона.Слово = "<Имя реквизита>";
|
||
|
||
ДополнительнаяСтрокаШаблона.ТипЗначения = "Произвольный";
|
||
|
||
ДополнительнаяСтрокаШаблона.ЯзыкПрограммы = 0;
|
||
|
||
|
||
|
||
ДополнительнаяСтрокаКонтекста = ТаблицаКонтекстов.Добавить();
|
||
|
||
ДополнительнаяСтрокаКонтекста.ТипКонтекста = ТипТабличнойЧастиЗапроса;
|
||
|
||
ДополнительнаяСтрокаКонтекста.ТипСлова = "Поле";
|
||
|
||
ДополнительнаяСтрокаКонтекста.Слово = "НомерСтроки";
|
||
|
||
ДополнительнаяСтрокаКонтекста.ТипЗначения = "Число";
|
||
|
||
ДополнительнаяСтрокаКонтекста.ЯзыкПрограммы = 1;
|
||
|
||
ДополнительнаяСтрокаКонтекста = ТаблицаКонтекстов.Добавить();
|
||
|
||
ДополнительнаяСтрокаКонтекста.ТипКонтекста = ТипТабличнойЧастиЗапроса;
|
||
|
||
ДополнительнаяСтрокаКонтекста.ТипСлова = "Поле";
|
||
|
||
ДополнительнаяСтрокаКонтекста.Слово = "Ссылка";
|
||
|
||
ДополнительнаяСтрокаКонтекста.ТипЗначения = КорневойТип + "." + АтрибутШаблона;
|
||
|
||
ДополнительнаяСтрокаКонтекста.ЯзыкПрограммы = 1;
|
||
|
||
|
||
ДополнительнаяСтрокаКонтекста = ТаблицаКонтекстов.Добавить();
|
||
|
||
ДополнительнаяСтрокаКонтекста.ТипКонтекста = ТипСтрокиТабличнойЧасти;
|
||
|
||
ДополнительнаяСтрокаКонтекста.ТипСлова = "Свойство";
|
||
|
||
ДополнительнаяСтрокаКонтекста.Слово = "НомерСтроки";
|
||
|
||
ДополнительнаяСтрокаКонтекста.ТипЗначения = "Число";
|
||
|
||
ДополнительнаяСтрокаКонтекста.ЯзыкПрограммы = 0;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецЦикла;
|
||
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
|
||
|
||
// Заполним в таблицах контекстов и шаблонов контекстов типы значений по базовым типам
|
||
// Тип значения "ДокументСсылка" => "ДокументСсылка.<Имя документа>"
|
||
|
||
МассивТаблиц = Новый Массив;
|
||
|
||
МассивТаблиц.Добавить(ТаблицаКонтекстов);
|
||
|
||
МассивТаблиц.Добавить(ТаблицаШаблоновКонтекстов);
|
||
|
||
Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(ТаблицаШаблоновКонтекстов.Количество() + ТаблицаКонтекстов.Количество(),
|
||
"Установка <> в типах значений");
|
||
|
||
Для Каждого ВременнаяТаблица Из МассивТаблиц Цикл
|
||
|
||
Для Каждого ВременнаяСтрока Из ВременнаяТаблица Цикл
|
||
|
||
ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
|
||
|
||
//СтруктураКлюча = Новый Структура("БазовыйТип", ВременнаяСтрока.ТипЗначения);
|
||
МассивФрагментов = ирОбщий.СтрРазделитьЛкс(ВременнаяСтрока.ТипЗначения, ",", Истина);
|
||
НовыйТипЗначения = "";
|
||
Для Каждого Фрагмент Из МассивФрагментов Цикл
|
||
СтруктураКлюча = Новый Структура("БазовыйТип", Фрагмент);
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
НовыйФрагмент = Фрагмент;
|
||
Если НайденныеСтроки.Количество() > 0 Тогда
|
||
Если ВременнаяСтрока.ЯзыкПрограммы = 0 Тогда
|
||
НовыйФрагмент = НайденныеСтроки[0].Слово;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если НовыйТипЗначения <> "" Тогда
|
||
НовыйТипЗначения = НовыйТипЗначения + ", ";
|
||
КонецЕсли;
|
||
НовыйТипЗначения = НовыйТипЗначения + НовыйФрагмент;
|
||
КонецЦикла;
|
||
ВременнаяСтрока.ТипЗначения = НовыйТипЗначения;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецЦикла;
|
||
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
|
||
|
||
// Добавим служебные типы
|
||
|
||
НоваяСтрока = ТаблицаОбщихТипов.Добавить();
|
||
|
||
НоваяСтрока.Слово = "Неизвестный контекст";
|
||
|
||
НоваяСтрока.ТипТипа = "Основной";
|
||
|
||
|
||
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы", "Табличная часть", 0);
|
||
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
|
||
НоваяСтрока = ТаблицаОбщихТипов.Добавить();
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
|
||
Иначе
|
||
|
||
НоваяСтрока = НайденныеСтроки[0];
|
||
|
||
КонецЕсли;
|
||
|
||
НоваяСтрока.ТипЭлементаКоллекции = "Строка табличной части";
|
||
|
||
ЗаполнитьСтрокуТипа(НоваяСтрока);
|
||
|
||
|
||
|
||
// Добавим примитивные типы
|
||
|
||
МассивПримитивныхТипов = ПолучитьПримитивныеТипыЛкс(Истина);
|
||
|
||
Для Каждого ИмяПримитивногоТипа Из МассивПримитивныхТипов Цикл
|
||
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы", ИмяПримитивногоТипа, 0);
|
||
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
|
||
НоваяСтрока = ТаблицаОбщихТипов.Добавить();
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
|
||
ЗаполнитьСтрокуТипа(НоваяСтрока);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
// Добавим тип временной таблицы
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы", "ВременнаяТаблица", 1);
|
||
|
||
НоваяСтрока = ТаблицаОбщихТипов.Добавить();
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
|
||
ЗаполнитьСтрокуТипа(НоваяСтрока);
|
||
|
||
|
||
|
||
// Добавим тип поля таблицы
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы", "СтрокаТаблицы", 1);
|
||
НоваяСтрока = ТаблицаОбщихТипов.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
ЗаполнитьСтрокуТипа(НоваяСтрока);
|
||
|
||
// Добавим базовые типы для имен типов
|
||
КлючПоиска = Новый Структура("ТипТипа", "Основной");
|
||
|
||
НайденныеСтрокиТипов = ТаблицаОбщихТипов.НайтиСтроки(КлючПоиска);
|
||
|
||
Для Каждого СтрокаТипа Из НайденныеСтрокиТипов Цикл
|
||
|
||
БазовыйТип = СтрокаТипа.БазовыйТип;
|
||
|
||
Если Истина
|
||
И Найти(СтрокаТипа.БазовыйТип, ".") = 0
|
||
И СтрокаТипа.БазовыйТип <> ""
|
||
Тогда
|
||
Если Истина
|
||
|
||
И СтрокаТипа.ЯзыкПрограммы = 1
|
||
|
||
//И Не ирОбщий.ЛиКорневойТипОбъектаБДЛкс(БазовыйТип) // Замена 13.03.2016
|
||
И Не ирОбщий.ЛиКорневойТипТаблицыБДЛкс(БазовыйТип)
|
||
И Не БазовыйТип = "Перечисление"
|
||
Тогда
|
||
|
||
Продолжить;
|
||
|
||
КонецЕсли;
|
||
КлючСтрокиИмениТипа = Новый Структура("ТипКонтекста, Слово, ТипЯзыка, ЯзыкПрограммы",
|
||
|
||
"", СтрокаТипа.БазовыйТип, "ИмяТипа", СтрокаТипа.ЯзыкПрограммы);
|
||
|
||
Если ТаблицаКонтекстов.НайтиСтроки(КлючСтрокиИмениТипа).Количество() = 0 Тогда
|
||
|
||
ДополнительнаяСтрока = ТаблицаКонтекстов.Добавить();
|
||
|
||
ДополнительнаяСтрока.ТипКонтекста = "";
|
||
|
||
ДополнительнаяСтрока.Слово = СтрокаТипа.БазовыйТип;
|
||
|
||
ДополнительнаяСтрока.ТипЯзыка = "ИмяТипа";
|
||
|
||
ДополнительнаяСтрока.ТипСлова = "Свойство";
|
||
|
||
ДополнительнаяСтрока.ЯзыкПрограммы = СтрокаТипа.ЯзыкПрограммы;
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Пока Истина Цикл
|
||
//КонецСтроки = ЛксПолучитьСтрокуОтсечениемМаркеромСКонца(СтрокаТипа.Слово, БазовыйТип);
|
||
КонецСтроки = ирОбщий.ПоследнийФрагментЛкс(СтрокаТипа.Слово, БазовыйТип);
|
||
ОчередноеСлово = ирОбщий.ПервыйФрагментЛкс(Сред(КонецСтроки, 2));
|
||
|
||
ИмяЭлементаКоллекции = ирОбщий.СтрокаМеждуМаркерамиЛкс(ОчередноеСлово, "<", ">", Ложь, Истина);
|
||
Если ИмяЭлементаКоллекции = Неопределено Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
|
||
КлючСтрокиШаблона = Новый Структура("ТипКонтекста, Слово, ТипЯзыка, ЯзыкПрограммы",
|
||
БазовыйТип, ОчередноеСлово, "ИмяТипа", СтрокаТипа.ЯзыкПрограммы);
|
||
|
||
Если ТаблицаШаблоновКонтекстов.НайтиСтроки(КлючСтрокиШаблона).Количество() = 0 Тогда
|
||
|
||
ДополнительнаяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
ЗаполнитьЗначенияСвойств(ДополнительнаяСтрока, КлючСтрокиШаблона);
|
||
|
||
ДополнительнаяСтрока.ТипСлова = "Свойство";
|
||
|
||
КонецЕсли;
|
||
|
||
БазовыйТип = БазовыйТип + "." + ОчередноеСлово;
|
||
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
|
||
// Скорректируем системные перечисления
|
||
КлючПоиска = Новый Структура("ТипТипа", "Перечисление");
|
||
НайденныеСтрокиТипов = ТаблицаОбщихТипов.НайтиСтроки(КлючПоиска);
|
||
Для Каждого СтрокаСистемногоПеречисления Из НайденныеСтрокиТипов Цикл
|
||
КлючПоиска = Новый Структура("ТипКонтекста", Сред(СтрокаСистемногоПеречисления.Слово, СтрДлина("Перечисление") + 1));
|
||
|
||
НайденныеСтрокиКонтекста = ТаблицаКонтекстов.НайтиСтроки(КлючПоиска);
|
||
Для Каждого СтрокаКонтекста Из НайденныеСтрокиКонтекста Цикл
|
||
СтрокаКонтекста.ТипЗначения = СтрокаКонтекста.ТипКонтекста;
|
||
СтрокаКонтекста.ТипКонтекста = СтрокаСистемногоПеречисления.Слово;
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
|
||
|
||
// Добавим строки для значений в запросе
|
||
|
||
МассивСтрокДляДублированияВЯзыкЗапросов = Новый Массив;
|
||
|
||
МассивСтрокДляДублированияВЯзыкКомпоновки = Новый Массив;
|
||
Для Каждого СтрокаШаблонаКонтекста Из ТаблицаШаблоновКонтекстов Цикл
|
||
|
||
Если Ложь
|
||
|
||
Или СтрокаШаблонаКонтекста.Слово = "<Имя значения перечисления>"
|
||
Или СтрокаШаблонаКонтекста.ТипКонтекста = "ВнешнийИсточникДанных"
|
||
|
||
Или СтрокаШаблонаКонтекста.ТипКонтекста = "ВнешнийИсточникДанных.<Имя внешнего источника>.Таблица"
|
||
Или (Истина
|
||
И Найти(СтрокаШаблонаКонтекста.ТипКонтекста, ".") = 0
|
||
|
||
И ирОбщий.ЛиКорневойТипСсылкиЛкс(СтрокаШаблонаКонтекста.ТипКонтекста)
|
||
И СтрокаШаблонаКонтекста.ТипЯзыка <> "ИмяТипа"
|
||
|
||
И СтрокаШаблонаКонтекста.ЯзыкПрограммы = 1)
|
||
|
||
Или (Истина
|
||
|
||
И ирОбщий.ЛиКорневойТипОбъектаСПредопределеннымЛкс(ирОбщий.ПервыйФрагментЛкс(СтрЗаменить(СтрокаШаблонаКонтекста.ТипКонтекста, "Менеджер.", ".")))
|
||
|
||
И Найти(СтрокаШаблонаКонтекста.Слово, "предопределен") > 0)
|
||
|
||
Тогда
|
||
|
||
МассивСтрокДляДублированияВЯзыкЗапросов.Добавить(СтрокаШаблонаКонтекста);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(ТаблицаШаблоновКонтекстов.Количество() + ТаблицаКонтекстов.Количество(),
|
||
"Заполнение типов системных перечислений");
|
||
Для Каждого СтрокаКонтекста Из ТаблицаКонтекстов Цикл
|
||
ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
|
||
ЕдинственноеКорневогоТипа = "";
|
||
|
||
СтрокаКорневогоТипаОбъектаМетаданных = мПлатформа.ОписаниеТипаМетаОбъектов(, СтрокаКонтекста.Слово, 0);
|
||
Если СтрокаКорневогоТипаОбъектаМетаданных <> Неопределено Тогда
|
||
ЕдинственноеКорневогоТипа = СтрокаКорневогоТипаОбъектаМетаданных.Единственное;
|
||
КонецЕсли;
|
||
//КорневойТипКонтекста = ирОбщий.ПервыйФрагментЛкс(СтрЗаменить(СтрокаКонтекста.ТипКонтекста, "Менеджер.", "."));
|
||
|
||
Если Ложь
|
||
|
||
Или (Истина
|
||
|
||
И СтрокаКонтекста.ТипКонтекста = "Глобальный"
|
||
И ирОбщий.ЛиКорневойТипСсылкиЛкс(СтрокаКонтекста.Слово)
|
||
|
||
И СтрокаКонтекста.ЯзыкПрограммы = 1)
|
||
|
||
Или (Истина
|
||
И ирОбщий.ЛиКорневойТипСсылкиЛкс(СтрокаКонтекста.ТипКонтекста)
|
||
И СтрокаКонтекста.Слово = "Ссылка"
|
||
И Найти(СтрокаКонтекста.ТипКонтекста, "табличной части>") = 0
|
||
И Найти(СтрокаКонтекста.ТипКонтекста, ".Изменения") = 0
|
||
И СтрокаКонтекста.ЯзыкПрограммы = 1)
|
||
Или СтрокаКонтекста.ТипКонтекста = "ПеречислениеВидДвиженияНакопления"
|
||
|
||
Или СтрокаКонтекста.ТипКонтекста = "ПеречислениеВидСчета"
|
||
|
||
Или СтрокаКонтекста.ТипКонтекста = "ПеречислениеВидДвиженияБухгалтерии"
|
||
|
||
Или СтрокаКонтекста.ТипЗначения = "ПеречислениеВидДвиженияНакопления"
|
||
|
||
Или СтрокаКонтекста.ТипЗначения = "ПеречислениеВидСчета"
|
||
|
||
Или СтрокаКонтекста.ТипЗначения = "ПеречислениеВидДвиженияБухгалтерии"
|
||
|
||
Или (Истина
|
||
И СтрокаКонтекста.ТипКонтекста = "ВнешнийИсточникДанных.<Имя внешнего источника>"
|
||
И СтрокаКонтекста.ЯзыкПрограммы = 1
|
||
И СтрокаКонтекста.Слово = "Таблица")
|
||
Тогда
|
||
|
||
МассивСтрокДляДублированияВЯзыкЗапросов.Добавить(СтрокаКонтекста);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
|
||
Для Каждого СтрокаКДобавлению Из МассивСтрокДляДублированияВЯзыкЗапросов Цикл
|
||
|
||
НоваяСтрока = СтрокаКДобавлению.Владелец().Добавить();
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаКДобавлению);
|
||
|
||
СтрокаКорневогоТипаОбъектаМетаданных = мПлатформа.ОписаниеТипаМетаОбъектов(, НоваяСтрока.Слово, 0);
|
||
|
||
Если СтрокаКорневогоТипаОбъектаМетаданных <> Неопределено Тогда
|
||
|
||
НоваяСтрока.Слово = СтрокаКорневогоТипаОбъектаМетаданных.Единственное;
|
||
|
||
КонецЕсли;
|
||
|
||
Если НоваяСтрока.ТипКонтекста = "Глобальный" Тогда
|
||
|
||
НоваяСтрока.ТипКонтекста = "";
|
||
|
||
КонецЕсли;
|
||
НоваяСтрока.ТипКонтекста = СтрЗаменить(НоваяСтрока.ТипКонтекста, "Менеджер.", ".");
|
||
Если НоваяСтрока.Слово = "Ссылка" Тогда
|
||
НоваяСтрока.Слово = "ПустаяСсылка";
|
||
КонецЕсли;
|
||
|
||
НоваяСтрока.ТипЯзыка = "ЗначениеВЗапросе";
|
||
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
КонецЦикла;
|
||
|
||
|
||
|
||
// Скорректируем описания типов метаданных
|
||
|
||
СтруктураКлюча = Новый Структура("ТипЗначения", "КоллекцияОбъектовМетаданных");
|
||
НайденныеСтроки = ТаблицаКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
|
||
Для Каждого СтрокаМетаданных Из НайденныеСтроки Цикл
|
||
// Исключения
|
||
Если СтрокаМетаданных.Слово = "ОбщиеФормы" Тогда
|
||
ИмяТипаКоллекции = "Формы";
|
||
ИначеЕсли СтрокаМетаданных.Слово = "ОбщиеМакеты" Тогда
|
||
ИмяТипаКоллекции = "Макеты";
|
||
Иначе
|
||
ИмяТипаКоллекции = СтрокаМетаданных.Слово;
|
||
КонецЕсли;
|
||
СтрокаМетаданных.ТипЗначения = "КоллекцияМетаданных: " + ИмяТипаКоллекции;
|
||
|
||
СтрокаМетаТипа = мПлатформа.ОписаниеТипаМетаОбъектов(, ИмяТипаКоллекции);
|
||
Если СтрокаМетаТипа = Неопределено Тогда
|
||
ирОбщий.СообщитьЛкс("Не найдено описание элемента для коллекции """ + ИмяТипаКоллекции + """", СтатусСообщения.Важное);
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово, ЯзыкПрограммы",
|
||
СтрокаМетаданных.ТипЗначения, "<Имя объекта описания метаданного>", 0);
|
||
|
||
НайденныеСтроки = ТаблицаШаблоновКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
|
||
НоваяСтрока.ТипЗначения = "ОбъектМетаданных: " + СтрокаМетаТипа.Единственное;
|
||
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
КонецЕсли;
|
||
|
||
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы", СтрокаМетаданных.ТипЗначения, 0);
|
||
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
|
||
НоваяСтрока = ТаблицаОбщихТипов.Добавить();
|
||
НоваяСтрока.ТипЭлементаКоллекции = "ОбъектМетаданных: " + СтрокаМетаТипа.Единственное;
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
|
||
ЗаполнитьСтрокуТипа(НоваяСтрока);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
// Скорректируем типы результатов функций объектов метаданных
|
||
СтруктураКлюча = Новый Структура("Слово, ТипЗначения", "Родитель", "");
|
||
НайденныеСтроки = ТаблицаКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
Для Каждого СтрокаМетаданных Из НайденныеСтроки Цикл
|
||
СтрокаМетаданных.ТипЗначения = "ОбъектМетаданных";
|
||
КонецЦикла;
|
||
СтруктураКлюча = Новый Структура("Слово, ТипЗначения", "ЕстьИзмененияРасширениямиКонфигурации", "");
|
||
НайденныеСтроки = ТаблицаКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
Для Каждого СтрокаМетаданных Из НайденныеСтроки Цикл
|
||
СтрокаМетаданных.ТипЗначения = "Булево";
|
||
КонецЦикла;
|
||
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, ТипСлова", "ПеречислимыеСвойстваОбъектовМетаданных", "Свойство");
|
||
НайденныеСтроки = ТаблицаКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
Для Каждого СтрокаМетаПеречисления Из НайденныеСтроки Цикл
|
||
ИмяПеречисления = СтрокаМетаПеречисления.ТипЗначения;
|
||
Если Не ЗначениеЗаполнено(ИмяПеречисления) Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
СтрокаМетаПеречисления.ТипЗначения = "ПеречислениеМетаданных: " + ИмяПеречисления;
|
||
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, ТипСлова", ИмяПеречисления, "Свойство");
|
||
НайденныеСтрокиЗначений = ТаблицаКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
ЗначениеПеречисления = Неопределено;
|
||
Для Каждого СтрокаЗначения Из НайденныеСтрокиЗначений Цикл
|
||
СтрокаЗначения.ТипКонтекста = СтрокаМетаПеречисления.ТипЗначения;
|
||
СтрокаЗначения.ТипЗначения = ИмяПеречисления;
|
||
Если ЗначениеПеречисления = Неопределено Тогда
|
||
ЗначениеПеречисления = Метаданные.СвойстваОбъектов[ИмяПеречисления][СтрокаЗначения.Слово];
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы, ТипТипа", ИмяПеречисления, 0, "Расширение");
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
Для Каждого СтрокаТипа Из НайденныеСтроки Цикл
|
||
ЗначениеТип = ТипЗнч(ЗначениеПеречисления);
|
||
СтрокаТипа.ИД = ирОбщий.СтрокаМеждуМаркерамиЛкс("" + ЗначениеВСтрокуВнутр(ЗначениеТип), ",", "}", Ложь);
|
||
// У всех одинаковые идентификаторы. Поэтому пользы от этих строк не будет
|
||
//СтрокаТипаПеречисления = ТаблицаОбщихТипов.Добавить();
|
||
//ЗаполнитьЗначенияСвойств(СтрокаТипаПеречисления, СтрокаТипа);
|
||
//СтрокаТипаПеречисления.Слово = СтрокаМетаПеречисления.ТипЗначения;
|
||
//ЗаполнитьСтрокуТипа(СтрокаТипаПеречисления);
|
||
//ПеречислениеТип = ТипЗнч(Метаданные.СвойстваОбъектов[ИмяПеречисления]);
|
||
//СтрокаТипаПеречисления.ИД = ирОбщий.СтрокаМеждуМаркерамиЛкс("" + ЗначениеВСтрокуВнутр(ПеречислениеТип), ",", "}", Ложь);
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
// У всех перечислимых свойств одинаковые идентификаторы
|
||
СтрокаТипаПеречисления = ТаблицаОбщихТипов.Добавить();
|
||
СтрокаТипаПеречисления.Слово = "ПеречислимоеСвойствоОбъектовМетаданных";
|
||
ЗаполнитьСтрокуТипа(СтрокаТипаПеречисления);
|
||
ПеречислениеТип = ТипЗнч(Метаданные.СвойстваОбъектов.РежимСовместимости);
|
||
СтрокаТипаПеречисления.ИД = ирОбщий.СтрокаМеждуМаркерамиЛкс("" + ЗначениеВСтрокуВнутр(ПеречислениеТип), ",", "}", Ложь);
|
||
|
||
// Абстрактная коллекция объектов метаданных
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово, ЯзыкПрограммы", "КоллекцияОбъектовМетаданных", "<Имя объекта описания метаданного>", 0);
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
НоваяСтрока.ТипЗначения = "ОбъектМетаданных";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово, ЯзыкПрограммы", "ОписанияСтандартныхРеквизитов", "<Имя стандартного реквизита>", 0);
|
||
НайденныеСтроки = ТаблицаШаблоновКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
НоваяСтрока.ТипЗначения = "ОписаниеСтандартногоРеквизита";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
КонецЕсли;
|
||
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово, ЯзыкПрограммы", "СписокПолей", "<Имя поля>", 0);
|
||
НайденныеСтроки = ТаблицаШаблоновКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураКлюча);
|
||
НоваяСтрока.ТипЗначения = "Поле";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
КонецЕсли;
|
||
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово", "ОформлениеСтроки", "Ячейки");
|
||
НайденныеСтроки = ТаблицаКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
НоваяСтрока = НайденныеСтроки[0];
|
||
НоваяСтрока.ТипЗначения = "ОформленияЯчеек";
|
||
НоваяСтрока = ТаблицаОбщихТипов.Добавить();
|
||
НоваяСтрока.Слово = "ОформленияЯчеек";
|
||
НоваяСтрока.ТипЭлементаКоллекции = "ОформлениеЯчейки";
|
||
ЗаполнитьСтрокуТипа(НоваяСтрока);
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "ОформленияЯчеек";
|
||
НоваяСтрока.Слово = "<Имя колонки>";
|
||
НоваяСтрока.ТипЗначения = "ОформлениеЯчейки";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово", "КоллекцияДвижений", "<Имя регистра>");
|
||
НайденныеСтроки = ТаблицаШаблоновКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
НайденныеСтроки[0].ТипЗначения = "Набор записей регистра";
|
||
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы", "ФиксированныйМассив", 0);
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
НоваяСтрока = НайденныеСтроки[0];
|
||
НоваяСтрока.ТипЭлементаКоллекции = "Произвольный";
|
||
|
||
// Антибаг платформы 8.3.17 https://partners.v8.1c.ru/forum/t/1911561/m/1911561 , http://www.hostedredmine.com/issues/872563
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы", "ОкнаКлиентскогоПриложения", 0);
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
НоваяСтрока = НайденныеСтроки[0];
|
||
НоваяСтрока.ТипТипа = "Основной";
|
||
НоваяСтрока.ИД = "f09b329b-17f5-4740-9758-4a1657686858";
|
||
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово", "ПолеHTMLДокумента", "Документ");
|
||
НайденныеСтроки = ТаблицаКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
НоваяСтрока = НайденныеСтроки[0];
|
||
НоваяСтрока.ТипЗначения = "HTMLDocument {HTMLFile}";
|
||
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово", "Расширение поля формы для поля HTML-документа", "Документ");
|
||
НайденныеСтроки = ТаблицаКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
НоваяСтрока = НайденныеСтроки[0];
|
||
НоваяСтрока.ТипЗначения = "HTMLDocument {HTMLFile}";
|
||
|
||
// Удалим строку общего шаблона коллекции метаданных
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, ЯзыкПрограммы", "КоллекцияОбъектовМетаданных", 0);
|
||
|
||
НайденныеСтроки = ТаблицаШаблоновКонтекстов.НайтиСтроки(СтруктураКлюча);
|
||
|
||
ТаблицаШаблоновКонтекстов.Удалить(НайденныеСтроки[0]);
|
||
|
||
|
||
|
||
// Антибаг 8.3.7 Типом табличной части внешних объектов указан тип Строка
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово, ЯзыкПрограммы", "ВнешняяОбработкаОбъект.<Имя внешней обработки>", "<Имя табличной части>", 0);
|
||
ТаблицаШаблоновКонтекстов.НайтиСтроки(СтруктураКлюча)[0].ТипЗначения = "ВнешняяОбработкаТабличнаяЧасть.<Имя внешней обработки>.<Имя табличной части>";
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово, ЯзыкПрограммы", "ВнешнийОтчетОбъект.<Имя внешнего отчета>", "<Имя табличной части>", 0);
|
||
ТаблицаШаблоновКонтекстов.НайтиСтроки(СтруктураКлюча)[0].ТипЗначения = "ВнешнийОтчетТабличнаяЧасть.<Имя внешней обработки>.<Имя табличной части>";
|
||
|
||
// Антибаг 8.3.11 Типом табличной части внешних объектов указан тип Строка
|
||
СтруктураКлюча = Новый Структура("ТипКонтекста, Слово, ЯзыкПрограммы", "РегистрРасчетаМенеджер.<Имя регистра расчета>", "Перерасчеты", 0);
|
||
ТаблицаКонтекстов.НайтиСтроки(СтруктураКлюча)[0].ТипЗначения = "ПерерасчетыМенеджер.<Имя регистра расчета>";
|
||
|
||
ТаблицаКонтекстов.Сортировать("ТипКонтекста, Слово, ТипСлова");
|
||
ТаблицаШаблоновКонтекстов.Сортировать("ТипКонтекста, Слово, ТипСлова");
|
||
// Первая сортировка по ТипТипа критична!
|
||
ТаблицаОбщихТипов.Сортировать("ТипТипа, Слово");
|
||
ТаблицаИменЭлементовКоллекций.Сортировать("ИмяЭлементаКоллекции, ИмяКоллекции");
|
||
ирОбщий.СообщитьЛкс("Количество строк таблицы параметров - " + ТаблицаПараметров.Количество());
|
||
|
||
// Заполним индексы НРЕГ
|
||
Состояние("Построение индексов");
|
||
Для Каждого СтрокаТаблицы Из ТаблицаШаблоновКонтекстов Цикл
|
||
СтрокаТаблицы.НСлово = НРег(СтрокаТаблицы.Слово);
|
||
КонецЦикла;
|
||
|
||
Для Каждого СтрокаТаблицы Из ТаблицаКонтекстов Цикл
|
||
СтрокаТаблицы.НСлово = НРег(СтрокаТаблицы.Слово);
|
||
КонецЦикла;
|
||
Для Каждого СтрокаТаблицы Из ТаблицаОбщихТипов Цикл
|
||
СтрокаТаблицы.НСлово = НРег(СтрокаТаблицы.Слово);
|
||
КонецЦикла;
|
||
Если ВключитьАнализСрабатыванияЗамен Тогда
|
||
ирОбщий.ИсследоватьЛкс(СинтаксПомощник.СрабатываниеЗамен);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура РаспаковатьФайлВнешнейОбработки(ПолноеИмяФайла, ПутьРаспаковки) Экспорт
|
||
|
||
ИмяФайлаПакера = "v8unpack.exe";
|
||
//ПроверитьСоздатьФайлЗапаковщика1С();
|
||
мПлатформа.ПолучитьМакет("v8unpack").Записать(ПутьРаспаковки + "\" + ИмяФайлаПакера);
|
||
мПлатформа.ПолучитьМакет("Zlib1").Записать(ПутьРаспаковки + "\" + "Zlib1.dll");
|
||
ТекстовыйДокумент = Новый ТекстовыйДокумент;
|
||
ТекстовыйДокумент.УстановитьТекст("
|
||
|" + ИмяФайлаПакера + " -unpack %1 .\
|
||
|FOR %%I IN (*.data) DO " + ИмяФайлаПакера + " -undeflate %%I %%~nI.data.und
|
||
|FOR %%I IN (*.und) DO " + ИмяФайлаПакера + " -unpack %%I %%~nI.und.unp
|
||
|");
|
||
ТекстовыйДокумент.Записать(ПутьРаспаковки + "\" + "unpack.bat", КодировкаТекста.ANSI);
|
||
ирОбщий.ЗапуститьСкрытоеПриложениеИДождатьсяЗавершенияЛкс("unpack.bat """ + ПолноеИмяФайла + """", ПутьРаспаковки);
|
||
|
||
КонецПроцедуры // РаспаковатьВнешнююОбработку()
|
||
|
||
Процедура ЗаполнитьТаблицы(Кнопка = Неопределено)
|
||
|
||
|
||
ЗаполнитьВсе();
|
||
|
||
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
|
||
Процедура ОсновныеДействияФормыСохранитьТаблицы(Кнопка)
|
||
|
||
Если ТаблицаКонтекстов.Количество() = 0 Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
Если Не ЗначениеЗаполнено(Каталог) Тогда
|
||
ирОбщий.СообщитьЛкс("Необходимо указать каталог");
|
||
Возврат;
|
||
КонецЕсли;
|
||
СтруктураФайлов = ПолучитьСтрукутруФайлов();
|
||
Для Каждого КлючИЗначение Из СтруктураФайлов Цикл
|
||
Файл = Новый Файл(Каталог + "\" + КлючИЗначение.Ключ + ".txt");
|
||
ЗначениеВФайл(Файл.ПолноеИмя, КлючИЗначение.Значение);
|
||
КонецЦикла;
|
||
ЭтаФорма.Модифицированность = Ложь;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ПолучитьСтрукутруФайлов()
|
||
|
||
СтруктураФайлов = Новый Структура;
|
||
СтруктураТаблиц = Новый Структура;
|
||
СтруктураТаблиц.Вставить("ТаблицаИменЭлементовКоллекций", ТаблицаИменЭлементовКоллекций);
|
||
СтруктураТаблиц.Вставить("ТаблицаРасширений", ТаблицаРасширений);
|
||
СтруктураТаблиц.Вставить("СловаЯзыкаЗапросов", СловаЯзыкаЗапросов);
|
||
СтруктураФайлов.Вставить("ТаблицаИменЭлементовКоллекций", СтруктураТаблиц);
|
||
СтруктураТаблиц = Новый Структура;
|
||
СтруктураТаблиц.Вставить("ТаблицаКонтекстов", ТаблицаКонтекстов);
|
||
СтруктураТаблиц.Вставить("ТаблицаШаблоновКонтекстов", ТаблицаШаблоновКонтекстов);
|
||
СтруктураТаблиц.Вставить("ТаблицаПараметров", ТаблицаПараметров);
|
||
СтруктураФайлов.Вставить("ТаблицаМетодовИСвойств", СтруктураТаблиц);
|
||
СтруктураТаблиц = Новый Структура;
|
||
СтруктураТаблиц.Вставить("ТаблицаОбщихТипов", ТаблицаОбщихТипов);
|
||
СтруктураФайлов.Вставить("ТаблицаОбщихТипов", СтруктураТаблиц);
|
||
Возврат СтруктураФайлов;
|
||
|
||
КонецФункции
|
||
|
||
|
||
Процедура ОсновныеДействияФормыЗагрузитьТаблицы(Кнопка)
|
||
|
||
СтруктураФайлов = ПолучитьСтрукутруФайлов();
|
||
Для Каждого КлючИЗначение Из СтруктураФайлов Цикл
|
||
Файл = Новый Файл(Каталог + "\" + КлючИЗначение.Ключ + ".txt");
|
||
Если Не Файл.Существует() Тогда
|
||
ирОбщий.СообщитьЛкс("Не найден файл """ + Файл.ПолноеИмя + """");
|
||
Возврат;
|
||
КонецЕсли;
|
||
СтруктураФайлов[КлючИЗначение.Ключ] = ЗначениеИзФайла(Файл.ПолноеИмя);
|
||
КонецЦикла;
|
||
ЭтаФорма.Модифицированность = Истина;
|
||
ЗагрузитьТаблицыИзСтруктурыФайлов(СтруктураФайлов);
|
||
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ЗагрузитьТаблицыИзСтруктурыФайлов(Знач СтруктураФайлов)
|
||
|
||
Перем СтруктураТаблиц;
|
||
|
||
СтруктураТаблиц = СтруктураФайлов.ТаблицаИменЭлементовКоллекций;
|
||
ТаблицаИменЭлементовКоллекций = СтруктураТаблиц.ТаблицаИменЭлементовКоллекций;
|
||
ТаблицаРасширений = СтруктураТаблиц.ТаблицаРасширений;
|
||
Попытка
|
||
СловаЯзыкаЗапросов = СтруктураТаблиц.СловаЯзыкаЗапросов;
|
||
Исключение
|
||
// Раньше не было
|
||
КонецПопытки;
|
||
Если ТаблицаИменЭлементовКоллекций.Колонки.Найти("ИмяОбщегоТипа") = Неопределено Тогда
|
||
ТаблицаИменЭлементовКоллекций.Колонки.Добавить("ИмяОбщегоТипа", Новый ОписаниеТипов("Строка"));
|
||
КонецЕсли;
|
||
|
||
ТаблицаКонтекстов.Очистить();
|
||
ТаблицаШаблоновКонтекстов.Очистить();
|
||
ТаблицаОбщихТипов.Очистить();
|
||
ТаблицаПараметров.Очистить();
|
||
СтруктураТаблиц = СтруктураФайлов.ТаблицаМетодовИСвойств;
|
||
ирОбщий.ЗагрузитьВТаблицуЗначенийЛкс(СтруктураТаблиц.ТаблицаКонтекстов, ТаблицаКонтекстов);
|
||
ирОбщий.ЗагрузитьВТаблицуЗначенийЛкс(СтруктураТаблиц.ТаблицаШаблоновКонтекстов, ТаблицаШаблоновКонтекстов);
|
||
|
||
ирОбщий.ЗагрузитьВТаблицуЗначенийЛкс(СтруктураТаблиц.ТаблицаПараметров, ТаблицаПараметров);
|
||
СтруктураТаблиц = СтруктураФайлов.ТаблицаОбщихТипов;
|
||
ирОбщий.ЗагрузитьВТаблицуЗначенийЛкс(СтруктураТаблиц.ТаблицаОбщихТипов, ТаблицаОбщихТипов);
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
|
||
Процедура ТаблицаКонтекстовВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
|
||
|
||
ирОбщий.ОткрытьСтраницуСинтаксПомощникаЛкс(ВыбраннаяСтрока.ПутьКОписанию);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КаталогНачалоВыбора(Элемент, СтандартнаяОбработка)
|
||
|
||
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
|
||
ВыборФайла.Каталог = Элемент.Значение;
|
||
Если Не ВыборФайла.Выбрать() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
Элемент.Значение = ВыборФайла.Каталог;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОсновныеДействияФормыОбновитьПодсистему(Кнопка)
|
||
|
||
Если Ложь
|
||
Или ирКэш.ЛиПортативныйРежимЛкс()
|
||
Или ирКэш.ЛиЭтоРасширениеКонфигурацииЛкс()
|
||
Тогда
|
||
ирОбщий.СообщитьЛкс("Обновление подсистемы поддерживается только для встроенного варианта (метаданных в составе конфигурации)");
|
||
Возврат;
|
||
КонецЕсли;
|
||
Ответ = Вопрос("Заполнить таблицы из описания платформы перед обновлением конфигурации?", РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Да);
|
||
Если Ответ = КодВозвратаДиалога.Да Тогда
|
||
ЗаполнитьТаблицы();
|
||
КонецЕсли;
|
||
СтруктураФайлов = ПолучитьСтрукутруФайлов();
|
||
ТекстовыйДокумент = Новый ТекстовыйДокумент;
|
||
ТекстСпискаОбъектовКонфигурации = "";
|
||
//ТекстСпискаОбъектовКонфигурации = ТекстСпискаОбъектовКонфигурации + Метаданные.ПолноеИмя() + Символы.ПС;
|
||
// Порядок следования имен объектов в файле играет роль. В 8.3.10 если сначала идет имя обработки, а потом имена макетов, то макеты не выгружаются
|
||
Для Каждого КлючИЗначение Из СтруктураФайлов Цикл
|
||
ТекстСпискаОбъектовКонфигурации = ТекстСпискаОбъектовКонфигурации + Метаданные.Обработки.ирПлатформа.Макеты[КлючИЗначение.Ключ].ПолноеИмя() + Символы.ПС;
|
||
КонецЦикла;
|
||
//ТекстСпискаОбъектовКонфигурации = ТекстСпискаОбъектовКонфигурации + Метаданные.Обработки.ирПлатформа.ПолноеИмя() + Символы.ПС;
|
||
ИмяФайлаСпискаВыгрузки = ПолучитьИмяВременногоФайла("txt");
|
||
ТекстовыйДокумент.УстановитьТекст(ТекстСпискаОбъектовКонфигурации);
|
||
ТекстовыйДокумент.Записать(ИмяФайлаСпискаВыгрузки);
|
||
КаталогВыгрузкиКонфигурации = ПолучитьИмяВременногоФайла();
|
||
СоздатьКаталог(КаталогВыгрузкиКонфигурации);
|
||
ТекстЛога = "";
|
||
Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/DumpConfigToFiles """ + КаталогВыгрузкиКонфигурации + """ -listFile """ + ИмяФайлаСпискаВыгрузки + """ -Format Plain",
|
||
СтрокаСоединенияИнформационнойБазы(), ТекстЛога, , "Выгрузка конфигурации в файлы");
|
||
УдалитьФайлы(ИмяФайлаСпискаВыгрузки);
|
||
Если Не Успех Тогда
|
||
УдалитьФайлы(КаталогВыгрузкиКонфигурации);
|
||
ирОбщий.СообщитьЛкс(ТекстЛога);
|
||
Возврат;
|
||
КонецЕсли;
|
||
Для Каждого КлючИЗначение Из СтруктураФайлов Цикл
|
||
НайденныеФайлы = НайтиФайлы(КаталогВыгрузкиКонфигурации, "*." + КлючИЗначение.Ключ + ".*.txt");
|
||
Если НайденныеФайлы.Количество() > 1 Тогда
|
||
ВызватьИсключение "Найдено более 1 файла для макета " + КлючИЗначение.Ключ;
|
||
ИначеЕсли НайденныеФайлы.Количество() = 0 Тогда
|
||
ВызватьИсключение "Не найдено файлов для макета " + КлючИЗначение.Ключ;
|
||
КонецЕсли;
|
||
ФайлМакета = НайденныеФайлы[0];
|
||
ЗначениеВФайл(ФайлМакета.ПолноеИмя, КлючИЗначение.Значение);
|
||
КонецЦикла;
|
||
ФайлыДляЗагрузки = НайтиФайлы(КаталогВыгрузкиКонфигурации, "*.xml");
|
||
ТекстовыйДокумент.Очистить();
|
||
Для Каждого Файл Из ФайлыДляЗагрузки Цикл
|
||
ТекстовыйДокумент.ДобавитьСтроку(Файл.ПолноеИмя);
|
||
КонецЦикла;
|
||
ИмяФайлаСпискаЗагрузки = ПолучитьИмяВременногоФайла("txt");
|
||
ТекстовыйДокумент.Записать(ИмяФайлаСпискаЗагрузки);
|
||
Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/LoadConfigFromFiles """ + КаталогВыгрузкиКонфигурации + """ -listFile """ + ИмяФайлаСпискаЗагрузки + """ -Format Plain",
|
||
СтрокаСоединенияИнформационнойБазы(), ТекстЛога,, "Загрузка конфигурации из файлов");
|
||
УдалитьФайлы(ИмяФайлаСпискаЗагрузки);
|
||
УдалитьФайлы(КаталогВыгрузкиКонфигурации);
|
||
Если Не Успех Тогда
|
||
ирОбщий.СообщитьЛкс(ТекстЛога);
|
||
КонецЕсли;
|
||
ирОбщий.СообщитьЛкс("Теперь выполните обновление конфигурации БД");
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПриОткрытии()
|
||
|
||
СтруктураФайлов = ПолучитьСтрукутруФайлов();
|
||
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt");
|
||
Для Каждого КлючИЗначение Из СтруктураФайлов Цикл
|
||
мПлатформа.ПолучитьМакет(КлючИЗначение.Ключ).Записать(ИмяВременногоФайла);
|
||
СтруктураФайлов[КлючИЗначение.Ключ] = ЗначениеИзФайла(ИмяВременногоФайла);
|
||
КонецЦикла;
|
||
УдалитьФайлы(ИмяВременногоФайла);
|
||
ЗагрузитьТаблицыИзСтруктурыФайлов(СтруктураФайлов);
|
||
Каталог = ирОбщий.ВосстановитьЗначениеЛкс("ирОбновлениеОписанияПлатформы_Каталог");
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанель1СтруктураФормы(Кнопка)
|
||
|
||
ирОбщий.ОткрытьСтруктуруФормыЛкс(ЭтаФорма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанель1ОткрытьТаблицу(Кнопка)
|
||
|
||
Если ТипЗнч(ТекущийЭлемент) <> Тип("ТабличноеПоле") Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ирОбщий.ОткрытьЗначениеЛкс(ТекущийЭлемент.Значение, Ложь,,,,, ТекущийЭлемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПриЗакрытии()
|
||
|
||
ирОбщий.СохранитьЗначениеЛкс("ирОбновлениеОписанияПлатформы_Каталог", Каталог);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанель1Сравнить(Кнопка)
|
||
|
||
Если ТипЗнч(ТекущийЭлемент) <> Тип("ТабличноеПоле") Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ирОбщий.СравнитьСодержимоеЭлементаУправленияЛкс(ЭтаФорма, ТекущийЭлемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КаталогОткрытие(Элемент, СтандартнаяОбработка)
|
||
|
||
СтандартнаяОбработка = Ложь;
|
||
ЗапуститьПриложение(Каталог);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ТаблицаШаблоновКонтекстовПриАктивизацииСтроки(Элемент)
|
||
|
||
ирОбщий.ТабличноеПолеПриАктивизацииСтрокиЛкс(ЭтаФорма, Элемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ТаблицаКонтекстовПриАктивизацииСтроки(Элемент)
|
||
|
||
ирОбщий.ТабличноеПолеПриАктивизацииСтрокиЛкс(ЭтаФорма, Элемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ТаблицаПараметровПриАктивизацииСтроки(Элемент)
|
||
|
||
ирОбщий.ТабличноеПолеПриАктивизацииСтрокиЛкс(ЭтаФорма, Элемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ТаблицаОбщихТиповПриАктивизацииСтроки(Элемент)
|
||
|
||
ирОбщий.ТабличноеПолеПриАктивизацииСтрокиЛкс(ЭтаФорма, Элемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанель1МенеджерТабличногоПоля(Кнопка)
|
||
|
||
Если ТипЗнч(ТекущийЭлемент) <> Тип("ТабличноеПоле") Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ирОбщий.ОткрытьМенеджерТабличногоПоляЛкс(ТекущийЭлемент, ЭтаФорма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ВнешнееСобытие(Источник, Событие, Данные) Экспорт
|
||
|
||
ирОбщий.Форма_ВнешнееСобытиеЛкс(ЭтаФорма, Источник, Событие, Данные);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ТаблицаШаблоновКонтекстовПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
|
||
|
||
ирОбщий.ТабличноеПолеПриВыводеСтрокиЛкс(ЭтаФорма, Элемент, ОформлениеСтроки, ДанныеСтроки);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ТаблицаКонтекстовПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
|
||
|
||
ирОбщий.ТабличноеПолеПриВыводеСтрокиЛкс(ЭтаФорма, Элемент, ОформлениеСтроки, ДанныеСтроки);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ТаблицаПараметровПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
|
||
|
||
ирОбщий.ТабличноеПолеПриВыводеСтрокиЛкс(ЭтаФорма, Элемент, ОформлениеСтроки, ДанныеСтроки);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ТаблицаОбщихТиповПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
|
||
|
||
ирОбщий.ТабличноеПолеПриВыводеСтрокиЛкс(ЭтаФорма, Элемент, ОформлениеСтроки, ДанныеСтроки);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ТаблицаРасширенийПриАктивизацииСтроки(Элемент)
|
||
ирОбщий.ТабличноеПолеПриАктивизацииСтрокиЛкс(ЭтаФорма, Элемент);
|
||
КонецПроцедуры
|
||
|
||
Процедура ТаблицаИменЭлементовКоллекцийПриАктивизацииСтроки(Элемент)
|
||
ирОбщий.ТабличноеПолеПриАктивизацииСтрокиЛкс(ЭтаФорма, Элемент);
|
||
КонецПроцедуры
|
||
|
||
Процедура ТаблицаРасширенийПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
|
||
ирОбщий.ТабличноеПолеПриВыводеСтрокиЛкс(ЭтаФорма, Элемент, ОформлениеСтроки, ДанныеСтроки);
|
||
КонецПроцедуры
|
||
|
||
Процедура ТаблицаИменЭлементовКоллекцийПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
|
||
ирОбщий.ТабличноеПолеПриВыводеСтрокиЛкс(ЭтаФорма, Элемент, ОформлениеСтроки, ДанныеСтроки);
|
||
КонецПроцедуры
|
||
|
||
мПлатформа = ирКэш.Получить();
|
||
RegExp = ирОбщий.НовыйВычислительРегВыражений();
|
||
|
||
RegExp2 = ирОбщий.НовыйВычислительРегВыражений();
|
||
|
||
|
||
|