Skip to content

Instantly share code, notes, and snippets.

@pumbaEO
Created October 3, 2016 18:15
Show Gist options
  • Save pumbaEO/90a369908ea9b2fc11438ac545943726 to your computer and use it in GitHub Desktop.
Save pumbaEO/90a369908ea9b2fc11438ac545943726 to your computer and use it in GitHub Desktop.
Пачти для доработки 1С ERP 2.1.3.185
From 0afc0f0f43a9159210b5f90a7dd5740032f0764c 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: Sat, 17 Sep 2016 17:54:43 +0300
Subject: [PATCH] =?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=B8=D0=B7=D0=B1=D1=8B=D1=82=D0=BE?=
=?UTF-8?q?=D1=87=D0=BD=D0=BE=D0=B9=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80?=
=?UTF-8?q?=D0=BA=D0=B8=20=D1=81=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=B0=20?=
=?UTF-8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86.=20=D0=BE=D0=BF=D1=86=D0=B8?=
=?UTF-8?q?=D0=B9=20=D0=B7=D0=B0=20=D1=81=D1=87=D0=B5=D1=82=20=D0=B2=D1=8B?=
=?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE?=
=?UTF-8?q?=D1=82=D0=B5=D1=87=D0=BD=D0=BE=D0=B9=20=D1=84=D1=83=D0=BD=D0=BA?=
=?UTF-8?q?=D1=86=D0=B8=D0=B8,=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?=
=?UTF-8?q?=D0=B7=D1=83=D1=8E=D1=89=D0=B5=D0=B9=20=D0=BA=D1=8D=D1=88.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ФормаСписка/Ext/Form/Module.bsl | 30 ++--------------------
1 file changed, 2 insertions(+), 28 deletions(-)
diff --git a/cf/DocumentJournals/РеестрТорговыхДокументов/Forms/ФормаСписка/Ext/Form/Module.bsl b/cf/DocumentJournals/РеестрТорговыхДокументов/Forms/ФормаСписка/Ext/Form/Module.bsl
index 355869f..5d427a0 100644
--- a/cf/DocumentJournals/РеестрТорговыхДокументов/Forms/ФормаСписка/Ext/Form/Module.bsl
+++ b/cf/DocumentJournals/РеестрТорговыхДокументов/Forms/ФормаСписка/Ext/Form/Module.bsl
@@ -126,7 +126,7 @@
СписокДоступныхМетаданных = Новый СписокЗначений();
Для Каждого ОписаниеМетаданныхДокумента Из Метаданные.ЖурналыДокументов.РеестрТорговыхДокументов.РегистрируемыеДокументы Цикл
- Если ОбъектРазрешенВФункциональнойОпции(ОписаниеМетаданныхДокумента) Тогда
+ Если ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(ОписаниеМетаданныхДокумента) Тогда
СписокДоступныхМетаданных.Добавить(Тип("ДокументСсылка." + ОписаниеМетаданныхДокумента.Имя), ОписаниеМетаданныхДокумента.Синоним);
КонецЕсли;
КонецЦикла;
@@ -170,32 +170,6 @@
КонецПроцедуры
-&НаСервереБезКонтекста
-Функция ОбъектРазрешенВФункциональнойОпции(МетаОбъект)
-
- МассивОпций = Новый Массив();
-
- Для каждого Опция Из Метаданные.ФункциональныеОпции Цикл
- ОбъектВходитВФО = Опция.Состав.Содержит(МетаОбъект);
- Если ОбъектВходитВФО Тогда
- МассивОпций.Добавить(Опция);
- КонецЕсли;
- КонецЦикла;
-
- Если МассивОпций.Количество() = 0 Тогда
- Возврат Истина;
- КонецЕсли;
-
- Для каждого Элемент Из МассивОпций Цикл
- Если ПолучитьФункциональнуюОпцию(Элемент.Имя) Тогда
- Возврат Истина;
- КонецЕсли;
- КонецЦикла;
-
- Возврат Ложь;
-
-КонецФункции
-
&НаСервере
Процедура СформироватьГруппуКнопокСоздать()
@@ -238,7 +212,7 @@
Соответствие = Новый Структура();
Разделы = ПолучитьРазделыКомандногоИнтерфейса();
Для каждого ПодсистемаВерхнегоУровня Из Разделы Цикл
- Если ПодсистемаВерхнегоУровня.ВключатьВКомандныйИнтерфейс и ОбъектРазрешенВФункциональнойОпции(ПодсистемаВерхнегоУровня) Тогда
+ Если ПодсистемаВерхнегоУровня.ВключатьВКомандныйИнтерфейс и ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(ПодсистемаВерхнегоУровня) Тогда
Ключ = ПодсистемаВерхнегоУровня.Имя;
МассивЗначений = Новый Массив();
МассивЗначений.Добавить(ПодсистемаВерхнегоУровня);
--
2.6.2.windows.1
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment