1
0
mirror of https://github.com/firstBitSportivnaya/PSSL.git synced 2025-01-12 02:28:02 +02:00

fixed bugs and smells (#162)

* Исправление ошибок
This commit is contained in:
Denis Ushakov 2024-12-11 11:53:12 +03:00 committed by GitHub
parent a30f0e354d
commit 7e9eb46d52
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 389 additions and 223 deletions

View File

@ -22,7 +22,7 @@
#Область ПрограммныйИнтерфейс
//Процедура очищает записи в справочнике старше чем установленное в предопределенном значении количество дней
// Процедура очищает записи в справочнике старше чем установленное в предопределенном значении количество дней
Процедура ОчиститьИсториюИнтеграции() Экспорт
Запрос = Новый Запрос;

View File

@ -74,7 +74,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "ПроектнаяБиблиотекаПодсистем";
Описание.Версия = "1.0.4.13";
Описание.Версия = "1.0.4.14";
// Требуется библиотека стандартных подсистем.
Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");

View File

@ -27,13 +27,6 @@
КонецФункции
// См. пбп_ОбщегоНазначенияСервер.ПереадресацияОбщегоМодуля
Функция ПереадресацияОбщегоМодуля(ИмяМодуляБСП, ИмяМодуляВстроенного) Экспорт
Возврат пбп_ОбщегоНазначенияПовтИсп.ПереадресацияОбщегоМодуля(ИмяМодуляБСП, ИмяМодуляВстроенного);
КонецФункции
// См. пбп_ОбщегоНазначенияСервер.ТекущаяДатаПользователя
Функция ТекущаяДатаПользователя(ИмяПользователя = Неопределено) Экспорт

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<CommonModule uuid="6534881d-6695-4307-b7c5-312a9ca9cc4b">
<Properties>
<Name>пбп_ОбщегоНазначенияКлиент</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Общего назначения клиент</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>false</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@ -0,0 +1,64 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8,
// включая доработку типовых конфигураций.
//
// Copyright First BIT company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// URL: https://github.com/firstBitSportivnaya/PSSL/
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс
#Область УсловныеВызовы
// Возвращает ссылку на общий модуль по имени.
// Применяется для условного вызова процедуры или функции совместно с ОбщегоНазначенияКлиент.ПодсистемаСуществует.
// См. также ОбщегоНазначения.ОбщийМодуль для вызова серверного кода.
//
// Параметры:
// Имя - Строка - имя общего модуля, например "ОбновлениеКонфигурацииКлиент", "ОтчетыВызовСервера".
//
// Возвращаемое значение:
// ОбщийМодуль
//
// Пример:
// Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеКонфигурации") Тогда
// МодульОбновлениеКонфигурацииКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбновлениеКонфигурацииКлиент");
// МодульОбновлениеКонфигурацииКлиент.<Имя процедуры>();
// КонецЕсли;
//
Функция ОбщийМодуль(Имя) Экспорт
Модуль = Вычислить(Имя);
#Если Не ВебКлиент Тогда
// В веб-клиенте не проверяется,
// т.к. при обращении к модулям с вызовом сервера типа такого модуля в веб-клиенте не существует.
Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда
ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Общий модуль ""%1"" не существует.'"),
Имя);
КонецЕсли;
#КонецЕсли
Возврат Модуль;
КонецФункции
#КонецОбласти
#КонецОбласти

View File

@ -105,14 +105,6 @@
КонецФункции
// См. пбп_ОбщегоНазначенияСервер.ПереадресацияОбщегоМодуля.
//
Функция ПереадресацияОбщегоМодуля(ИмяМодуляБСП, ИмяМодуляВстроенного) Экспорт
Возврат пбп_ОбщегоНазначенияСервер.ПереадресацияОбщегоМодуля(ИмяМодуляБСП, ИмяМодуляВстроенного);
КонецФункции
// См. пбп_ОбщегоНазначенияСервер.ПолучитьЗначениеКонстанты.
//
Функция ПолучитьЗначениеКонстанты(ИмяКонстанты) Экспорт

View File

@ -776,7 +776,7 @@
Если Метаданные.ОбщиеМодули.Найти("СтандартныеПодсистемыСервер") <> Неопределено Тогда
Попытка
УстановитьБезопасныйРежим(Истина);
МодульБСП = пбп_Переадресация.ОбщийМодуль("СтандартныеПодсистемыСервер");
МодульБСП = ОбщийМодуль("СтандартныеПодсистемыСервер");
ВерсияБСП = МодульБСП.ВерсияБиблиотеки();
Исключение
ВерсияБСП = Неопределено;
@ -787,31 +787,6 @@
КонецФункции
// Возвращает ссылку на общий модуль или модуль менеджера по имени. Если подключена БСП,
// происходит переадресация на общий модуль из БСП, иначе используются встроенные модули ПБП.
//
// Параметры:
// ИмяМодуляБСП - Строка - Имя Общего модуля из Библиотеки стандартных подсистем
// ИмяМодуляВстроенного - Строка - Имя Общего модуля из Проектной библиотеки подсистем
//
// Возвращаемое значение:
// ОбщийМодуль
// МодульМенеджераОбъекта
//
Функция ПереадресацияОбщегоМодуля(ИмяМодуляБСП, ИмяМодуляВстроенного = "") Экспорт
Имя = ИмяМодуляВстроенного;
Если пбп_ОбщегоНазначенияПовтИсп.СуществуетБиблиотекаСтандартныхПодсистем()
И Метаданные.ОбщиеМодули.Найти(ИмяМодуляБСП) <> Неопределено Тогда
Имя = ИмяМодуляБСП;
КонецЕсли;
Модуль = пбп_Переадресация.ОбщийМодуль(Имя);
Возврат Модуль;
КонецФункции
#Область ПользовательскиеФункции
// Выполняет пользовательскую функцию с переданными параметрами.
@ -911,6 +886,58 @@
КонецПроцедуры
#Область УсловныеВызовы
// Возвращает ссылку на общий модуль или модуль менеджера по имени.
// Применяется для условного вызова процедуры или функции совместно с ОбщегоНазначения.ПодсистемаСуществует.
// См. также ОбщегоНазначенияКлиент.ОбщийМодуль для вызова клиентского кода.
//
// Параметры:
// Имя - Строка - имя общего модуля или модуля менеджера, например "ОбновлениеКонфигурации",
// "Обработка.ПолнотекстовыйПоиск".
//
// Возвращаемое значение:
// ОбщийМодуль
// МодульМенеджераОбъекта
//
// Пример:
// Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеКонфигурации") Тогда
// МодульОбновлениеКонфигурации = ОбщегоНазначения.ОбщийМодуль("ОбновлениеКонфигурации");
// МодульОбновлениеКонфигурации.<Имя процедуры>();
// КонецЕсли;
//
// Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолнотекстовыйПоиск") Тогда
// МодульОбработкаПолнотекстовыйПоиск = ОбщегоНазначения.ОбщийМодуль("Обработка.ПолнотекстовыйПоиск");
// МодульОбработкаПолнотекстовыйПоиск.<Имя процедуры>();
// КонецЕсли;
//
Функция ОбщийМодуль(Имя) Экспорт
Если Метаданные.ОбщиеМодули.Найти(Имя) <> Неопределено Тогда
// BSLLS:ExecuteExternalCodeInCommonModule-off
// ВычислитьВБезопасномРежиме не используется, чтобы избежать вызова ОбщийМодуль рекурсивно.
УстановитьБезопасныйРежим(Истина);
Модуль = Вычислить(Имя);
// BSLLS:ExecuteExternalCodeInCommonModule-on
ИначеЕсли СтрЧислоВхождений(Имя, ".") = 1 Тогда
Возврат СерверныйМодульМенеджера(Имя);
Иначе
Модуль = Неопределено;
КонецЕсли;
Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда
ВызватьИсключение(пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Неверное значение параметра %1 в %2. Общий модуль ""%1"" не существует.'"),
"Имя", "пбп_ОбщегоНазначенияСервер.ОбщийМодуль", Имя),
КатегорияОшибки.ОшибкаКонфигурации);
КонецЕсли;
Возврат Модуль;
КонецФункции
#КонецОбласти
#КонецОбласти // ПрограммныйИнтерфейс
#Область СлужебныеПроцедурыИФункции
@ -1131,4 +1158,111 @@
#КонецОбласти
#Область УсловныеВызовы
// Возвращает серверный модуль менеджера по имени объекта.
//
// Параметры:
// Имя - Строка - Имя вычисляемого модуля
//
// Возвращаемое значение:
// МодульМенеджера - Модуль менеджера объекта метаданных
//
Функция СерверныйМодульМенеджера(Имя)
ОбъектНайден = Ложь;
КоличествоЧастейИмени = 2;
ЧастиИмени = СтрРазделить(Имя, ".");
Если ЧастиИмени.Количество() = КоличествоЧастейИмени Тогда
ИмяВида = ВРег(ЧастиИмени[0]);
ИмяОбъекта = ЧастиИмени[1];
Если ИмяВида = ВРег("Константы") Тогда
Если Метаданные.Константы.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("РегистрыСведений") Тогда
Если Метаданные.РегистрыСведений.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("РегистрыНакопления") Тогда
Если Метаданные.РегистрыНакопления.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("РегистрыБухгалтерии") Тогда
Если Метаданные.РегистрыБухгалтерии.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("РегистрыРасчета") Тогда
Если Метаданные.РегистрыРасчета.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("Справочники") Тогда
Если Метаданные.Справочники.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("Документы") Тогда
Если Метаданные.Документы.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("Отчеты") Тогда
Если Метаданные.Отчеты.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("Обработки") Тогда
Если Метаданные.Обработки.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("БизнесПроцессы") Тогда
Если Метаданные.БизнесПроцессы.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("ЖурналыДокументов") Тогда
Если Метаданные.ЖурналыДокументов.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("Задачи") Тогда
Если Метаданные.Задачи.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("ПланыСчетов") Тогда
Если Метаданные.ПланыСчетов.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("ПланыОбмена") Тогда
Если Метаданные.ПланыОбмена.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("ПланыВидовХарактеристик") Тогда
Если Метаданные.ПланыВидовХарактеристик.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("ПланыВидовРасчета") Тогда
Если Метаданные.ПланыВидовРасчета.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Не ОбъектНайден Тогда
ВызватьИсключение(пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Неверное значение параметра %1 в функции %2. Объект метаданных ""%3"" не существует.'"),
"Имя", "пбп_ОбщегоНазначенияСервер.СерверныйМодульМенеджера", Имя),
КатегорияОшибки.ОшибкаКонфигурации);
КонецЕсли;
// BSLLS:ExecuteExternalCodeInCommonModule-off
// ВычислитьВБезопасномРежиме не используется, чтобы избежать вызова ОбщийМодуль рекурсивно.
УстановитьБезопасныйРежим(Истина);
Модуль = Вычислить(Имя);
// BSLLS:ExecuteExternalCodeInCommonModule-on
Возврат Модуль;
КонецФункции
#КонецОбласти
#КонецОбласти // СлужебныеПроцедурыИФункции

View File

@ -38,7 +38,7 @@
Если пбп_ОбщегоНазначенияПовтИсп.СуществуетБиблиотекаСтандартныхПодсистем()
И Метаданные.ОбщиеМодули.Найти(ИмяМодуля) <> Неопределено Тогда
Результат.Модуль = ОбщийМодуль(ИмяМодуля);
Результат.Модуль = пбп_ОбщегоНазначенияСервер.ОбщийМодуль(ИмяМодуля);
Результат.МодульСуществует = Истина;
КонецЕсли;
@ -145,51 +145,6 @@
КонецФункции
// Аналог метода БСП. Возвращает ссылку на общий модуль или модуль менеджера по имени.
//
// Параметры:
// Имя - Строка - имя общего модуля.
//
// Возвращаемое значение:
// ОбщийМодуль
// МодульМенеджераОбъекта
//
// Пример:
// МодульОбновлениеКонфигурации = пбп_ОбщегоНазначенияСервер.ОбщийМодуль("ОбновлениеКонфигурации");
// МодульОбновлениеКонфигурации.<Имя метода>();
//
// МодульПолнотекстовыйПоискСервер = пбп_ОбщегоНазначенияСервер.ОбщийМодуль("ПолнотекстовыйПоискСервер");
// МодульПолнотекстовыйПоискСервер.<Имя метода>();
//
Функция ОбщийМодуль(Имя) Экспорт
Результат = ПереадресацияМодуляОбщегоНазначения();
Если Результат.МодульСуществует Тогда
Возврат Результат.Модуль.ОбщийМодуль(Имя);
КонецЕсли;
Если Метаданные.ОбщиеМодули.Найти(Имя) <> Неопределено Тогда
// BSLLS:ExecuteExternalCodeInCommonModule-off
// ВычислитьВБезопасномРежиме не используется, чтобы избежать вызова ОбщийМодуль рекурсивно.
УстановитьБезопасныйРежим(Истина);
Модуль = Вычислить(Имя);
// BSLLS:ExecuteExternalCodeInCommonModule-on
ИначеЕсли СтрЧислоВхождений(Имя, ".") = 1 Тогда
Возврат СерверныйМодульМенеджера(Имя);
Иначе
Модуль = Неопределено;
КонецЕсли;
Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда
ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Общий модуль ""%1"" не существует.'"),
Имя);
КонецЕсли;
Возврат Модуль;
КонецФункции
// Аналог метода БСП. Выполнить экспортную процедуру по имени с уровнем привилегий конфигурации.
// При включении профилей безопасности для вызова оператора Выполнить() используется
// переход в безопасный режим с профилем безопасности, используемым для информационной базы
@ -256,7 +211,7 @@
ПроверитьИмяПроцедурыКонфигурации(ИмяМетода);
Если ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда
МодульРаботаВБезопасномРежиме = ОбщийМодуль("РаботаВБезопасномРежиме");
МодульРаботаВБезопасномРежиме = пбп_ОбщегоНазначенияСервер.ОбщийМодуль("РаботаВБезопасномРежиме");
Если МодульРаботаВБезопасномРежиме.ИспользуютсяПрофилиБезопасности()
И Не МодульРаботаВБезопасномРежиме.УстановленБезопасныйРежим() Тогда
@ -325,7 +280,7 @@
УстановитьБезопасныйРежим(Истина);
Если ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
МодульРаботаВМоделиСервиса = ОбщийМодуль("РаботаВМоделиСервиса");
МодульРаботаВМоделиСервиса = пбп_ОбщегоНазначенияСервер.ОбщийМодуль("РаботаВМоделиСервиса");
МассивРазделителей = МодульРаботаВМоделиСервиса.РазделителиКонфигурации();
Иначе
МассивРазделителей = Новый Массив;
@ -1002,7 +957,7 @@
КонецЕсли;
Если ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер = пбп_ОбщегоНазначенияСервер.ОбщийМодуль("МультиязычностьСервер");
Возврат МодульМультиязычностьСервер.КодОсновногоЯзыка();
КонецЕсли;
@ -1693,6 +1648,39 @@
#КонецОбласти // Прочее
// Определяет принадлежность объекта метаданных к ссылочному типу.
//
// Параметры:
// ОбъектМетаданных - ОбъектМетаданных - объект, для которого необходимо определить принадлежность к заданному типу.
//
// Возвращаемое значение:
// Булево - Истина, если объект ссылочного типа.
//
Функция ЭтоОбъектСсылочногоТипа(ОбъектМетаданных) Экспорт
Результат = ПереадресацияМодуляОбщегоНазначения();
Если Результат.МодульСуществует Тогда
Возврат Результат.Модуль.ЭтоОбъектСсылочногоТипа(ОбъектМетаданных);
КонецЕсли;
ИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя();
Позиция = СтрНайти(ИмяОбъектаМетаданных, ".");
Если Позиция > 0 Тогда
ИмяБазовогоТипа = Лев(ИмяОбъектаМетаданных, Позиция - 1);
Возврат ИмяБазовогоТипа = "Справочник"
Или ИмяБазовогоТипа = "Документ"
Или ИмяБазовогоТипа = "БизнесПроцесс"
Или ИмяБазовогоТипа = "Задача"
Или ИмяБазовогоТипа = "ПланСчетов"
Или ИмяБазовогоТипа = "ПланОбмена"
Или ИмяБазовогоТипа = "ПланВидовХарактеристик"
Или ИмяБазовогоТипа = "ПланВидовРасчета";
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область ФайловаяСистема
@ -1955,9 +1943,9 @@
//
Процедура ОтправитьСерверноеОповещение(ИмяОповещения, Результат, Адресаты, ОтправитьСразу = Ложь) Экспорт
Результат = ПереадресацияМодуляСерверныеОповещения();
Если Результат.МодульСуществует Тогда
Результат.Модуль.ОтправитьСерверноеОповещение(ИмяОповещения, Результат, Адресаты, ОтправитьСразу);
РезультатВычисления = ПереадресацияМодуляСерверныеОповещения();
Если РезультатВычисления.МодульСуществует Тогда
РезультатВычисления.Модуль.ОтправитьСерверноеОповещение(ИмяОповещения, Результат, Адресаты, ОтправитьСразу);
Возврат;
КонецЕсли;
@ -2712,7 +2700,7 @@
ИначеЕсли КлассОМ = "ОБЩИЙМОДУЛЬ"
Или КлассОМ = "ОБЩИЕМОДУЛИ" Тогда
Возврат ОбщийМодуль(ИмяОМ);
Возврат пбп_ОбщегоНазначенияСервер.ОбщийМодуль(ИмяОМ);
ИначеЕсли КлассОМ = "ОТЧЕТ"
Или КлассОМ = "ОТЧЕТЫ" Тогда
@ -2804,103 +2792,6 @@
#КонецОбласти
#Область УсловныеВызовы
// Аналог метода БСП. Возвращает серверный модуль менеджера по имени объекта.
//
Функция СерверныйМодульМенеджера(Имя)
ОбъектНайден = Ложь;
ЧастиИмени = СтрРазделить(Имя, ".");
Если ЧастиИмени.Количество() = 2 Тогда
ИмяВида = ВРег(ЧастиИмени[0]);
ИмяОбъекта = ЧастиИмени[1];
Если ИмяВида = ВРег("Константы") Тогда
Если Метаданные.Константы.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("РегистрыСведений") Тогда
Если Метаданные.РегистрыСведений.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("РегистрыНакопления") Тогда
Если Метаданные.РегистрыНакопления.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("РегистрыБухгалтерии") Тогда
Если Метаданные.РегистрыБухгалтерии.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("РегистрыРасчета") Тогда
Если Метаданные.РегистрыРасчета.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("Справочники") Тогда
Если Метаданные.Справочники.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("Документы") Тогда
Если Метаданные.Документы.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("Отчеты") Тогда
Если Метаданные.Отчеты.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("Обработки") Тогда
Если Метаданные.Обработки.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("БизнесПроцессы") Тогда
Если Метаданные.БизнесПроцессы.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("ЖурналыДокументов") Тогда
Если Метаданные.ЖурналыДокументов.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("Задачи") Тогда
Если Метаданные.Задачи.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("ПланыСчетов") Тогда
Если Метаданные.ПланыСчетов.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("ПланыОбмена") Тогда
Если Метаданные.ПланыОбмена.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("ПланыВидовХарактеристик") Тогда
Если Метаданные.ПланыВидовХарактеристик.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
ИначеЕсли ИмяВида = ВРег("ПланыВидовРасчета") Тогда
Если Метаданные.ПланыВидовРасчета.Найти(ИмяОбъекта) <> Неопределено Тогда
ОбъектНайден = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Не ОбъектНайден Тогда
ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Объект метаданных ""%1"" не существует.'"), Имя);
КонецЕсли;
// BSLLS:ExecuteExternalCodeInCommonModule-off
// ВычислитьВБезопасномРежиме не используется, чтобы избежать вызова ОбщийМодуль рекурсивно.
УстановитьБезопасныйРежим(Истина);
Модуль = Вычислить(Имя);
// BSLLS:ExecuteExternalCodeInCommonModule-on
Возврат Модуль;
КонецФункции
#КонецОбласти
#Область ХранилищеНастроек
// Аналог метода БСП.

View File

@ -40,21 +40,7 @@
Возврат Результат;
КонецЕсли;
Модуль = Вычислить(ИмяМодуля);
#Если Не ВебКлиент Тогда
// В веб-клиенте не проверяется
// т.к. при обращении к модулям с вызовом сервера типа такого модуля в веб-клиенте не существует.
Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда
ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Общий модуль ""%1"" не существует.'"),
ИмяМодуля);
КонецЕсли;
#КонецЕсли
Результат.Модуль = Модуль;
Результат.Модуль = пбп_ОбщегоНазначенияКлиент.ОбщийМодуль(ИмяМодуля);
Результат.МодульСуществует = Истина;
Возврат Результат;

View File

@ -30,13 +30,13 @@
//
Функция ИнициализироватьПредопределенныеЗначения(МенеджерОбъекта) Экспорт
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый
.ТаблицаПредопределенныхЭлементов(МенеджерОбъекта);
Если Не ЗначениеЗаполнено(ТЗПредопределенныхЗначений) Тогда
Если Не пбп_ПредопределенныеЗначенияСлужебный.МенеджерВходитВПодсистемуПредопределенных(МенеджерОбъекта) Тогда
Возврат Новый ТаблицаЗначений;
КонецЕсли;
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый
.ТаблицаПредопределенныхЭлементов(МенеджерОбъекта);
ТаблицаКонфликтныхЭлементов = ОбработатьПредопределенныеЗначения(ТЗПредопределенныхЗначений, МенеджерОбъекта);
Возврат ТаблицаКонфликтныхЭлементов;
@ -79,9 +79,25 @@
// Структура - Данные Менеджера объекта
// * Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта.
// * ПолноеИмя - Строка - Полное имя объекта метаданных.
// * Иерархический - Булево - Свойство объекта метаданных.
// * ИерархияГруппИЭлементов - Булево - Свойство объекта метаданных.
// * КлючиХешаЭлемент - Структура - Ключевые реквизиты для формирования хеша элемента.
// * КлючиХешаГруппа - Структура - Ключевые реквизиты для формирования хеша группы.
//
Функция ДопПараметрыОбработкиПредопределенныхЭлементов(Таблица, МенеджерОбъекта) Экспорт
Параметры = Новый Структура;
Параметры.Вставить("Менеджер", Неопределено);
Параметры.Вставить("ПолноеИмя", "");
Параметры.Вставить("Иерархический", Ложь);
Параметры.Вставить("ИерархияГруппИЭлементов", Ложь);
Параметры.Вставить("КлючиХешаЭлемент", Новый Структура);
Параметры.Вставить("КлючиХешаГруппа", Новый Структура);
Если Не пбп_ПредопределенныеЗначенияСлужебный.МенеджерВходитВПодсистемуПредопределенных(МенеджерОбъекта) Тогда
Возврат Параметры;
КонецЕсли;
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗнч(МенеджерОбъекта));
Параметры = Новый Структура;

View File

@ -13,17 +13,17 @@
Колонки = КолонкиПредопределенныхЭлементов(Менеджер);
Таблица = Новый ТаблицаЗначений;
СоздатьКолонкиТаблицыПредопределенныхЭлементов(Колонки, Таблица);
Выражение = пбп_ПредопределенныеЗначенияПовтИсп.ФункцииСозданияТаблицПредопределенныхЭлементов()
.Получить(ТипЗнч(Менеджер));
Таблица = Новый ТаблицаЗначений;
Если Не ЗначениеЗаполнено(Выражение) Тогда
Возврат Таблица;
КонецЕсли;
СоздатьКолонкиТаблицыПредопределенныхЭлементов(Колонки, Таблица);
Параметры = Новый Массив;
Параметры.Добавить(Таблица);
@ -225,21 +225,19 @@
//
// Возвращаемое значение:
// Структура - Где ключ имя колонки, значение описание типов колонки
// Неопределено - если обработчика заполнения колонок не существует.
//
Функция КолонкиПредопределенныхЭлементов(Менеджер) Экспорт
Колонки = ОбщиеКолонки(Менеджер);
Выражение = пбп_ПредопределенныеЗначенияПовтИсп.ФункцииПолученияКолонокПредопределенныхЭлементов()
.Получить(ТипЗнч(Менеджер));
Если Не ЗначениеЗаполнено(Выражение) Тогда
Возврат Неопределено;
Возврат Колонки;
КонецЕсли;
Колонки = ОбщиеКолонки(Менеджер);
Параметры = Новый Массив;
Параметры.Добавить(Менеджер);
ДопКолонки = пбп_Переадресация.ВычислитьВБезопасномРежиме(Выражение);
пбп_ПереадресацияКлиентСервер.ДополнитьСтруктуру(Колонки, ДопКолонки);

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<CommonModule uuid="f913d511-a1f5-4046-9f64-c7be0162fcc6">
<Properties>
<Name>пбп_ПредопределенныеЗначенияСлужебный</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенные значения служебный</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Predefined values</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>true</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@ -0,0 +1,40 @@
// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8,
// включая доработку типовых конфигураций.
//
// Copyright First BIT company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// URL: https://github.com/firstBitSportivnaya/PSSL/
//
#Область СлужебныйПрограммныйИнтерфейс
Функция МенеджерВходитВПодсистемуПредопределенных(МенеджерОбъекта) Экспорт
Если МенеджерОбъекта = Неопределено
Или Не пбп_переадресация.ЭтоОбъектСсылочногоТипа(Метаданные.НайтиПоТипу(ТипЗнч(МенеджерОбъекта))) Тогда
Возврат Ложь;
КонецЕсли;
Типы = Метаданные.ОпределяемыеТипы.пбп_ПредопределенныеВсеСсылкиПереопределяемый.Тип.Типы();
Если Типы.Найти(ТипЗнч(МенеджерОбъекта.ПустаяСсылка())) = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
#КонецОбласти

View File

@ -57,7 +57,7 @@
<xr:Item xsi:type="xr:MDObjectRef">Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</xr:Item>
</DefaultRoles>
<Vendor>Первый БИТ</Vendor>
<Version>1.0.4.13</Version>
<Version>1.0.4.14</Version>
<UpdateCatalogAddress/>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UseManagedFormInOrdinaryApplication>false</UseManagedFormInOrdinaryApplication>
@ -293,6 +293,7 @@
<CommonModule>пбп_МодификацияКонфигурацииПовтИсп</CommonModule>
<CommonModule>пбп_ОбновлениеИнформационнойБазыПБП</CommonModule>
<CommonModule>пбп_ОбщегоНазначенияВызовСервера</CommonModule>
<CommonModule>пбп_ОбщегоНазначенияКлиент</CommonModule>
<CommonModule>пбп_ОбщегоНазначенияКлиентСервер</CommonModule>
<CommonModule>пбп_ОбщегоНазначенияПовтИсп</CommonModule>
<CommonModule>пбп_ОбщегоНазначенияСервер</CommonModule>
@ -306,6 +307,7 @@
<CommonModule>пбп_ПредопределенныеЗначенияКлиент</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияПереопределяемый</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияПовтИсп</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияСлужебный</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияСлужебныйКлиент</CommonModule>
<CommonModule>пбп_РаботаСДиалогамиКлиент</CommonModule>
<CommonModule>пбп_РаботаСДиалогамиСервер</CommonModule>