From 9ba5dd2c8bc955cc45957835482ade6c98bdadba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=90=D0=B4=D0=BC=D0=B8=D0=BD=D0=B8=D1=81=D1=82=D1=80?=
=?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80?= <Администратор@localhost>
Date: Mon, 25 Oct 2021 08:22:12 +0300
Subject: [PATCH] .
---
src/CommonModules/ирОбщий/Ext/Module.bsl | 334 +++++++++---------
src/ConfigDumpInfo.xml | 8 +-
src/Configuration.xml | 2 +-
.../ИнструментыРазработчикаTormozit.xml | 4 +-
src/VERSION | 2 +-
5 files changed, 175 insertions(+), 175 deletions(-)
diff --git a/src/CommonModules/ирОбщий/Ext/Module.bsl b/src/CommonModules/ирОбщий/Ext/Module.bsl
index c813a82ca..42ba27a82 100644
--- a/src/CommonModules/ирОбщий/Ext/Module.bsl
+++ b/src/CommonModules/ирОбщий/Ext/Module.bsl
@@ -9093,6 +9093,173 @@
КонецФункции
+Функция ПреобразоватьЗначениеИзSDBLЛкс(ЗначениеSDBL, АдресЧужойСхемыБД = "") Экспорт
+
+ Если СтрДлина(ЗначениеSDBL) > 100 Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+ Фрагменты = СтрРазделитьЛкс(ЗначениеSDBL, ":");
+ Если Фрагменты.Количество() <> 2 Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+ РегВыражение = ирКэш.ВычислительРегВыраженийЛкс();
+ #Если Сервер И Не Сервер Тогда
+ РегВыражение = обработки.ирОболочкаРегВыражение.Создать();
+ #КонецЕсли
+ РегВыражение.Pattern = "\((\d+):([\dA-F]{32})\)";
+ Вхождения = РегВыражение.НайтиВхождения(ЗначениеSDBL);
+ Если Вхождения.Количество() = 0 Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+ Вхождение = Вхождения[0];
+ #Если Сервер И Не Сервер Тогда
+ Вхождение = Обработки.ирОболочкаРегВхождение.Создать();
+ #КонецЕсли
+ СтрокаНомераТаблицы = Вхождение.SubMatches(0);
+ ИдентификаторОбъекта = Вхождение.SubMatches(1);
+ ПолноеИмяМД = МетаданныеПоНомеруСсылочнойТаблицыЛкс(СтрокаНомераТаблицы, АдресЧужойСхемыБД);
+ ОбъектМетаданныхНайден = Истина;
+ Если Не ЗначениеЗаполнено(ПолноеИмяМД) Тогда
+ ПолноеИмяМД = "НеизвестныйСсылочныйТип" + СтрокаНомераТаблицы;
+ ОбъектМетаданныхНайден = Ложь;
+ КонецЕсли;
+ Результат = ПолноеИмяМД + "._" + ИдентификаторОбъекта;
+ Если ОбъектМетаданныхНайден И Не ЗначениеЗаполнено(АдресЧужойСхемыБД) Тогда
+ //СтруктураБД = ирКэш.СтруктураХраненияБДЛкс(Ложь);
+ // Этот способ не работал для перечислений
+ //УникальныйИдентификатор = Новый УникальныйИдентификатор(ПолучитьГУИДПрямойИзИнверсногоЛкс(Фрагменты[1]));
+ //Массив = Новый Массив();
+ //Если ЗначениеЗаполнено(УникальныйИдентификатор) Тогда
+ // Массив.Добавить(УникальныйИдентификатор);
+ //КонецЕсли;
+ //Значение = Новый (Тип(ПолучитьИмяТипаСсылкиТаблицыБДЛкс(ПолноеИмяМД)), Массив);
+ //
+ ПустаяСсылка = Новый (Тип(ИмяТипаИзПолногоИмениТаблицыБДЛкс(ПолноеИмяМД)));
+ ПустаяСсылкаВнутр = ЗначениеВСтрокуВнутр(ПустаяСсылка);
+ ФрагментыПустойСсылки = СтрРазделитьЛкс(ПустаяСсылкаВнутр, ":");
+ СсылкаВнутр = ФрагментыПустойСсылки[0] + ":" + ИдентификаторОбъекта + "}";
+ Попытка
+ Результат = ЗначениеИзСтрокиВнутр(СсылкаВнутр);
+ Исключение
+ // Например, если Фрагменты[1] содержит неверное число символов
+ Пустышка = 0;
+ КонецПопытки;
+ КонецЕсли;
+ Возврат Результат;
+
+КонецФункции
+
+Функция НавигационнаяСсылкаВЗначениеЛкс(Знач ТекущеееЗначение) Экспорт
+
+ //e1cib/data/Справочник.ирОбъектыДляОтладки?ref=aa3a0009dd50223411e1c2907cccb6b7
+ Маркер = "e1cib/data/";
+ ТекстСсылки = ПоследнийФрагментЛкс(ТекущеееЗначение, Маркер, Ложь);
+ Если ЗначениеЗаполнено(ТекстСсылки) Тогда
+ Разделитель = "?ref=";
+ Идентификатор = ПоследнийФрагментЛкс(ТекстСсылки, Разделитель);
+ Идентификатор = ПолучитьГУИДПрямойИзИнверсногоЛкс(Идентификатор);
+ ПолноеИмяМД = ПервыйФрагментЛкс(ТекстСсылки, Разделитель);
+ ОбъектМД = ОбъектМДПоПолномуИмениЛкс(ПолноеИмяМД);
+ Если ОбъектМД = Неопределено Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+ МенеджерМД = Новый (ИмяТипаИзПолногоИмениМДЛкс(ПолноеИмяМД, "Менеджер"));
+ ЗначениеСсылки = МенеджерМД.ПолучитьСсылку(Новый УникальныйИдентификатор(Идентификатор));
+ КонецЕсли;
+ Возврат ЗначениеСсылки;
+
+КонецФункции
+
+Функция МетаданныеПоНомеруСсылочнойТаблицыЛкс(СтрокаНомерТаблицы, АдресЧужойСхемыБД = "") Экспорт
+
+ СтруктураБД = ирКэш.СтруктураХраненияБДЛкс(, Ложь, АдресЧужойСхемыБД);
+ #Если Сервер И Не Сервер Тогда
+ СтруктураБД = Новый ТаблицаЗначений;
+ #КонецЕсли
+ СловарьШаблоновМетаданных = ирКэш.ПолучитьСловарьШаблоновМетаданныхЛкс(, АдресЧужойСхемыБД);
+ Для Каждого СтрокаШаблона Из СловарьШаблоновМетаданных.НайтиСтроки(Новый Структура("КоличествоПараметров", 1)) Цикл
+ ИмяКандидат = СтрЗаменить(СтрокаШаблона.ПозиционныйШаблон, "1", СтрокаНомерТаблицы);
+ СтрокаСтруктуры = СтруктураБД.Найти(ИмяКандидат, "КраткоеИмяТаблицыХранения");
+ Если СтрокаСтруктуры <> Неопределено Тогда
+ Возврат СтрокаСтруктуры.Метаданные;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Неопределено;
+
+КонецФункции
+
+Функция ПреобразоватьПредставлениеВСсылкуЛкс(Знач МенеджерИлиОбъектМД, Знач Текст, Знач ПроверятьПредставлениеТипаДокумента = Ложь, КэшПоиска = Неопределено) Экспорт
+
+ Если ТипЗнч(МенеджерИлиОбъектМД) = Тип("ОбъектМетаданных") Тогда
+ Менеджер = ПолучитьМенеджерЛкс(МенеджерИлиОбъектМД);
+ Иначе
+ Менеджер = МенеджерИлиОбъектМД;
+ КонецЕсли;
+ Текст = СокрЛП(Текст);
+ Если Не ПроверятьПредставлениеТипаДокумента Тогда
+ УникальныйИдентификатор = ирКэш.Получить().УникальныйИдентификаторИзСтроки(Текст);
+ Если УникальныйИдентификатор <> Неопределено Тогда
+ Значение = Менеджер.ПолучитьСсылку(УникальныйИдентификатор);
+ КонецЕсли;
+ КонецЕсли;
+ Если Не ЗначениеЗаполнено(Значение) Тогда
+ ОбъектМД = Метаданные.НайтиПоТипу(ТипЗнч(Менеджер));
+ RegExp = ирКэш.Получить().RegExp;
+ RegExp.Pattern = "([^ ]+)\ от\ (\d+\.\d+\.\d+\ \d+\:\d+\:\d+)$"; // станадартное представление документа
+ Результаты = RegExp.НайтиВхождения(Текст);
+ Если Результаты.Количество() > 0 Тогда
+ Номер = Результаты[0].SubMatches(0);
+ Дата = Результаты[0].SubMatches(1);
+ Попытка
+ Дата = Дата(Дата);
+ Исключение
+ Дата = Неопределено;
+ КонецПопытки;
+ ПредставлениеТипа = ОбъектМД.ПредставлениеОбъекта;
+ Если Не ЗначениеЗаполнено(ПредставлениеТипа) Тогда
+ ПредставлениеТипа = ОбъектМД.Представление();
+ КонецЕсли;
+ Если Истина
+ И Дата <> Неопределено
+ И (Ложь
+ Или Не ПроверятьПредставлениеТипаДокумента
+ Или СтрокиРавныЛкс(Лев(Текст, Результаты[0].FirstIndex), ПредставлениеТипа + " "))
+ Тогда
+ КлючКэша = ОбъектМД.ПолноеИмя() + "." + Текст;
+ Если КэшПоиска <> Неопределено Тогда
+ Значение = КэшПоиска[КлючКэша];
+ КонецЕсли;
+ Если Значение = Неопределено Тогда
+ Запрос = Новый Запрос;
+ Запрос.Текст = "
+ |ВЫБРАТЬ
+ | _Т.Ссылка
+ |ИЗ
+ | " + ОбъектМД.ПолноеИмя() + " КАК _Т
+ |ГДЕ
+ | _Т.Номер = &Номер
+ | И _Т.Дата = &Дата
+ |";
+ Запрос.УстановитьПараметр("Номер", Номер);
+ Запрос.УстановитьПараметр("Дата", Дата);
+ Значение = Новый СписокЗначений;
+ Значение.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0));
+ Если Значение.Количество() > 0 Тогда
+ Для Каждого ЭлементСписка Из Значение Цикл
+ ЭлементСписка.Представление = "" + ЭлементСписка.Значение + " (" + ЭлементСписка.Значение.УникальныйИдентификатор() + ")";
+ КонецЦикла;
+ КонецЕсли;
+ Если КэшПоиска <> Неопределено Тогда
+ КэшПоиска[КлючКэша] = Значение;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+ Возврат Значение;
+
+КонецФункции
+
#Если Клиент Тогда
Функция ИмяФормыИзСтрокиИнструментаЛкс(Знач СтрокаИнструмента) Экспорт
@@ -20690,80 +20857,6 @@
ПолеТекста.УстановитьГраницыВыделения(НачальнаяСтрока, НачальнаяКолонка, КонечнаяСтрока, КонечнаяКолонка);
КонецПроцедуры
-
-Функция ПреобразоватьЗначениеИзSDBLЛкс(ЗначениеSDBL, АдресЧужойСхемыБД = "") Экспорт
-
- Если СтрДлина(ЗначениеSDBL) > 100 Тогда
- Возврат Неопределено;
- КонецЕсли;
- Фрагменты = СтрРазделитьЛкс(ЗначениеSDBL, ":");
- Если Фрагменты.Количество() <> 2 Тогда
- Возврат Неопределено;
- КонецЕсли;
- РегВыражение = ирКэш.ВычислительРегВыраженийЛкс();
- #Если Сервер И Не Сервер Тогда
- РегВыражение = обработки.ирОболочкаРегВыражение.Создать();
- #КонецЕсли
- РегВыражение.Pattern = "\((\d+):([\dA-F]{32})\)";
- Вхождения = РегВыражение.НайтиВхождения(ЗначениеSDBL);
- Если Вхождения.Количество() = 0 Тогда
- Возврат Неопределено;
- КонецЕсли;
- Вхождение = Вхождения[0];
- #Если Сервер И Не Сервер Тогда
- Вхождение = Обработки.ирОболочкаРегВхождение.Создать();
- #КонецЕсли
- СтрокаНомераТаблицы = Вхождение.SubMatches(0);
- ИдентификаторОбъекта = Вхождение.SubMatches(1);
- ПолноеИмяМД = МетаданныеПоНомеруСсылочнойТаблицыЛкс(СтрокаНомераТаблицы, АдресЧужойСхемыБД);
- ОбъектМетаданныхНайден = Истина;
- Если Не ЗначениеЗаполнено(ПолноеИмяМД) Тогда
- ПолноеИмяМД = "НеизвестныйСсылочныйТип" + СтрокаНомераТаблицы;
- ОбъектМетаданныхНайден = Ложь;
- КонецЕсли;
- Результат = ПолноеИмяМД + "._" + ИдентификаторОбъекта;
- Если ОбъектМетаданныхНайден И Не ЗначениеЗаполнено(АдресЧужойСхемыБД) Тогда
- //СтруктураБД = ирКэш.СтруктураХраненияБДЛкс(Ложь);
- // Этот способ не работал для перечислений
- //УникальныйИдентификатор = Новый УникальныйИдентификатор(ПолучитьГУИДПрямойИзИнверсногоЛкс(Фрагменты[1]));
- //Массив = Новый Массив();
- //Если ЗначениеЗаполнено(УникальныйИдентификатор) Тогда
- // Массив.Добавить(УникальныйИдентификатор);
- //КонецЕсли;
- //Значение = Новый (Тип(ПолучитьИмяТипаСсылкиТаблицыБДЛкс(ПолноеИмяМД)), Массив);
- //
- ПустаяСсылка = Новый (Тип(ИмяТипаИзПолногоИмениТаблицыБДЛкс(ПолноеИмяМД)));
- ПустаяСсылкаВнутр = ЗначениеВСтрокуВнутр(ПустаяСсылка);
- ФрагментыПустойСсылки = СтрРазделитьЛкс(ПустаяСсылкаВнутр, ":");
- СсылкаВнутр = ФрагментыПустойСсылки[0] + ":" + ИдентификаторОбъекта + "}";
- Попытка
- Результат = ЗначениеИзСтрокиВнутр(СсылкаВнутр);
- Исключение
- // Например, если Фрагменты[1] содержит неверное число символов
- Пустышка = 0;
- КонецПопытки;
- КонецЕсли;
- Возврат Результат;
-
-КонецФункции
-
-Функция МетаданныеПоНомеруСсылочнойТаблицыЛкс(СтрокаНомерТаблицы, АдресЧужойСхемыБД = "") Экспорт
-
- СтруктураБД = ирКэш.СтруктураХраненияБДЛкс(, Ложь, АдресЧужойСхемыБД);
- #Если Сервер И Не Сервер Тогда
- СтруктураБД = Новый ТаблицаЗначений;
- #КонецЕсли
- СловарьШаблоновМетаданных = ирКэш.ПолучитьСловарьШаблоновМетаданныхЛкс(, АдресЧужойСхемыБД);
- Для Каждого СтрокаШаблона Из СловарьШаблоновМетаданных.НайтиСтроки(Новый Структура("КоличествоПараметров", 1)) Цикл
- ИмяКандидат = СтрЗаменить(СтрокаШаблона.ПозиционныйШаблон, "1", СтрокаНомерТаблицы);
- СтрокаСтруктуры = СтруктураБД.Найти(ИмяКандидат, "КраткоеИмяТаблицыХранения");
- Если СтрокаСтруктуры <> Неопределено Тогда
- Возврат СтрокаСтруктуры.Метаданные;
- КонецЕсли;
- КонецЦикла;
- Возврат Неопределено;
-
-КонецФункции
Процедура ОтладитьОтложенныйОбъектЛкс(Знач СсылкаИлиИмяФайла = Неопределено, УдалитьОбъектПослеУспешногоОткрытия = Ложь) Экспорт
@@ -21235,99 +21328,6 @@
КонецПроцедуры
-Функция НавигационнаяСсылкаВЗначениеЛкс(Знач ТекущеееЗначение) Экспорт
-
- //e1cib/data/Справочник.ирОбъектыДляОтладки?ref=aa3a0009dd50223411e1c2907cccb6b7
- Маркер = "e1cib/data/";
- ТекстСсылки = ПоследнийФрагментЛкс(ТекущеееЗначение, Маркер, Ложь);
- Если ЗначениеЗаполнено(ТекстСсылки) Тогда
- Разделитель = "?ref=";
- Идентификатор = ПоследнийФрагментЛкс(ТекстСсылки, Разделитель);
- Идентификатор = ПолучитьГУИДПрямойИзИнверсногоЛкс(Идентификатор);
- ПолноеИмяМД = ПервыйФрагментЛкс(ТекстСсылки, Разделитель);
- ОбъектМД = ОбъектМДПоПолномуИмениЛкс(ПолноеИмяМД);
- Если ОбъектМД = Неопределено Тогда
- Возврат Неопределено;
- КонецЕсли;
- МенеджерМД = Новый (ИмяТипаИзПолногоИмениМДЛкс(ПолноеИмяМД, "Менеджер"));
- ЗначениеСсылки = МенеджерМД.ПолучитьСсылку(Новый УникальныйИдентификатор(Идентификатор));
- КонецЕсли;
- Возврат ЗначениеСсылки;
-
-КонецФункции
-
-Функция ПреобразоватьПредставлениеВСсылкуЛкс(Знач МенеджерИлиОбъектМД, Знач Текст, Знач ПроверятьПредставлениеТипаДокумента = Ложь, КэшПоиска = Неопределено) Экспорт
-
- Если ТипЗнч(МенеджерИлиОбъектМД) = Тип("ОбъектМетаданных") Тогда
- Менеджер = ПолучитьМенеджерЛкс(МенеджерИлиОбъектМД);
- Иначе
- Менеджер = МенеджерИлиОбъектМД;
- КонецЕсли;
- Текст = СокрЛП(Текст);
- Если Не ПроверятьПредставлениеТипаДокумента Тогда
- УникальныйИдентификатор = ирКэш.Получить().УникальныйИдентификаторИзСтроки(Текст);
- Если УникальныйИдентификатор <> Неопределено Тогда
- Значение = Менеджер.ПолучитьСсылку(УникальныйИдентификатор);
- КонецЕсли;
- КонецЕсли;
- Если Не ЗначениеЗаполнено(Значение) Тогда
- ОбъектМД = Метаданные.НайтиПоТипу(ТипЗнч(Менеджер));
- RegExp = ирКэш.Получить().RegExp;
- RegExp.Pattern = "([^ ]+)\ от\ (\d+\.\d+\.\d+\ \d+\:\d+\:\d+)$"; // станадартное представление документа
- Результаты = RegExp.НайтиВхождения(Текст);
- Если Результаты.Количество() > 0 Тогда
- Номер = Результаты[0].SubMatches(0);
- Дата = Результаты[0].SubMatches(1);
- Попытка
- Дата = Дата(Дата);
- Исключение
- Дата = Неопределено;
- КонецПопытки;
- ПредставлениеТипа = ОбъектМД.ПредставлениеОбъекта;
- Если Не ЗначениеЗаполнено(ПредставлениеТипа) Тогда
- ПредставлениеТипа = ОбъектМД.Представление();
- КонецЕсли;
- Если Истина
- И Дата <> Неопределено
- И (Ложь
- Или Не ПроверятьПредставлениеТипаДокумента
- Или СтрокиРавныЛкс(Лев(Текст, Результаты[0].FirstIndex), ПредставлениеТипа + " "))
- Тогда
- КлючКэша = ОбъектМД.ПолноеИмя() + "." + Текст;
- Если КэшПоиска <> Неопределено Тогда
- Значение = КэшПоиска[КлючКэша];
- КонецЕсли;
- Если Значение = Неопределено Тогда
- Запрос = Новый Запрос;
- Запрос.Текст = "
- |ВЫБРАТЬ
- | _Т.Ссылка
- |ИЗ
- | " + ОбъектМД.ПолноеИмя() + " КАК _Т
- |ГДЕ
- | _Т.Номер = &Номер
- | И _Т.Дата = &Дата
- |";
- Запрос.УстановитьПараметр("Номер", Номер);
- Запрос.УстановитьПараметр("Дата", Дата);
- Значение = Новый СписокЗначений;
- Значение.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0));
- Если Значение.Количество() > 0 Тогда
- Для Каждого ЭлементСписка Из Значение Цикл
- ЭлементСписка.Представление = "" + ЭлементСписка.Значение + " (" + ЭлементСписка.Значение.УникальныйИдентификатор() + ")";
- КонецЦикла;
- КонецЕсли;
- Если КэшПоиска <> Неопределено Тогда
- КэшПоиска[КлючКэша] = Значение;
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
- Возврат Значение;
-
-КонецФункции
-
// Параметры:
// РедактированиеРазрешено - Булево - для открытия ссылки надо установить Ложь
// ЭлементУправления - Неопределено - значение этого элемента управления открываем, при открытии значения из ячейки табличного поля должно быть Неопределено
diff --git a/src/ConfigDumpInfo.xml b/src/ConfigDumpInfo.xml
index a0bd1b249..397b66fd5 100644
--- a/src/ConfigDumpInfo.xml
+++ b/src/ConfigDumpInfo.xml
@@ -78,8 +78,8 @@
-
-
+
+
@@ -540,7 +540,7 @@
-
+
@@ -3154,7 +3154,7 @@
-
+
diff --git a/src/Configuration.xml b/src/Configuration.xml
index b5f9dca99..e805b651d 100644
--- a/src/Configuration.xml
+++ b/src/Configuration.xml
@@ -51,7 +51,7 @@
Role.ирРазработчик
Tormozit
- 6.14.1
+ 6.14.2
false
true
diff --git a/src/Subsystems/ИнструментыРазработчикаTormozit.xml b/src/Subsystems/ИнструментыРазработчикаTormozit.xml
index 864d25ae1..69cfa5c98 100644
--- a/src/Subsystems/ИнструментыРазработчикаTormozit.xml
+++ b/src/Subsystems/ИнструментыРазработчикаTormozit.xml
@@ -6,7 +6,7 @@
ru
- Инструменты разработчика 6.14.1
+ Инструменты разработчика 6.14.2
en
@@ -17,7 +17,7 @@
Инструменты разработчика 6.12.1
- 6.14.1
+ 6.14.2
true
true
diff --git a/src/VERSION b/src/VERSION
index 3928817a0..b5ded454c 100644
--- a/src/VERSION
+++ b/src/VERSION
@@ -1,2 +1,2 @@
-430
+431