mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 05:04:11 +00:00
2108 lines
152 KiB
Plaintext
2108 lines
152 KiB
Plaintext
Перем RegExp;
|
||
Перем RegExp2;
|
||
|
||
Перем СоответствиеЗамены;
|
||
Перем шТип;
|
||
Перем типСтрока;
|
||
Перем ЗаменыВнешнихОбъектов;
|
||
Перем АрхивСинтаксПомощника;
|
||
Перем ИсполнительСкрытыхКомандСистемы;
|
||
Перем VBScript;
|
||
Перем ФайлРаспаковщикаZIP;
|
||
Перем мПлатформа;
|
||
|
||
Процедура ЗаполнитьСтрокуТипа(НоваяСтрока)
|
||
|
||
НоваяСтрока.БазовыйТип = ирОбщий.ПервыйФрагментЛкс(НоваяСтрока.Слово);
|
||
|
||
НоваяСтрока.ТипТипа = "Основной";
|
||
|
||
Если НоваяСтрока.ЯзыкПрограммы = 0 Тогда
|
||
МаркерПеречисления = "Перечисление";
|
||
|
||
Если Лев(НоваяСтрока.Слово, СтрДлина(МаркерПеречисления)) = МаркерПеречисления Тогда
|
||
ИмяСистемногоПеречисления = СтрЗаменить(НоваяСтрока.Слово, МаркерПеречисления, "");
|
||
|
||
Попытка
|
||
Если Строка(Вычислить(ИмяСистемногоПеречисления)) = "Перечисление" + ИмяСистемногоПеречисления Тогда
|
||
|
||
ДобавитьСвойствоГлобальногоКонтекста(НоваяСтрока, ИмяСистемногоПеречисления);
|
||
КонецЕсли;
|
||
|
||
Исключение
|
||
|
||
КонецПопытки;
|
||
КонецЕсли;
|
||
|
||
Если Ложь
|
||
Или Найти(НоваяСтрока.Слово, "<") > 0
|
||
Или Найти(НоваяСтрока.Слово, "ВнешняяОбработка") > 0
|
||
Или Найти(НоваяСтрока.Слово, "ВнешнийОтчет") > 0
|
||
Тогда
|
||
|
||
Представление = ирОбщий.ПолучитьПредставлениеИзИдентификатораЛкс(НоваяСтрока.БазовыйТип);
|
||
Иначе
|
||
Представление = НоваяСтрока.БазовыйТип;
|
||
КонецЕсли;
|
||
Идентификатор = "";
|
||
|
||
Если Истина
|
||
|
||
И Найти(НоваяСтрока.Слово, "<") = 0
|
||
|
||
И Найти(НоваяСтрока.Слово, " ") = 0
|
||
И Найти(НоваяСтрока.Слово, "ВнешняяОбработка") = 0
|
||
И Найти(НоваяСтрока.Слово, "ВнешнийОтчет") = 0
|
||
|
||
Тогда
|
||
|
||
Попытка
|
||
// Обычные типы
|
||
ЗначениеТип = Тип(НоваяСтрока.Слово);
|
||
Идентификатор = ирОбщий.СтрокаМеждуМаркерамиЛкс("" + ЗначениеВСтрокуВнутр(ЗначениеТип), ",", "}", Ложь);
|
||
Исключение
|
||
//ирОбщий.СообщитьЛкс("Неверное имя типа - " + НоваяСтрока.Слово);
|
||
|
||
//Представление = "*";
|
||
|
||
ЗначениеТип = НоваяСтрока.Слово;
|
||
Если НоваяСтрока.ТипТипа = "Основной" Тогда
|
||
НоваяСтрока.ТипТипа = "Расширение";
|
||
|
||
КонецЕсли;
|
||
КонецПопытки;
|
||
Представление = Строка(ЗначениеТип);
|
||
|
||
КонецЕсли;
|
||
НоваяСтрока.ИД = Идентификатор;
|
||
|
||
НоваяСтрока.Представление = Представление;
|
||
Иначе // НоваяСтрока.ЯзыкПрограммы = 1
|
||
Если Ложь
|
||
|
||
Или НоваяСтрока.БазовыйТип = "Константа"
|
||
|
||
Или НоваяСтрока.БазовыйТип = "Константы"
|
||
|
||
Тогда
|
||
|
||
НоваяСтрока.ТипТипа = "Расширение";
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
RegExp.Global = Ложь;
|
||
RegExp.Pattern = "<[^>]+>|([^<>]* [^<>]*)";
|
||
Результат = RegExp.Execute(НоваяСтрока.Слово);
|
||
Для Каждого Item Из Результат Цикл
|
||
Если Item.SubMatches(0) <> Неопределено Тогда
|
||
НоваяСтрока.ТипТипа = "Расширение";
|
||
Прервать;
|
||
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
НоваяСтрока.НСлово = НРег(НоваяСтрока.НСлово);
|
||
|
||
// Это другое расширение. Именно то, которое в документации имеется ввиду
|
||
Если ирОбщий.ПервыйФрагментЛкс(НоваяСтрока.Слово, " ") = "Расширение" Тогда
|
||
НоваяСтрокаРасширения = ТаблицаРасширений.Найти(НоваяСтрока.Слово, "Расширение");
|
||
Если НоваяСтрокаРасширения = Неопределено Тогда
|
||
НоваяСтрокаРасширения = ТаблицаРасширений.Добавить();
|
||
КонецЕсли;
|
||
Если Найти(НоваяСтрока.Слово, " формы ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "Форма";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " табличного поля ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "ТабличноеПоле";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " колонки ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "КолонкаТабличногоПоля";
|
||
ИначеЕсли Найти(НоваяСтрока.Слово, " поля ввода ") > 0 Тогда
|
||
НоваяСтрокаРасширения.ОсновнойТип = "ПолеВвода";
|
||
КонецЕсли;
|
||
НоваяСтрокаРасширения.Расширение = НоваяСтрока.Слово;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ДобавитьСвойствоГлобальногоКонтекста(Знач НоваяСтрока, Знач ИмяСвойства)
|
||
|
||
НоваяСтрока.ТипТипа = "Перечисление";
|
||
СтруктураКлюча = Новый Структура("Слово, ЯзыкПрограммы", ИмяСвойства, НоваяСтрока.ЯзыкПрограммы);
|
||
|
||
НайденныеСтроки = ТаблицаОбщихТипов.НайтиСтроки(СтруктураКлюча);
|
||
|
||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||
|
||
НоваяСтрокаТипа = ТаблицаОбщихТипов.Добавить();
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаТипа, НоваяСтрока);
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаТипа, СтруктураКлюча);
|
||
|
||
ЗаполнитьСтрокуТипа(НоваяСтрокаТипа);
|
||
НоваяСтрока.Представление = НоваяСтрока.БазовыйТип;
|
||
//НоваяСтрокаТипа.ПутьКОписанию = "";
|
||
|
||
КонецЕсли;
|
||
|
||
НоваяСтрокаКонтекста = ТаблицаКонтекстов.Добавить();
|
||
|
||
НоваяСтрокаКонтекста.ТипКонтекста = "Глобальный контекст";
|
||
|
||
НоваяСтрокаКонтекста.Слово = ИмяСвойства;
|
||
|
||
НоваяСтрокаКонтекста.ТипЗначения = НоваяСтрока.Слово;
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаКонтекста, НоваяСтрока, "ЯзыкПрограммы,ПутьКОписанию,НомерВерсииПлатформы");
|
||
|
||
НоваяСтрокаКонтекста.ТипСлова = "Свойство";
|
||
|
||
КонецПроцедуры // ЗаполнитьСтрокуТипа()
|
||
|
||
Процедура СкорректироватьКлючТипа(Структура)
|
||
|
||
|
||
Попытка
|
||
// Выполняется много раз!
|
||
|
||
Если Строка(Вычислить(Структура.Слово)) = "Перечисление" + Структура.Слово Тогда
|
||
|
||
Структура.Слово = "Перечисление" + Структура.Слово;
|
||
КонецЕсли;
|
||
|
||
Исключение
|
||
|
||
КонецПопытки;
|
||
|
||
|
||
|
||
КонецПроцедуры // СкорректироватьКлючТипа()
|
||
|
||
|
||
Процедура СкорректироватьЭлементыСтруктуры(Структура)
|
||
|
||
|
||
|
||
Перем СтрокаЗаменыИмениРегистра;
|
||
|
||
|
||
|
||
Для Каждого ЭлементСтруктуры Из Структура Цикл
|
||
|
||
Если ТипЗнч(ЭлементСтруктуры.Значение) <> типСтрока Тогда
|
||
|
||
Продолжить;
|
||
|
||
КонецЕсли;
|
||
|
||
Если Найти(ЭлементСтруктуры.Значение, "<Имя регистра>") > 0 Тогда
|
||
|
||
Если Найти(ЭлементСтруктуры.Значение, "РегистрСведений") > 0 Тогда
|
||
|
||
СтрокаЗаменыИмениРегистра = "<Имя регистра сведений>";
|
||
|
||
ИначеЕсли Найти(ЭлементСтруктуры.Значение, "РегистрНакопления") > 0 Тогда
|
||
|
||
СтрокаЗаменыИмениРегистра = "<Имя регистра накопления>";
|
||
|
||
КонецЕсли;
|
||
|
||
Прервать;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
|
||
|
||
Для Каждого ЭлементСтруктуры Из Структура Цикл
|
||
|
||
ЗначениеЭлемента = ЭлементСтруктуры.Значение;
|
||
|
||
Если ТипЗнч(ЗначениеЭлемента) <> типСтрока Тогда
|
||
|
||
Продолжить;
|
||
|
||
КонецЕсли;
|
||
|
||
Если Истина
|
||
|
||
И Структура.Свойство("ЯзыкПрограммы")
|
||
|
||
И Структура.ЯзыкПрограммы = 1
|
||
|
||
И ЗначениеЭлемента <> "Ссылка"
|
||
|
||
Тогда
|
||
|
||
ЗначениеЭлемента = СтрЗаменить(ЗначениеЭлемента, "Ссылка", "");
|
||
|
||
КонецЕсли;
|
||
|
||
Если СтрокаЗаменыИмениРегистра <> Неопределено Тогда
|
||
|
||
ЗначениеЭлемента = СтрЗаменить(ЗначениеЭлемента, "<Имя регистра>", СтрокаЗаменыИмениРегистра);
|
||
|
||
КонецЕсли;
|
||
// Выполняется много раз!
|
||
|
||
Для Каждого ЭлементЗамены Из СоответствиеЗамены Цикл
|
||
|
||
ЗначениеЭлемента = СтрЗаменить(ЗначениеЭлемента, ЭлементЗамены.Ключ, ЭлементЗамены.Значение);
|
||
|
||
КонецЦикла;
|
||
Если Найти(ЗначениеЭлемента, "<") = 0 Тогда
|
||
СтароеЗначениеЭлемента = ЗначениеЭлемента;
|
||
Для Каждого СтрокаЗамены Из ЗаменыВнешнихОбъектов Цикл
|
||
ЗначениеЭлемента = СтрЗаменить(ЗначениеЭлемента, СтрокаЗамены.Образец, СтрокаЗамены.Замена);
|
||
Если СтароеЗначениеЭлемента <> ЗначениеЭлемента Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Структура[ЭлементСтруктуры.Ключ] = ЗначениеЭлемента;
|
||
|
||
КонецЦикла;
|
||
|
||
|
||
|
||
КонецПроцедуры // СкорректироватьКлючТипа()
|
||
|
||
|
||
Функция ЗаменитьТегиУгловыхСкобок(Строка)
|
||
|
||
Строка = СокрЛП(Строка);
|
||
Строка = СтрЗаменить(Строка, "<", "<");
|
||
Результат = СтрЗаменить(Строка, ">", ">");
|
||
// **** пробный режим для ускорения
|
||
//RegExp.Global = Истина;
|
||
|
||
//RegExp.Pattern = "([^&]+)<([^&]+)>";
|
||
|
||
//Результат = RegExp.Replace(Строка, "$1<$2>");
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции // ЗаменитьТегиУгловыхСкобок()
|
||
|
||
// Получает массив имен всех примитивных типов.
|
||
//
|
||
// Параметры:
|
||
// Нет.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Массив – имен типов.
|
||
//
|
||
Функция ПолучитьПримитивныеТипыЛкс(Имена = Ложь) Экспорт
|
||
|
||
МассивИменТипов = Новый Массив;
|
||
МассивИменТипов.Добавить("Null");
|
||
МассивИменТипов.Добавить("Неопределено");
|
||
МассивИменТипов.Добавить("Число");
|
||
МассивИменТипов.Добавить("Строка");
|
||
МассивИменТипов.Добавить("Дата");
|
||
МассивИменТипов.Добавить("Булево");
|
||
МассивИменТипов.Добавить("Тип");
|
||
Если Имена Тогда
|
||
МассивТипов = МассивИменТипов;
|
||
Иначе
|
||
МассивТипов = Новый Массив;
|
||
Для Каждого ИмяТипа Из МассивИменТипов Цикл
|
||
МассивТипов.Добавить(Тип(ИмяТипа));
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Возврат МассивТипов;
|
||
|
||
КонецФункции // ЛксПолучитьПримитивныеТипы()
|
||
|
||
Процедура ЗаполнитьСтатическое()
|
||
|
||
ТаблицаИменЭлементовКоллекций.Очистить();
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Структура";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя ключа>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ФиксированнаяСтруктура";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя ключа>";
|
||
НоваяСтрока.ИмяОбщегоТипа = "ФиксированнаяСтруктура";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Рисунки";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя рисунка>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ВидыСубконто";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя вида субконто>";
|
||
|
||
// Тут не совсем прямо, т.к. у метаданного нет такой коллекции =(
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ВнешниеОбработки";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя внешней обработки>";
|
||
|
||
// Тут не совсем прямо, т.к. у метаданного нет такой коллекции =(
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ВнешниеОтчеты";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя внешнего отчета>";
|
||
|
||
// Тут не совсем прямо, т.к. у метаданного нет такой коллекции =(
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ТочкиМаршрута";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя точки маршрута бизнес-процесса>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Области";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя области>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ПризнакиУчетаСубконто";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя флага учета субконто>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Параметры";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя параметра>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "УсловноеОформление";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя элемента оформления>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ВидыСубконто";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Номер субконто>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Индексы";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя индекса>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Источники";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя источника>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Колонки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя колонки>";
|
||
|
||
//НоваяСтрока.ИмяОбщегоТипа = "СтрокаТаблицыЗначений"; // было закомментировано
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ОформленияЯчеек";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя колонки>";
|
||
НоваяСтрока.ИмяОбщегоТипа = "Ячейки";
|
||
|
||
// Заглушка
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Колонки";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя колонки списка>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Поля";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя поля>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Свойства";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя свойства>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Методы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя метода>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ОбщиеМодули";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя общего модуля>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ТабличныеЧасти";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя табличной части>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Реквизиты";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя реквизита>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Ресурсы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя ресурса>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Измерения";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя измерения>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "РеквизитыАдресации";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя реквизита адресации>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ЗначенияПеречисления";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя значения перечисления>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Графы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя графы журнала>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Перерасчеты";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя перерасчета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Формы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя формы>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Стили";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя стиля>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ЭлементыСтиля";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя элемента стиля>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Отбор";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя элемента отбора>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "НастройкаОформления";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя настройки>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Движения";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя регистра>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Картинки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя картинки>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "РегистрыСведений";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя регистра сведений>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "РегистрыРасчета";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя регистра расчета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "РегистрыНакопления";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя регистра накопления>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "РегистрыБухгалтерии";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя регистра бухгалтерии>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Справочники";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя справочника>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Документы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя документа>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПланыВидовХарактеристик";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя плана видов характеристик>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПланыВидовРасчета";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя плана видов расчета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПланыСчетов";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя плана счетов>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПризнакиУчета";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя признака учета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПланыОбмена";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя плана обмена>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Константы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя константы>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "БизнесПроцессы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя бизнес-процесса>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Задачи";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя задачи>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Обработки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя обработки>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Отчеты";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя отчета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ЖурналыДокументов";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя журнала документов>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Перечисления";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя перечисления>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Операции";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя операции>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Макеты";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя макета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Последовательности";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя последовательности>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "КритерииОтбора";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя критерия отбора>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Интерфейсы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя интерфейса>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ОбщиеМакеты";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя общего макета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ОбщиеФормы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя общей формы>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "НумераторыДокументов";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя нумератора документов>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "WebСервисы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя WebСервиса>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "WSСсылки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя WS-Ссылки>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Подсистемы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя подсистемы>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Роли";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя роли>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПараметрыСеанса";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя параметра сеанса>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПакетыXDTO";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя ПакетаXDTO>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ОбщиеКартинки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя общей картинки>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "РегламентныеЗадания";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя регламентного задания>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ПодпискиНаСобытия";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя подписки на событие>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Языки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя языка>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Предопределенные";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя предопределенного элемента справочника>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Предопределенные";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя предопределенного вида характеристик>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Предопределенные";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя предопределенного счета>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Предопределенные";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя предопределенного объекта>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ЭлементыФормы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя элемента управления>";
|
||
НоваяСтрока.ИмяОбщегоТипа = "ЭлементыФормы";
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Элементы";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя элемента управления>";
|
||
НоваяСтрока.ИмяОбщегоТипа = "ВсеЭлементыФормы";
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Страницы";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя страницы>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "Кнопки";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя кнопки>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "ВстроенныеТаблицы";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя встроенной таблицы>";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
|
||
НоваяСтрока.ИмяКоллекции = "<Имя коллекции метаданных>";
|
||
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя объекта описания метаданного>";
|
||
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "<Имя общего модуля>"; // Несуществующее
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя процедуры или функции>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "События";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя события>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ВнешниеИсточникиДанных";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя внешнего источника>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Таблицы";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя таблицы внешнего источника данных>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ОбщиеРеквизиты";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя общего реквизита>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Таблицы";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя таблицы>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "ТаблицыИзмерений";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя таблицы измерения>";
|
||
|
||
НоваяСтрока = ТаблицаИменЭлементовКоллекций.Добавить();
|
||
НоваяСтрока.ИмяКоллекции = "Кубы";
|
||
НоваяСтрока.ИмяЭлементаКоллекции = "<Имя куба>";
|
||
|
||
КонецПроцедуры // ЗаполнитьСтатическое()
|
||
|
||
Процедура ЗаполнитьВсе()
|
||
|
||
ЭтаФорма.Модифицированность = Истина;
|
||
//Если СловаЯзыкаЗапросов.Количество() = 0 Тогда
|
||
// Предупреждение("Сначала необходимо загрузить данные ручного ввода");
|
||
// Возврат;
|
||
//КонецЕсли;
|
||
ТаблицаКонтекстов.Очистить();
|
||
|
||
ТаблицаШаблоновКонтекстов.Очистить();
|
||
|
||
ТаблицаОбщихТипов.Очистить();
|
||
ТаблицаПараметров.Очистить();
|
||
|
||
|
||
ЗаполнитьСтатическое();
|
||
|
||
|
||
// Добавим функции языка запросов
|
||
|
||
//Список = Новый СписокЗначений;
|
||
|
||
//Список.Добавить("СУММА", "Число");
|
||
|
||
//Список.Добавить("МАКСИМУМ", "Произвольный");
|
||
|
||
//Список.Добавить("МИНИМУМ", "Произвольный");
|
||
|
||
//Список.Добавить("ЗНАЧЕНИЕ", "Произвольный");
|
||
|
||
//Список.Добавить("СРЕДНЕЕ", "Число");
|
||
|
||
//Список.Добавить("КОЛИЧЕСТВО", "Число");
|
||
|
||
//Список.Добавить("ВЫРАЗИТЬ", "Произвольный");
|
||
|
||
//Список.Добавить("ЕСТЬNULL", "Произвольный");
|
||
|
||
//Список.Добавить("ПРЕДСТАВЛЕНИЕ", "Строка");
|
||
|
||
//Список.Добавить("ПРЕДСТАВЛЕНИЕССЫЛКИ", "Строка");
|
||
|
||
//Список.Добавить("ПОДСТРОКА", "Строка");
|
||
|
||
//Список.Добавить("РАЗНОСТЬДАТ", "Число");
|
||
|
||
//Список.Добавить("ДАТАВРЕМЯ", "Дата");
|
||
|
||
//Список.Добавить("НАЧАЛОПЕРИОДА", "Дата");
|
||
|
||
//Список.Добавить("КОНЕЦПЕРИОДА", "Дата");
|
||
|
||
//Список.Добавить("ДЕНЬНЕДЕЛИ", "Число");
|
||
|
||
//Список.Добавить("ЧАС", "Число");
|
||
|
||
//Список.Добавить("МИНУТА", "Число");
|
||
|
||
//Список.Добавить("СЕКУНДА", "Число");
|
||
|
||
//Список.Добавить("МЕСЯЦ", "Число");
|
||
|
||
//Список.Добавить("ДЕНЬГОДА", "Число");
|
||
|
||
//Список.Добавить("НЕДЕЛЯ", "Число");
|
||
|
||
//Список.Добавить("ДЕНЬНЕДЕЛИ", "Число");
|
||
|
||
//Список.Добавить("ГОД", "Число");
|
||
|
||
//Список.Добавить("КВАРТАЛ", "Число");
|
||
//Список.Добавить("ДОБАВИТЬКДАТЕ", "Дата");
|
||
|
||
|
||
//// Добавим ключевые слова встроенного языка
|
||
//Список = Новый Массив;
|
||
|
||
//Список.Добавить("Не");
|
||
|
||
//Список.Добавить("И");
|
||
|
||
//Список.Добавить("Или");
|
||
|
||
//Список.Добавить("По");
|
||
|
||
//Список.Добавить("Экспорт");
|
||
|
||
//Список.Добавить("Перем");
|
||
|
||
//Список.Добавить("Процедура");
|
||
|
||
//Список.Добавить("КонецПроцедуры");
|
||
|
||
//Список.Добавить("Функция");
|
||
|
||
//Список.Добавить("КонецФункции");
|
||
|
||
//Список.Добавить("Возврат");
|
||
|
||
//Список.Добавить("Перейти");
|
||
//Список.Добавить("Для");
|
||
|
||
//Список.Добавить("Каждого");
|
||
|
||
//Список.Добавить("Из");
|
||
|
||
//Список.Добавить("Цикл");
|
||
|
||
//Список.Добавить("КонецЦикла");
|
||
|
||
//Список.Добавить("Пока");
|
||
|
||
//Список.Добавить("Прервать");
|
||
|
||
//Список.Добавить("Продолжить");
|
||
|
||
//Список.Добавить("Если");
|
||
|
||
//Список.Добавить("Тогда");
|
||
|
||
//Список.Добавить("Иначе");
|
||
|
||
//Список.Добавить("ИначеЕсли");
|
||
|
||
//Список.Добавить("КонецЕсли");
|
||
|
||
//Список.Добавить("Попытка");
|
||
|
||
//Список.Добавить("Исключение");
|
||
|
||
//Список.Добавить("КонецПопытки");
|
||
|
||
//Список.Добавить("ВызватьИсключение");
|
||
|
||
//Список.Добавить("Выполнить");
|
||
//Список.Добавить("Новый");
|
||
|
||
|
||
//Для Каждого КлючевоеСлово Из Список Цикл
|
||
|
||
// НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
|
||
// НоваяСтрока.Слово = КлючевоеСлово;
|
||
|
||
// НоваяСтрока.ТипКонтекста = "Общее";
|
||
|
||
// НоваяСтрока.ТипСлова = "Конструкция";
|
||
|
||
//КонецЦикла;
|
||
|
||
|
||
|
||
// Добавим специальные шаблоны
|
||
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
|
||
НоваяСтрока.Слово = "<Имя свойства>";
|
||
|
||
НоваяСтрока.ТипКонтекста = "COMОбъект";
|
||
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
|
||
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
|
||
НоваяСтрока.Слово = "<Имя метода>";
|
||
|
||
НоваяСтрока.ТипКонтекста = "COMОбъект";
|
||
|
||
НоваяСтрока.ТипСлова = "Метод";
|
||
|
||
|
||
// На это просто забили в синтакс-помощнике
|
||
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
НоваяСтрока.Слово = "<Имя страницы>";
|
||
НоваяСтрока.ТипКонтекста = "СтраницыПанели";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "СтраницаПанели";
|
||
|
||
ТаблицаКорневыхОбъектовКонфигурации = ирКэш.Получить().ПолучитьТаблицуТиповМетаОбъектов(Ложь, Ложь);
|
||
|
||
РабочийКаталог = ПолучитьИмяВременногоФайла();
|
||
СоздатьКаталог(РабочийКаталог);
|
||
ФайлРаспаковщикаZIP = мПлатформа.ПолучитьФайлРаспаковщикаZIP(Истина);
|
||
|
||
// Синтакс-помощник для языка запросов
|
||
МаркерЯзыкаЗапросов = "//shquery_ru";
|
||
Для Каждого СтрокаСлова Из СловаЯзыкаЗапросов Цикл
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаСлова);
|
||
НоваяСтрока.Слово = СтрокаСлова.СловоЗапроса;
|
||
НоваяСтрока.ТипКонтекста = "Глобальный контекст";
|
||
Если Ложь
|
||
Или Найти(НоваяСтрока.ПутьКОписанию, МаркерЯзыкаЗапросов) = 1
|
||
Или СтрокаСлова.ПутьКОписанию = "//dcsui_ru/SKD_CharacteristicTypes" // Антибаг платформы http://partners.v8.1c.ru/forum/thread.jsp?id=997975#997975
|
||
Тогда
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
Иначе
|
||
НоваяСтрока.ЯзыкПрограммы = 2;
|
||
КонецЕсли;
|
||
Если НРег(НоваяСтрока.ТипСлова) = НРег("Метод") Тогда
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаПараметра, НоваяСтрока, "ТипКонтекста, Слово, ЯзыкПрограммы");
|
||
НоваяСтрокаПараметра.Параметр = "";
|
||
НоваяСтрокаПараметра.Номер = 1;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
// Синтакс-помощник для языка выражений компоновки
|
||
ИмяКниги = "dcsui_ru";
|
||
ФайлАрхиваДанных = мПлатформа.ПолучитьАрхивСинтаксПомощникаПоИмени(, ИмяКниги);
|
||
мПлатформа.ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(ФайлРаспаковщикаZIP.Имя + " -o " + ФайлАрхиваДанных.ПолноеИмя + " -d " + РабочийКаталог);
|
||
ИменаФайлов = Новый Структура;
|
||
ИменаФайлов.Вставить("SKD_Functions", "Метод");
|
||
ИменаФайлов.Вставить("SKD_AgregOperation", "Метод");
|
||
Хтмл = Новый COMОбъект("HtmlFile");
|
||
ТекстовыйДокумент = Новый ТекстовыйДокумент;
|
||
Для Каждого КлючИЗначение Из ИменаФайлов Цикл
|
||
ИмяФайлаСтраницы = КлючИЗначение.Ключ;
|
||
ТекстовыйДокумент.Прочитать(РабочийКаталог + "\" + ИмяФайлаСтраницы);
|
||
Хтмл.open("text/html");
|
||
Хтмл.write(ТекстовыйДокумент.ПолучитьТекст());
|
||
Хтмл.close();
|
||
ТегиСсылок = Хтмл.GetElementsByTagName("a");
|
||
Для Каждого ТегСсылки Из ТегиСсылок Цикл
|
||
МассивФрагментов = ирОбщий.СтрРазделитьЛкс(ТегСсылки.href, "#");
|
||
Если МассивФрагментов[0] = "about:blank" Тогда
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "Глобальный контекст";
|
||
НоваяСтрока.ЯзыкПрограммы = 2;
|
||
НоваяСтрока.ТипСлова = КлючИЗначение.Значение;
|
||
НоваяСтрока.Слово = ТегСсылки.textContent;
|
||
НоваяСтрока.ПутьКОписанию = "//" + ИмяКниги + "/" + ИмяФайлаСтраницы + "#" + МассивФрагментов[1];
|
||
Если НРег(НоваяСтрока.ТипСлова) = НРег("Метод") Тогда
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаПараметра, НоваяСтрока, "ТипКонтекста, Слово, ЯзыкПрограммы");
|
||
НоваяСтрокаПараметра.Параметр = "";
|
||
НоваяСтрокаПараметра.Номер = 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.Execute(ИндексОписания);
|
||
Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(Результат.Count, "Обработка синтакс-помощника");
|
||
Для Каждого Item Из Результат Цикл
|
||
ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
|
||
|
||
Если Item.SubMatches(4) <> Неопределено Тогда
|
||
НовоеСлово = Item.SubMatches(4);
|
||
Иначе
|
||
НовоеСлово = Item.SubMatches(2);
|
||
КонецЕсли;
|
||
ПутьКОписанию = Item.SubMatches(5);
|
||
|
||
НРегПуть = НРег(ПутьКОписанию);
|
||
|
||
ПутьКОписаниюКонтекста = "";
|
||
|
||
ТипЭлементаКоллекции = "";
|
||
|
||
ТипКонтекста = "";
|
||
|
||
ТипЗначения = "";
|
||
СтрокаВерсииПлатформы = "";
|
||
НомерВерсииПлатформы = 0;
|
||
ЯзыкПрограммы = ?(Найти(НРегПуть, "/tables/") > 0, 1, 0);
|
||
|
||
Если ЯзыкПрограммы = 1 Тогда
|
||
|
||
ТипСлова = "Таблица";
|
||
|
||
Иначе
|
||
|
||
ТипСлова = "Свойство";
|
||
|
||
КонецЕсли;
|
||
|
||
Если Найти(НРегПуть, "/methods/") > 0 Тогда
|
||
|
||
ТипСлова = "Метод";
|
||
|
||
ПутьКОписаниюКонтекста = Лев(ПутьКОписанию, Найти(НРегПуть, "/methods/") - 1) + ".html";
|
||
|
||
ИначеЕсли Найти(НРегПуть, "/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";
|
||
Иначе
|
||
ппп = 0;
|
||
|
||
КонецЕсли;
|
||
ФайлОписания = Новый Файл(РабочийКаталог + ПутьКОписанию);
|
||
Попытка
|
||
Текст.Прочитать(ФайлОписания.ПолноеИмя);
|
||
ТекстПрочитан = Истина;
|
||
Исключение
|
||
ТекстПрочитан = Ложь;
|
||
КонецПопытки;
|
||
|
||
Если ТекстПрочитан Тогда
|
||
|
||
Описание = Текст.ПолучитьТекст();
|
||
|
||
Если Найти(НРегПуть, "/tables/") > 0 Тогда
|
||
|
||
RegExp.Global = Ложь;
|
||
|
||
RegExp.Pattern = "Синтаксис(?:<[^>""]+>)(([А-Яа-я_A-Za-z0-9\-\s\:]+)(\.(<[^&]+>|[А-Яа-я_A-Za-z0-9\-\s\:]+))*)";
|
||
|
||
Результат = RegExp.Execute(Описание);
|
||
|
||
Если Результат.Count > 0 Тогда
|
||
|
||
НовоеСлово = ЗаменитьТегиУгловыхСкобок(Результат.Item(0).SubMatches(0));
|
||
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
|
||
RegExp.Global = Ложь;
|
||
|
||
RegExp.Pattern = "Тип:(?:<[^>""]+>)?((?:" + шТип + ")+)";
|
||
|
||
СмещениеИндекса = 0;
|
||
|
||
Если ТипСлова = "Метод" Тогда
|
||
|
||
RegExp.Pattern = "Возвращаемое значение:(?:<[^>]+>)?(?:" + RegExp.Pattern + ")?";
|
||
|
||
СмещениеИндекса = 1;
|
||
КонецЕсли;
|
||
|
||
Результат = RegExp.Execute(Описание);
|
||
|
||
Если Результат.Count > 0 Тогда
|
||
RegExp2.Global = Истина;
|
||
|
||
RegExp2.Pattern = шТип;
|
||
|
||
Результат2 = RegExp2.Execute(Результат.Item(0).SubMatches(0));
|
||
СтрокаТипаЗначения = "";
|
||
Для Каждого Вхождение2 Из Результат2 Цикл
|
||
СтрокаТипаЗначения = СтрокаТипаЗначения + ", " + СокрЛП(Вхождение2.SubMatches(0));
|
||
КонецЦикла;
|
||
|
||
ТипЗначения = ЗаменитьТегиУгловыхСкобок(Сред(СтрокаТипаЗначения, 3));
|
||
|
||
КонецЕсли;
|
||
|
||
|
||
RegExp.Global = Ложь;
|
||
|
||
RegExp.Pattern = "Элементы\x20коллекции:(?:<[^>""]+>)?((?:" + шТип + ")+)";
|
||
|
||
Результат = RegExp.Execute(Описание);
|
||
|
||
ТипЭлементаКоллекции = "";
|
||
|
||
Если Результат.Count > 0 Тогда
|
||
|
||
RegExp2.Global = Истина;
|
||
|
||
RegExp2.Pattern = шТип;
|
||
|
||
Результат2 = RegExp2.Execute(Результат.Item(0).SubMatches(0));
|
||
СтрокаТипаЗначения = "";
|
||
|
||
Для Каждого Вхождение2 Из Результат2 Цикл
|
||
|
||
СтрокаТипаЗначения = СтрокаТипаЗначения + ", " + СокрЛП(Вхождение2.SubMatches(0));
|
||
|
||
КонецЦикла;
|
||
|
||
ТипЭлементаКоллекции = ЗаменитьТегиУгловыхСкобок(Сред(СтрокаТипаЗначения, 3));
|
||
|
||
КонецЕсли;
|
||
|
||
|
||
RegExp.Global = Истина;
|
||
RegExp.Pattern = "Доступен, начиная с версии (8.*?)\.<";
|
||
Результат = RegExp.Execute(Описание);
|
||
Если Результат.Count > 0 Тогда
|
||
Если Результат.Count > 1 Тогда
|
||
Пустышка = 0; // Для отладки
|
||
КонецЕсли;
|
||
СтрокаВерсииПлатформы = Результат.Item(Результат.Count - 1).SubMatches(0);
|
||
НомерВерсииПлатформы = ирОбщий.НомерВерсииПлатформыЛкс(ирОбщий.ПервыйФрагментЛкс(СтрокаВерсииПлатформы, "("));
|
||
Если НомерВерсииПлатформы <= 801000 Тогда
|
||
НомерВерсииПлатформы = 0;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
|
||
ФайлКонтекста = Новый Файл(РабочийКаталог + ПутьКОписаниюКонтекста);
|
||
Если Истина
|
||
И ФайлКонтекста.Существует()
|
||
И ФайлКонтекста.ЭтоФайл()
|
||
Тогда
|
||
Текст.Прочитать(ФайлКонтекста.ПолноеИмя);
|
||
|
||
ОписаниеКонтекста = Текст.ПолучитьТекст();
|
||
|
||
RegExp.Pattern = "(<[^>]+>)+([^\(<]+[^\(<\s])";
|
||
|
||
Результат = RegExp.Execute(ОписаниеКонтекста);
|
||
|
||
Если Результат.Count > 0 Тогда
|
||
|
||
ТипКонтекста = ЗаменитьТегиУгловыхСкобок(Результат.Item(0).SubMatches(1));
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если Найти(НРегПуть, "/global context/") > 0 Тогда
|
||
|
||
ТипКонтекста = "Глобальный контекст";
|
||
|
||
ИначеЕсли Найти(НРегПуть, "/script functions/") > 0 Тогда
|
||
ТипКонтекста = "Общее";
|
||
|
||
КонецЕсли;
|
||
|
||
Если Истина
|
||
И ТипКонтекста = ""
|
||
И ЯзыкПрограммы = 1
|
||
Тогда
|
||
Фрагметны = ирОбщий.СтрРазделитьЛкс(НовоеСлово);
|
||
Если Истина
|
||
И Фрагметны.Количество() > 1
|
||
//И Найти( Фрагметны[Фрагметны.ВГраница()], "<") = 0
|
||
Тогда
|
||
ТипЗначения = НовоеСлово;
|
||
|
||
НовоеСлово = Фрагметны[Фрагметны.ВГраница()];
|
||
|
||
Фрагметны.Удалить(Фрагметны.ВГраница());
|
||
|
||
ТипКонтекста = ирОбщий.СтрСоединитьЛкс(Фрагметны, ".");
|
||
// Баг в файлах справки
|
||
|
||
Если ТипКонтекста = "РегистрСведений" Тогда
|
||
НовоеСлово = СтрЗаменить(НовоеСлово , "<Имя регистра>", "<Имя регистра сведений>");
|
||
ТипЗначения = СтрЗаменить(ТипЗначения, "<Имя регистра>", "<Имя регистра сведений>");
|
||
ИначеЕсли ТипКонтекста = "РегистрНакопления" Тогда
|
||
|
||
НовоеСлово = СтрЗаменить(НовоеСлово , "<Имя регистра>", "<Имя регистра накопления>");
|
||
|
||
ТипЗначения = СтрЗаменить(ТипЗначения, "<Имя регистра>", "<Имя регистра накопления>");
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
// Параметры
|
||
|
||
//RegExp.Pattern = "<div class=""V8SH_chapter"">Параметры:?</div>(.*)<div class=""V8SH_chapter"">Описание:?</div>";
|
||
|
||
//RegExp.Pattern = "<div class=""V8SH_chapter"">\s*(?:<p[^>]*>)?Параметры:?</div>(.*)<div class=""V8SH_chapter"">\s*(?:<p[^>]*>)?Описание:?</div>";
|
||
RegExp.Pattern = "<(?:div|p) class=""V8SH_chapter"">\s*(?:<p[^>]*>)?Параметры:?</(?:div|p)>(.*)<(?:div|p) class=""V8SH_chapter"">\s*(?:<p[^>]*>)?Описание:?</(?:div|p)>";
|
||
Результат = RegExp.Execute(Описание);
|
||
|
||
Если Результат.Count > 0 Тогда
|
||
|
||
ОписаниеПараметров = Результат.Item(0).SubMatches(0);
|
||
|
||
RegExp.Global = Истина;
|
||
Если ТипСлова = "Таблица" Тогда
|
||
RegExp.Pattern = "(<a href=""v8help://SyntaxHelperContext(/[А-Яа-я_A-Za-z0-9/]+params/[А-Яа-я_A-Za-z0-9/]+.html)"">"
|
||
+ "[А-Яа-я_A-Za-z0-9\-\s\(\)]+</a>)()?()?";
|
||
Иначе
|
||
//RegExp.Pattern = "(<[А-Яа-я_A-Za-z0-9\-\s]*>)";
|
||
RegExp.Pattern = "(<[А-Яа-я_A-Za-z0-9\-\s]*>)"
|
||
+ "()?(?:\s*(?:\((необязательный|обязательный)?\)\s*)?</(?:div|p)>Тип:(?:<[^>""]+>)?((?:" + шТип + ")+))?";
|
||
КонецЕсли;
|
||
|
||
Результат = RegExp.Execute(ОписаниеПараметров);
|
||
|
||
ЧтениеХмлПараметра = Новый ЧтениеXML;
|
||
НомерПараметра = 1;
|
||
|
||
Для Каждого Item Из Результат Цикл
|
||
НоваяСтрокаПараметра = ТаблицаПараметров.Добавить();
|
||
|
||
СтруктураСтроки = ирОбщий.ПолучитьСтруктуруСвойствОбъектаЛкс(НоваяСтрокаПараметра);
|
||
|
||
СтруктураСтроки.ТипКонтекста = ТипКонтекста;
|
||
|
||
СтруктураСтроки.Слово = НовоеСлово;
|
||
|
||
СтруктураСтроки.ЯзыкПрограммы = ЯзыкПрограммы;
|
||
|
||
СтруктураСтроки.Номер = НомерПараметра;
|
||
ТекстПараметра = Item.SubMatches(0);
|
||
|
||
// Для параметров виртуальных таблиц надо убрать оберку <A>...</A>. В ней находится ссылка на страницу описания параметра, которую пока не используем.
|
||
ЧтениеХмлПараметра.УстановитьСтроку(ТекстПараметра);
|
||
Попытка
|
||
ЧтениеХмлПараметра.Прочитать();
|
||
ЧтениеХмлПараметра.Прочитать();
|
||
Исключение
|
||
КонецПопытки;
|
||
Если ЧтениеХмлПараметра.ТипУзла = ТипУзлаXML.Текст Тогда
|
||
ТекстПараметра = ЧтениеХмлПараметра.Значение;
|
||
КонецЕсли;
|
||
|
||
СтруктураСтроки.Параметр = ТекстПараметра;
|
||
Если Item.SubMatches(2) = "необязательный" Тогда
|
||
СтруктураСтроки.Необязательный = Истина;
|
||
КонецЕсли;
|
||
ТекстПоискаТипов = Неопределено;
|
||
Если Item.SubMatches(1) <> "" Тогда
|
||
СтруктураСтроки.ПутьКОписанию = Item.SubMatches(1);
|
||
ФайлОписанияПараметра = Новый Файл(РабочийКаталог + СтруктураСтроки.ПутьКОписанию);
|
||
Если Истина
|
||
И ФайлОписанияПараметра.Существует()
|
||
И ФайлОписанияПараметра.ЭтоФайл()
|
||
Тогда
|
||
Текст.Прочитать(ФайлОписанияПараметра.ПолноеИмя);
|
||
RegExp2.Pattern = "Тип параметра:(?:<[^>""]+>)?((?:" + шТип + ")+)";
|
||
Результат2 = RegExp2.Execute(Текст.ПолучитьТекст());
|
||
Если Результат2.Count > 0 Тогда
|
||
ТекстПоискаТипов = Результат2.Item(0).SubMatches(0);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Иначе
|
||
ТекстПоискаТипов = Item.SubMatches(3);
|
||
КонецЕсли;
|
||
|
||
|
||
Если ТекстПоискаТипов <> Неопределено Тогда
|
||
RegExp2.Global = Истина;
|
||
RegExp2.Pattern = шТип;
|
||
Результат2 = RegExp2.Execute(ТекстПоискаТипов);
|
||
СтрокаТипаЗначения = "";
|
||
Для Каждого Вхождение2 Из Результат2 Цикл
|
||
СтрокаТипаЗначения = СтрокаТипаЗначения + ", " + СокрЛП(Вхождение2.SubMatches(0));
|
||
КонецЦикла;
|
||
СтруктураСтроки.ТипЗначения = ЗаменитьТегиУгловыхСкобок(Сред(СтрокаТипаЗначения, 3));
|
||
КонецЕсли;
|
||
|
||
СкорректироватьЭлементыСтруктуры(СтруктураСтроки);
|
||
|
||
ЗаполнитьЗначенияСвойств(НоваяСтрокаПараметра, СтруктураСтроки);
|
||
|
||
НомерПараметра = НомерПараметра + 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;
|
||
|
||
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "ВнешнийИсточникДанных.<Имя внешнего источника>";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "ВнешнийИсточникДанных.<Имя внешнего источника>.Таблица";
|
||
НоваяСтрока.Слово = "Таблица";
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "ВнешнийИсточникДанных.<Имя внешнего источника>";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "ВнешнийИсточникДанных.<Имя внешнего источника>.Таблица";
|
||
НоваяСтрока.Слово = "Таблица";
|
||
НоваяСтрока.ЯзыкПрограммы = 2;
|
||
|
||
НоваяСтрока = ТаблицаКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "ВнешнийИсточникДанных.<Имя внешнего источника>";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "ВнешнийИсточникДанных.<Имя внешнего источника>.ВременнаяТаблица";
|
||
НоваяСтрока.Слово = "ВременнаяТаблица";
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
// Добавим колонки временной таблицы
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
|
||
НоваяСтрока.ТипКонтекста = "ВременнаяТаблица";
|
||
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
|
||
НоваяСтрока.ТипЗначения = "Произвольный";
|
||
|
||
НоваяСтрока.Слово = "<Имя колонки>";
|
||
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
|
||
|
||
// Добавим колонки строки таблицы
|
||
НоваяСтрока = ТаблицаШаблоновКонтекстов.Добавить();
|
||
НоваяСтрока.ТипКонтекста = "СтрокаТаблицы";
|
||
НоваяСтрока.ТипСлова = "Свойство";
|
||
НоваяСтрока.ТипЗначения = "Произвольный";
|
||
НоваяСтрока.Слово = "<Имя колонки>";
|
||
НоваяСтрока.ЯзыкПрограммы = 1;
|
||
|
||
// Проставим в типах значения виды (шаблонные имена элементов коллекций)
|
||
МассивТаблиц = Новый Массив;
|
||
МассивТаблиц.Добавить(ТаблицаКонтекстов);
|
||
МассивТаблиц.Добавить(ТаблицаШаблоновКонтекстов);
|
||
Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(ТаблицаШаблоновКонтекстов.Количество() + ТаблицаКонтекстов.Количество(),
|
||
"Добавление дополнительных шаблонов");
|
||
Для Каждого ВременнаяТаблица Из МассивТаблиц Цикл
|
||
Для Каждого ВременнаяСтрока Из ВременнаяТаблица Цикл
|
||
ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
|
||
МассивФрагментов = ирОбщий.СтрРазделитьЛкс(ВременнаяСтрока.ТипКонтекста);
|
||
|
||
Если МассивФрагментов.Количество() > 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];
|
||
НоваяСтрока.ТипЭлементаКоллекции = "Произвольный";
|
||
|
||
// Антибаг платформы 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];
|
||
НоваяСтрока.ТипЗначения = "COMОбъект.{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 """ + ПолноеИмяФайла + """", ПутьРаспаковки);
|
||
|
||
КонецПроцедуры // РаспаковатьВнешнююОбработку()
|
||
|
||
Функция ПолучитьИсполнительСкрытыхКомандСистемы() Экспорт
|
||
|
||
Если ИсполнительСкрытыхКомандСистемы = Неопределено Тогда
|
||
ДвоичныеДанные = ПолучитьОбщийМакет("hstart");
|
||
ИсполнительСкрытыхКомандСистемы = ПолучитьИмяВременногоФайла("exe");
|
||
ДвоичныеДанные.Записать(ИсполнительСкрытыхКомандСистемы);
|
||
ИсполнительСкрытыхКомандСистемы = """" + ИсполнительСкрытыхКомандСистемы + """";
|
||
КонецЕсли;
|
||
Возврат ИсполнительСкрытыхКомандСистемы;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(Знач СтрокаЗапуска, ТекущийКаталог = "\.", ИспользоватьWSH = Ложь,
|
||
КраткоеИмяФайлаРезультата = "", ОжидатьЗавершения = Истина) Экспорт
|
||
|
||
WshShell = Новый COMОбъект("WScript.Shell");
|
||
#Если Клиент Тогда
|
||
// Баг платформы здесь будет работать. Во время работы данной строки окно продолжает принимать команды!
|
||
// WSH не использовать при генерации внешних обработок
|
||
Если ИспользоватьWSH Тогда
|
||
#КонецЕсли
|
||
WshShell.CurrentDirectory = ТекущийКаталог;
|
||
СтрокаЗапуска = "cmd.exe /c """ + СтрокаЗапуска + """";
|
||
Если КраткоеИмяФайлаРезультата <> "" Тогда
|
||
СтрокаЗапуска = СтрокаЗапуска + " > " + КраткоеИмяФайлаРезультата;
|
||
СтрокаЗапуска = СтрокаЗапуска + " 2>&1"; //stderr
|
||
КонецЕсли;
|
||
Попытка
|
||
WshShell.Run(СтрокаЗапуска, 0, ОжидатьЗавершения);
|
||
Исключение
|
||
// Для x64 ОС
|
||
СтрокаЗапуска = "%windir%\Sysnative\" + СтрокаЗапуска;
|
||
WshShell.Run(СтрокаЗапуска, 0, ОжидатьЗавершения);
|
||
КонецПопытки;
|
||
#Если Клиент Тогда
|
||
Иначе
|
||
ПолучитьИсполнительСкрытыхКомандСистемы();
|
||
//КонечнаяСтрока = ИсполнительСкрытыхКомандСистемы + " /nowindow /wait /silent /D=""" + ТекущийКаталог + """ " + СтрокаЗапуска;
|
||
КонечнаяСтрока = ИсполнительСкрытыхКомандСистемы + " /nowindow /wait /silent /D=""" + ТекущийКаталог + """ """ + СтрокаЗапуска + """";
|
||
ЗапуститьПриложение(КонечнаяСтрока, , ОжидатьЗавершения);
|
||
КонецЕсли;
|
||
#КонецЕсли
|
||
|
||
КонецПроцедуры // ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения()
|
||
|
||
Функция ПолучитьИмяФайлаВФорматеDOS(ПолноеИмяФайла) Экспорт
|
||
|
||
Если VBScript = Неопределено Тогда
|
||
VBScript = Новый COMОбъект("MSScriptControl.ScriptControl");
|
||
VBScript.language = "vbscript";
|
||
КонецЕсли;
|
||
VBScript.addcode("
|
||
|Public Function GetShortPath()
|
||
|Set fso = CreateObject(""scripting.filesystemobject"")
|
||
|Set fsoFile = fso.GetFile(""" + ПолноеИмяФайла + """)
|
||
|GetShortPath = fsoFile.ShortPath
|
||
|End Function
|
||
|");
|
||
DOSИмя = VBScript.Run("GetShortPath");
|
||
Возврат DOSИмя;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ЗаполнитьТаблицы(Кнопка)
|
||
|
||
|
||
ЗаполнитьВсе();
|
||
|
||
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
|
||
Процедура ОсновныеДействияФормыСохранитьТаблицы(Кнопка)
|
||
|
||
Если ТаблицаКонтекстов.Количество() = 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МенеджерТабличногоПоля(Кнопка)
|
||
|
||
Если ТипЗнч(ТекущийЭлемент) <> Тип("ТабличноеПоле") Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ирОбщий.ОткрытьМенеджерТабличногоПоляЛкс(ТекущийЭлемент, ЭтаФорма);
|
||
|
||
КонецПроцедуры
|
||
|
||
мПлатформа = ирКэш.Получить();
|
||
СоответствиеЗамены = Новый Соответствие;
|
||
|
||
// Баг платформы. Небрежность в файлах справки.
|
||
СоответствиеЗамены.Вставить("Командный интерфейс", "КомандныйИнтерфейс"); // Антибаг 8.2.15.289 http://partners.v8.1c.ru/forum/thread.jsp?id=999202#999202
|
||
СоответствиеЗамены.Вставить("<Имя журнала>", "<Имя журнала документов>");
|
||
СоответствиеЗамены.Вставить("ПланВидовХарактристик", "ПланВидовХарактеристик");
|
||
|
||
СоответствиеЗамены.Вставить("<Имя плана вида характеристики>", "<Имя плана видов характеристик>");
|
||
|
||
СоответствиеЗамены.Вставить("<Имя плана вида характеристик>", "<Имя плана видов характеристик>");
|
||
СоответствиеЗамены.Вставить("<Имя плана видов характеристики>", "<Имя плана видов характеристик>");
|
||
СоответствиеЗамены.Вставить("<Имя предопределенного видов характеристики>", "<Имя предопределенного вида характеристик>");
|
||
СоответствиеЗамены.Вставить("<Имя вида расчета>", "<Имя плана видов расчета>");
|
||
|
||
СоответствиеЗамены.Вставить("<Измерения>", "<Имя измерения>");
|
||
|
||
СоответствиеЗамены.Вставить("<Измерение>", "<Имя измерения>");
|
||
|
||
СоответствиеЗамены.Вставить("<Реквизиты>", "<Имя реквизита>");
|
||
|
||
СоответствиеЗамены.Вставить("<Ресурсы>", "<Имя ресурса>");
|
||
|
||
СоответствиеЗамены.Вставить("<Имя критерия>", "<Имя критерия отбора>");
|
||
|
||
СоответствиеЗамены.Вставить("<Имя WS-ссылки>", "<Имя WS-Ссылки>");
|
||
|
||
СоответствиеЗамены.Вставить("<Имя WSСсылки>", "<Имя WS-Ссылки>");
|
||
|
||
СоответствиеЗамены.Вставить("<ИмяКонстанты>", "<Имя константы>");
|
||
|
||
СоответствиеЗамены.Вставить("<ИмяРесурса>", "<Имя ресурса>");
|
||
СоответствиеЗамены.Вставить("<Имя Ресурса>", "<Имя ресурса>");
|
||
|
||
СоответствиеЗамены.Вставить("<Имя значения>", "<Имя значения перечисления>");
|
||
|
||
СоответствиеЗамены.Вставить("<НомерСубконто>", "<Номер субконто>");
|
||
|
||
СоответствиеЗамены.Вставить("<ИмяПеречисления>", "<Имя перечисления>");
|
||
|
||
СоответствиеЗамены.Вставить("<имя метода>", "<Имя метода>");
|
||
|
||
СоответствиеЗамены.Вставить("<имя свойства>", "<Имя свойства>");
|
||
СоответствиеЗамены.Вставить("<Имя внешнего источника данных>", "<Имя внешнего источника>");
|
||
|
||
ЗаменыВнешнихОбъектов = Новый ТаблицаЗначений;
|
||
ЗаменыВнешнихОбъектов.Колонки.Добавить("Образец");
|
||
ЗаменыВнешнихОбъектов.Колонки.Добавить("Замена");
|
||
СтрокаЗамены = ЗаменыВнешнихОбъектов.Добавить();
|
||
СтрокаЗамены.Образец = "ВнешнийОтчетТабличнаяЧасть";
|
||
СтрокаЗамены.Замена = "ВнешнийОтчетТабличнаяЧасть.<Имя внешнего отчета>.<Имя табличной части>";
|
||
СтрокаЗамены = ЗаменыВнешнихОбъектов.Добавить();
|
||
СтрокаЗамены.Образец = "ВнешняяОбработкаТабличнаяЧасть";
|
||
СтрокаЗамены.Замена = "ВнешняяОбработкаТабличнаяЧасть.<Имя внешней обработки>.<Имя табличной части>";
|
||
СтрокаЗамены = ЗаменыВнешнихОбъектов.Добавить();
|
||
СтрокаЗамены.Образец = "ВнешнийОтчет";
|
||
СтрокаЗамены.Замена = "ВнешнийОтчетОбъект.<Имя внешнего отчета>";
|
||
СтрокаЗамены = ЗаменыВнешнихОбъектов.Добавить();
|
||
СтрокаЗамены.Образец = "ВнешняяОбработка";
|
||
СтрокаЗамены.Замена = "ВнешняяОбработкаОбъект.<Имя внешней обработки>";
|
||
СтрокаЗамены = ЗаменыВнешнихОбъектов.Добавить();
|
||
СтрокаЗамены.Образец = "ТочкаМаршрутаБизнесПроцессаСсылка";
|
||
СтрокаЗамены.Замена = "ТочкаМаршрутаБизнесПроцессаСсылка.<Имя бизнес-процесса>";
|
||
// Слишком общий шаблон замены!
|
||
// Исправлено в 8.1.12
|
||
|
||
//СоответствиеЗамены.Вставить("<Имя>", "<Имя константы>");
|
||
|
||
|
||
RegExp = Новый COMОбъект("VBScript.RegExp");
|
||
|
||
RegExp2 = Новый COMОбъект("VBScript.RegExp");
|
||
|
||
|
||
//шТип = "\s*(?:<[^>""]+""(?:[^""]*)"">)?((?:[А-Яа-я_A-Za-z0-9\-\s\:]+)(?:\.<[^&]+>)*)(?:<[^>""]+>,)?";
|
||
//шТип = "\s*(?:<[^>""]+""(?:[^""]*)"">)?((?:[А-Яа-я_A-Za-z0-9\-\s\:\&\;]+))(?:(?:<[^>""]+>)?,)?";
|
||
|
||
//ОкончаниеВводаТекста
|
||
шТип = "\s*(?:<[^>""]+""(?:[^""]*)"">)?((?:[А-Яа-я_A-Za-z0-9\-\s\:\&]+))(?:(?:<[^>""]+>)?(,|;))?";
|
||
|
||
типСтрока = Тип("Строка");
|
||
|