Skip to content

Instantly share code, notes, and snippets.

@pumbaEO
Created September 9, 2016 07:46
Show Gist options
  • Save pumbaEO/3ca5fb60e09c6a7283ff29c0d4ec4b60 to your computer and use it in GitHub Desktop.
Save pumbaEO/3ca5fb60e09c6a7283ff29c0d4ec4b60 to your computer and use it in GitHub Desktop.
From a994a645b2eaee5ad01bc21ec226f5f0d7965346 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?=
=?UTF-8?q?=D0=BD=D0=B8=D0=B9?= <[email protected]>
Date: Fri, 9 Sep 2016 08:22:01 +0300
Subject: [PATCH 2/2] =?UTF-8?q?=D0=9E=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7?=
=?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5?=
=?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BC=D0=B5=D0=BD=D0=B5=D0=B4=D0=B6=D0=B5?=
=?UTF-8?q?=D1=80=D0=B0=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=B0=20?=
=?UTF-8?q?=D0=BF=D0=BE=20=D0=BF=D0=BE=D0=BB=D0=BD=D0=BE=D0=BC=D1=83=20?=
=?UTF-8?q?=D0=B8=D0=BC=D0=B5=D0=BD=D0=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Оптимизация сделана за счет, выноса парсинга и создания менеджера в модуль повт. использования
---
.../Ext/Module.bsl | 92 +------------------
.../Ext/Module.bsl | 101 +++++++++++++++++++++
2 files changed, 103 insertions(+), 90 deletions(-)
diff --git a/cf/CommonModules/ОбщегоНазначения/Ext/Module.bsl b/cf/CommonModules/ОбщегоНазначения/Ext/Module.bsl
index 8d93eb4..c70e3cf 100644
--- a/cf/CommonModules/ОбщегоНазначения/Ext/Module.bsl
+++ b/cf/CommonModules/ОбщегоНазначения/Ext/Module.bsl
@@ -2608,96 +2608,8 @@
// Возвращаемое значение:
// СправочникМенеджер, ДокументМенеджер.
//
-Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт
- Перем КлассОМ, ИмяОМ, Менеджер;
-
- ЧастиИмени = СтрРазделить(ПолноеИмя, ".");
-
- Если ЧастиИмени.Количество() >= 2 Тогда
- КлассОМ = ЧастиИмени[0];
- ИмяОМ = ЧастиИмени[1];
- КонецЕсли;
-
- Если ВРег(КлассОМ) = "ПЛАНОБМЕНА" Тогда
- Менеджер = ПланыОбмена;
-
- ИначеЕсли ВРег(КлассОМ) = "СПРАВОЧНИК" Тогда
- Менеджер = Справочники;
-
- ИначеЕсли ВРег(КлассОМ) = "ДОКУМЕНТ" Тогда
- Менеджер = Документы;
-
- ИначеЕсли ВРег(КлассОМ) = "ЖУРНАЛДОКУМЕНТОВ" Тогда
- Менеджер = ЖурналыДокументов;
-
- ИначеЕсли ВРег(КлассОМ) = "ПЕРЕЧИСЛЕНИЕ" Тогда
- Менеджер = Перечисления;
-
- ИначеЕсли ВРег(КлассОМ) = "ОТЧЕТ" Тогда
- Менеджер = Отчеты;
-
- ИначеЕсли ВРег(КлассОМ) = "ОБРАБОТКА" Тогда
- Менеджер = Обработки;
-
- ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда
- Менеджер = ПланыВидовХарактеристик;
-
- ИначеЕсли ВРег(КлассОМ) = "ПЛАНСЧЕТОВ" Тогда
- Менеджер = ПланыСчетов;
-
- ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВРАСЧЕТА" Тогда
- Менеджер = ПланыВидовРасчета;
-
- ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРСВЕДЕНИЙ" Тогда
- Менеджер = РегистрыСведений;
-
- ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРНАКОПЛЕНИЯ" Тогда
- Менеджер = РегистрыНакопления;
-
- ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРБУХГАЛТЕРИИ" Тогда
- Менеджер = РегистрыБухгалтерии;
-
- ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРРАСЧЕТА" Тогда
- Если ЧастиИмени.Количество() = 2 Тогда
- // Регистр расчета
- Менеджер = РегистрыРасчета;
- Иначе
- КлассПодчиненногоОМ = ЧастиИмени[2];
- ИмяПодчиненногоОМ = ЧастиИмени[3];
- Если ВРег(КлассПодчиненногоОМ) = "ПЕРЕРАСЧЕТ" Тогда
- // Перерасчет
- Попытка
- Менеджер = РегистрыРасчета[ИмяОМ].Перерасчеты;
- ИмяОм = ИмяПодчиненногоОМ;
- Исключение
- Менеджер = Неопределено;
- КонецПопытки;
- КонецЕсли;
- КонецЕсли;
-
- ИначеЕсли ВРег(КлассОМ) = "БИЗНЕСПРОЦЕСС" Тогда
- Менеджер = БизнесПроцессы;
-
- ИначеЕсли ВРег(КлассОМ) = "ЗАДАЧА" Тогда
- Менеджер = Задачи;
-
- ИначеЕсли ВРег(КлассОМ) = "КОНСТАНТА" Тогда
- Менеджер = Константы;
-
- ИначеЕсли ВРег(КлассОМ) = "ПОСЛЕДОВАТЕЛЬНОСТЬ" Тогда
- Менеджер = Последовательности;
- КонецЕсли;
-
- Если Менеджер <> Неопределено Тогда
- Попытка
- Возврат Менеджер[ИмяОМ];
- Исключение
- Менеджер = Неопределено;
- КонецПопытки;
- КонецЕсли;
-
- ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неизвестный тип объекта метаданных ""%1""'"), ПолноеИмя);
-
+Функция МенеджерОбъектаПоПолномуИмени(Знач ПолноеИмя) Экспорт
+ Возврат ОбщегоНазначенияПовтИсп.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);
КонецФункции
// Возвращает менеджер объекта по ссылке на объект.
diff --git a/cf/CommonModules/ОбщегоНазначенияПовтИсп/Ext/Module.bsl b/cf/CommonModules/ОбщегоНазначенияПовтИсп/Ext/Module.bsl
index 3a3ff21..a33b20a 100644
--- a/cf/CommonModules/ОбщегоНазначенияПовтИсп/Ext/Module.bsl
+++ b/cf/CommonModules/ОбщегоНазначенияПовтИсп/Ext/Module.bsl
@@ -635,4 +635,105 @@
Возврат ДоступностьОбъектов;
КонецФункции
+// Возвращает менеджер объекта по полному имени объекта метаданных.
+// Ограничение: не обрабатываются точки маршрутов бизнес-процессов.
+//
+// Параметры:
+// ПолноеИмя - Строка - полное имя объекта метаданных. Пример: "Справочник.Организации".
+//
+// Возвращаемое значение:
+// СправочникМенеджер, ДокументМенеджер.
+//
+Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт
+ Перем КлассОМ, ИмяОМ, Менеджер;
+
+ ЧастиИмени = СтрРазделить(ПолноеИмя, ".");
+
+ Если ЧастиИмени.Количество() >= 2 Тогда
+ КлассОМ = Врег(ЧастиИмени[0]);
+ ИмяОМ = ЧастиИмени[1];
+ КонецЕсли;
+
+ Если КлассОМ = "ПЛАНОБМЕНА" Тогда
+ Менеджер = ПланыОбмена;
+
+ ИначеЕсли КлассОМ = "СПРАВОЧНИК" Тогда
+ Менеджер = Справочники;
+
+ ИначеЕсли КлассОМ = "ДОКУМЕНТ" Тогда
+ Менеджер = Документы;
+
+ ИначеЕсли КлассОМ = "ЖУРНАЛДОКУМЕНТОВ" Тогда
+ Менеджер = ЖурналыДокументов;
+
+ ИначеЕсли КлассОМ = "ПЕРЕЧИСЛЕНИЕ" Тогда
+ Менеджер = Перечисления;
+
+ ИначеЕсли КлассОМ = "ОТЧЕТ" Тогда
+ Менеджер = Отчеты;
+
+ ИначеЕсли КлассОМ = "ОБРАБОТКА" Тогда
+ Менеджер = Обработки;
+
+ ИначеЕсли КлассОМ = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда
+ Менеджер = ПланыВидовХарактеристик;
+
+ ИначеЕсли КлассОМ = "ПЛАНСЧЕТОВ" Тогда
+ Менеджер = ПланыСчетов;
+
+ ИначеЕсли КлассОМ = "ПЛАНВИДОВРАСЧЕТА" Тогда
+ Менеджер = ПланыВидовРасчета;
+
+ ИначеЕсли КлассОМ = "РЕГИСТРСВЕДЕНИЙ" Тогда
+ Менеджер = РегистрыСведений;
+
+ ИначеЕсли КлассОМ = "РЕГИСТРНАКОПЛЕНИЯ" Тогда
+ Менеджер = РегистрыНакопления;
+
+ ИначеЕсли КлассОМ = "РЕГИСТРБУХГАЛТЕРИИ" Тогда
+ Менеджер = РегистрыБухгалтерии;
+
+ ИначеЕсли КлассОМ = "РЕГИСТРРАСЧЕТА" Тогда
+ Если ЧастиИмени.Количество() = 2 Тогда
+ // Регистр расчета
+ Менеджер = РегистрыРасчета;
+ Иначе
+ КлассПодчиненногоОМ = ЧастиИмени[2];
+ ИмяПодчиненногоОМ = ЧастиИмени[3];
+ Если ВРег(КлассПодчиненногоОМ) = "ПЕРЕРАСЧЕТ" Тогда
+ // Перерасчет
+ Попытка
+ Менеджер = РегистрыРасчета[ИмяОМ].Перерасчеты;
+ ИмяОм = ИмяПодчиненногоОМ;
+ Исключение
+ Менеджер = Неопределено;
+ КонецПопытки;
+ КонецЕсли;
+ КонецЕсли;
+
+ ИначеЕсли КлассОМ = "БИЗНЕСПРОЦЕСС" Тогда
+ Менеджер = БизнесПроцессы;
+
+ ИначеЕсли КлассОМ = "ЗАДАЧА" Тогда
+ Менеджер = Задачи;
+
+ ИначеЕсли КлассОМ = "КОНСТАНТА" Тогда
+ Менеджер = Константы;
+
+ ИначеЕсли КлассОМ = "ПОСЛЕДОВАТЕЛЬНОСТЬ" Тогда
+ Менеджер = Последовательности;
+ КонецЕсли;
+
+ Если Менеджер <> Неопределено Тогда
+ Попытка
+ Возврат Менеджер[ИмяОМ];
+ Исключение
+ Менеджер = Неопределено;
+ КонецПопытки;
+ КонецЕсли;
+
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неизвестный тип объекта метаданных ""%1""'"), ПолноеИмя);
+
+КонецФункции //МенеджерОбъектаПоПолномуИмени
+
#КонецОбласти
--
2.6.2.windows.1
Copy link

ghost commented Sep 10, 2016

@pumbaEO я правильно понимаю, что патч можно применить командой

git apply 0002-patch ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment